Android studio 升级到3.0后各种报错解决方法

   最近把AS升级到3.2.1后老工程出现了一系列问题

总的来说, 不要随便用最新的东西, SDK也好,AS也好,对老工程都不友好, 要等其他人躺坑躺的差不多再搞

我是先把gradle直接升级到了5.0, AS升级到了3.2.1 , SDK升到了28, 然后就各种编译不通过

尝试解决1:

网上说要引入androidx的兼容包 , 可以替代以前的v7 v4等包, 而且可以做到统一版本号的问题

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.1'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'

    implementation 'com.google.android.material:material:1.0.0-alpha3'
    implementation 'androidx.cardview:cardview:1.0.0-alpha3'
}

其中主要考虑的就是这两个,但是这个androidx这个东西兼容性还不好,很多第三方的东西都还没有兼容androidx, 像我们要用到一些v7,v4包中的控件要通过androidx的形式来弄也比较麻烦, 但是导入进去没什么卵用, 照样报错

    implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.1'

尝试解决2:

gradle.properties里面加入android.enableAapt2=false  关闭AAPT2检查只有部分情况管用,在我这里就没用,而且官方表示年底就不起作用了..加入后依然解决失败

尝试解决3:

清单文件报错, 这部分的问题不会给出详细的说明出来, 坑死了,需要通过命令行输入gradlew processDebugManifest --stacktrace才能看到详情 ,

通过清单文件检查得知是这两个权限合并的时候重复了,我看了一下是在一个清单文件里面引入了两次, 但是这个问题不痛不痒不影响, 不解决问题,问题依旧在 ,而且坑的是居然还建议我改清单文件里的application中的一些属性...搞得报错报的更厉害了~

最终解决方法:

1.SDK改回25.3.0  (以前是什么改成什么, 先别用新版AS推荐的)

2.去掉androidx 引入

3.保持原有环境 , AS3.3,  gradle4.9 ,  classpath 'com.android.tools.build:gradle:3.3.0-alpha07'

不报错了,老工程又可以愉快的敲代码了~~  

折腾了半天,下面给大家一点点建议:

1. AS 3.0之后对老工程很不友好, 要小心升级, 如果不是有一大把时间来折腾不建议升上去 

2. 老工程sdk不要随便升级, 除非有比较多的时间来做兼容,等网上坑躺的差不多后再说 ,我这边SDK26升到28马上就不能运行了!

3. 不要随便使用AndroidX 的兼容包, 虽然这个东西可以不用像以前一样引入相同版本的兼容包, 但是这个东西太新了BUG很多,出问题了都找不到原因, 新东西找资料也困难, 等功能稳定了再搞!

4. 不要随便改清单文件,特别是新版本特性附带的高级属性

猜你喜欢

转载自blog.csdn.net/qq_30050595/article/details/83577427
今日推荐