Android Studio3.0的编译代码错误
2017-07-19 本文已影响2048人
stone305585
Android Studio3.0 Canary推出有一段时间了,今天导入一个工程出现了些问题,使用的gradle配置如下:
compileSdkVersion 24
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.stone.myapplication"
minSdkVersion 21
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
·
·
·
implementation 'com.android.support:appcompat-v7:24.1.0'
implementation 'com.android.support:support-v4:24.1.0'
}
说明一下 AS3.0的buildToolVersion必须在25及以上。
这时是可以run到手机上并运行的,但是发现代码好多地方报错,截两张图如下:
![](https://img.haomeiwen.com/i2702938/1098ccf75edd1592.jpg)
![](https://img.haomeiwen.com/i2702938/32cb0f3b1e3a551b.jpg)
这些问题都是找不到父类方法。包括找不到继承的方法onCreateOptionsMenu()
,finish()
等。
这就很奇怪了,于是在继承的父类AppCompatActivity
一级级往上找,直到这个地方:
![](https://img.haomeiwen.com/i2702938/3b75c21470fcbe83.jpg)
BaseFragmentActivityJB
类找不到,而上面提到方法都在这个类中。感觉这个是AS3.0在使用低版本compile sdk的bug,或者根本也不推荐使用,毕竟buildTool使用的最低要求25.
把compile sdk和相关类库改成26-beta后可以正常,也找到了BaseFragmentActivityApi16
不再是原来的BaseFragmentActivityJB
。如下:
![](https://img.haomeiwen.com/i2702938/97c8fcb118465c2b.png)
试试AS2.x版本的效果
那再AS2.x上使用compile sdk24可以正常呢,看看BaseFragmentActivityJB
类的位置。遂新建了个工程特意看一下位置。引入support-v4:24.1.0后:
![](https://img.haomeiwen.com/i2702938/099db0b6cd2b468f.png)
发现有个internal_impl-24.1.0.jar而BaseFragmentActivityJB
就在这个jar包中。
![](https://img.haomeiwen.com/i2702938/8dbf65207f656922.png)
在AS3.0中使用的时候只有class.jar而没有internal_impl-24.1.0.jar,这就是问题所在了。
over,AS3还是推荐使用25,26的compilesdk和库吧。