Android Studio3.0的编译代码错误

作者: stone305585 | 来源:发表于2017-07-19 10:52 被阅读2048次

    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到手机上并运行的,但是发现代码好多地方报错,截两张图如下:

    编译报错1.jpg 编译报错2.jpg

    这些问题都是找不到父类方法。包括找不到继承的方法onCreateOptionsMenu(),finish()等。

    这就很奇怪了,于是在继承的父类AppCompatActivity一级级往上找,直到这个地方:

    BaseFragmentActivityJB找不到.jpg

    BaseFragmentActivityJB类找不到,而上面提到方法都在这个类中。感觉这个是AS3.0在使用低版本compile sdk的bug,或者根本也不推荐使用,毕竟buildTool使用的最低要求25.

    把compile sdk和相关类库改成26-beta后可以正常,也找到了BaseFragmentActivityApi16不再是原来的BaseFragmentActivityJB。如下:

    image.png

    试试AS2.x版本的效果
    那再AS2.x上使用compile sdk24可以正常呢,看看BaseFragmentActivityJB类的位置。遂新建了个工程特意看一下位置。引入support-v4:24.1.0后:

    image.png

    发现有个internal_impl-24.1.0.jar而BaseFragmentActivityJB就在这个jar包中。

    image.png

    在AS3.0中使用的时候只有class.jar而没有internal_impl-24.1.0.jar,这就是问题所在了。

    over,AS3还是推荐使用25,26的compilesdk和库吧。

    相关文章

      网友评论

      • 隔壁老C:as3.0,最低的buildTools版本是25,我一直寻思弄到23:sweat: mark下,3ks卤煮
        隔壁老C:@stone305585 不要以为你是卤煮我就不敢打你,上次艾特我的人还在医院里呢。
        stone305585: @隔壁老C 😊

      本文标题:Android Studio3.0的编译代码错误

      本文链接:https://www.haomeiwen.com/subject/qttlkxtx.html