AGP 3.5.3升级到4.2.2问题记录

修改前:

修改后:

项目早就支持了androidx,根目录下的gradle.properties已经有如下两行

但是rebuild后依然报上面的错,找了半天发现老项目的app的module下也有一个gradle.properties,但是里面的android.useAndroidX=false。。。。。。

醉了醉了,把这个多余的gradle.properties删掉就好了。

后来在 AGP4.2.0更新说明 中看到了这么一句话:

gradle.properties 文件的行为变更

从 AGP 4.2 开始,无法再从子项目中替换 Gradle 属性。也就是说,如果您在子项目(而不是根项目)上的 gradle.properties 文件中声明某个属性,该属性将被忽略。

AGP 3.6 以上的版本,在调试开发APP的时候采用了新的打包方式,这里关闭新的打包方式,可以让编译通过

android.namespacedRClass 属性已重命名为 android.nonTransitiveRClass

实验性标记 android.namespacedRClass 已重命名为 android.nonTransitiveRClass。

此标记在 gradle.properties 文件中设置,可启用每个库的 R 类的命名空间,以便其 R 类仅包含库本身中声明的资源,而不包含库的依赖项中的任何资源,从而缩减相应库的 R 类大小。

解决办法:删除gradle.properties中的android.nonTransitiveRClass=true

报错信息如下:Direct local .aar file dependencies are not supported when building an AAR.

The resulting AAR would be broken because the classes and Android resources from any local .aar

file dependencies would not be packaged in the resulting AAR. Previous versions of the Android

Gradle Plugin produce broken AARs in this case too (despite not throwing this error).

修改前aar依赖方式:

修改后aar依赖方式:

4.在module中添加对local_aar的依赖

可以参考: Direct local .aar file dependencies are not supported

[CIRCULAR REFERENCE:com.android.tools.r8.utils.b: Expected [access-flag]* void <init> at C:\Users\DT.gradle\caches\transforms-3\fd8ee676f15f0d57578a9e28a336cbac\transformed\pol

yvPlayer-2.15.2\proguard.txt:95:42

public PolyvAuxiliaryVideoView <init>;

解决办法: polyvPlayer升级至net.polyv.android:polyvPlayer:2.15.3

这个问题还未解决,应该是某个第三方library中manifest不规范少写了尖括号导致的

参考:

Android agp 对 R 文件内联支持

Android Gradle 插件版本说明