目前主端,依赖库,独立游戏助手等众多分支功能稳定,团队开发环境 AS 版本满足,编译打包版本满足。为了把 AndroidX 的债提前换了,决心全面切换到 AndroidX。
从 官网指南 上看,我们直接开干。
- 从上一个 develop 分支拉出一个 AndroidX 迁移版本;
gradle.properties 添加申明
1
2android.useAndroidX=true //使用 AndroidX 库
android.enableJetifier=true //依赖库依赖 AndroidX 库使用 AS 自带的 Refactor-Magrate to AndroidX 先帮你改一下,包括 dependence,import 等
上面 AS 只是粗略帮你搞搞,build 一下还是一片红海,需要自己处理类引用,xml引用等
可以先 build 一下, AS 会根据编译先给出一些 error 提示。
看到这些 error,如果每次改完再 build 再改则效率会很慢。我们要修改的基本是 support 包,使用 Find in Path 全局修改你记得的所有 support 包,多改几次直到可以完全编译。这个过程十分痛苦 =。=,迁移过的人自然懂,体力活。
解决坑
1
2
3Execution failed for task ':compmkey:mergeReleaseJavaResource'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> More than one file was found with OS independent path 'classes.jar'原因是使用 gradle 3.5 版本打包编译时,如果 module 包含了本地 aar 且 aar 包含同名的 jar ,则会出现以上异常。这实际上是 gradle 的一个 BUG.j解决方法是 gradle 从 3.5 暂时降级到 3.4 解决。
稳定打包之后测试回归, AndroidX 迁移分支则合并到 develop 即可。这个过程非常中,AndroidX的升级可能会涉及原来业务中使用库的 api 升级,可能会因 api 使用场景差异化导致 crash。比如 LiveData 的观测需要在 MainThread 完成等。需要覆盖每个界面和每个业务逻辑,确保无误。
当然,这个流程暂时只是处理主端。依赖库的多个项目,独立助手分支则按照这个流程处理即可。