android studio 升级到3.3.2 采坑记录
android studio 升级到3.3.2 采坑记录
做为一个喜欢新(qiang)鲜(po)事(zheng)物的码农,明知道升级as 很可能项目跑不起来,但依然没忍住点了update,升级完后果然不出所料。。。。
第一个坑(包括所有moudle)
AndroidManifest.xml 不能包含minSdkVersion ,建议直接把
<usesdk
…
</usesdk全去掉
第二个坑(包括所有moudle)
1 buildToolsVersion 必须大于等于 28.0.3
2 compile 全要换成 implementation
compile 要用 implementation 或 api 替换
testCompile 要用 testImplementation 或 testApi 替换
androidTestCompile 要用 androidTestImplementation 或 androidTestApi 替换
找资料他们之间的区别:
① api是complie的替代品,api 与 complie 没有区别。
②最新官方推荐 implementation 用来代替 compile, implementation 会使AS编译速度更快。
③implementation声明的依赖包只限于模块内部使用,不允许其他模块使用。
3 因为版本号升级后,依赖的第三方库和主项目依赖包的版本号不一直,导致编译失败,直接暴力统一依赖包版本号(在app - build.gradle)
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == ‘com.android.support’) {
if (!requested.name.startsWith(“multidex”)) {
details.useVersion ‘28.0.0’
}
}
}
4 建议在gradle.properties 中增加下面两句代码,不启用Androidx(简单地说就是新的库可以在不同的Android版本上使用。比如之前我们如果使用support为27.1.1的相关依赖库时。可能需要所有相关的support 库都为27.1.1。如果其中有bug的话,可能需要所有的都去升级,存在一个绑定关系,而且正式版的发布周期也很长。
通过AndroidX,我们可以看到实时实现的特性和bug修复。升级个别依赖,不需要对使用的所有其他库进行更新。这就和我们使用Github上的开源库一样的,出了问题,我们可以提出bug和意见。作者修复后,发布新版本,我们就可以直接替换使用了。更加的透明便捷。
), 如果你的项目从来没用过,为了迅速把项目跑起来,就这么做
android.useAndroidX=false
android.enableJetifier=false
第三个坑 适配8.0 ,如果你的启动页设置的style 背景透明,并且设置的竖屏,那会报异常,有两种选择,
一种方法是把强制竖屏去掉
第二种
1 找到你设置透明的Activity,然后在他的theme中将android:windowIsTranslucent改为false
eg:false
2.再加入true就搞定了。
第四个坑,如果项目使用了ButterKnife ,看下这篇文章
https://blog.youkuaiyun.com/Night_X/article/details/86653715
重新build,运行到真机成功。如果还是有编译失败,请留言。