本文记录了项目的gradle tools 从3.3.0版本,升级到3.6.3过程中,遇到的问题,以及如何解决。
gradle tool升级步骤:
- 项目根目录的build.gradle,搜索
com.android.tools.build:gradle:
改后面版本号。- IDE会要你一并升级根目录gradle/wrapper目录下的文件。
- 点确定,sync即可
下面是遇到的一些问题处理
1.编译失败,提示unknow option "-ignorewarning"
解决办法:找到proguard混淆文件,搜索-ignorewarning
使用-ignorewarnings
代替(后面多个s)
2. 编译失败,提示 buildOutput.apkData must not be null
解决办法: 项目clean,rebuild 解决。
3.编译失败, aidl文件报红
我们使用Binder解决视频压缩跨进程通信问题,文章链接
其中使用aidl规范跨进程通信,gradle老版本会编译通过,新版本报错
解决办法:
1、删掉aidl文件的中文注释
2、gradle新版本会把编译默认内存减少,需要我们手动在项目根目录的gradle.properties文件,加入org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m
4. 编译成功,但auto-service编译产物丢失
我们使用auto-service生成路由地址,打通了组件之间路由的跳转文章链接
gradle老版本会有apt的产物,升级后丢失了。导致我们项目虽然编译通过,但页面直接的跳转功能瘫痪
原因:新版gradle将忽略compile classpath中的annotation processor,需要手动添加到annotation processor path
解决办法,在注解工程的build.gradle的dependencies 节点添加
annotationProcessor 'com.google.auto.service:auto-service:1.0-rc6'
小结:
上面问题基本涵盖了大部分遇到的情况,项目改好后顺利通过了我们的自动化测试介绍、搭建指引。
android的R8混淆在gradle tools升级到3.6.3后,也稳定了,顺水推舟,我们项目选择了开启。
R8混淆开启方法:需要我们手动在项目根目录的gradle.properties文件,加入android.enableR8=true
讲R8比较好的文章
gradle tool 历代版本介绍