今日,我的一个老项目引用Gradle8.0+ 打包的aar遇到了问题,明明下载成功了,但是项目就是import不进去该aar。
我打开了gradle缓存目录。
/Users/mac/.gradle/caches/modules-2/files-2.1
我看到了我的aar就在里面。
同时,我的另外一个项目,引用该aar却没有问题,这让我陷入了沉思。
这俩项目只有三点不同。
第一,老项目用的是jdk11,新项目用的是jdk17。
第二,老项目用的是gradle3.x.x,新项目用的是8.0。
第三,老项目的编辑器是android studio2021,新项目是2023。
同时如果你在老项目中调用
./gradlew build --refresh-dependencies
则会显示:
Failed to transform 'xxx.aar' using Jetifier. Reason: null. (Run with --stacktrace for more details.)
根据此提示,我找到了,https://stackoverflow.com/questions/50270599/failed-to-transform-error-after-migrating-to-androidx
并根据提示我在gradle.properties
android.enableJetifier=false
确实好用了,但是这对我们生产项目会造成隐藏的风险,因为我不知道有没有三方库需要转移到支持androidx。
所以,无奈只能尝试升级gradle版本。
我把gradle升级到7.4.x后,确实也解决了问题,但是同时也删除了一些冗余代码。
总之而言,谷歌现在是比较支持用户使用新版的gradle,所以最后还是选择了升级,也为了以后少遇见此类事件。