#安卓 #unity/日常积累
两个不同的sqlite版本,其中上者是可以,正常在unity中,进行编译,而下者新版本,则不行;
![[Pasted image 20250919071331.png]]
对比了两者,内容的差异,可以发现,有这些;
![[Pasted image 20250919071427.png]]
对此,执行的操作,有这些:
![[Pasted image 20250919071536.png]]
原理解释:
简短说:你把新 AAR“降级”为旧格式后,Unity 自带的 Android 构建工具链(AGP 7.4.2)就不会走它不兼容的那条处理分支了,所以能顺利过关。
具体原理(对应你做的两步):
删除 META-INF/com/android/build/gradle/aar-metadata.properties
这个文件是新版本 AAR(通常由 AGP 8.x 产出)的“功能/兼容性宣言”。AGP 7.4.2 读取它后,会启用较新的处理路径(比如更严格的元数据校验、注解提取行为等)。AGP 7.4 对部分新元数据/流程支持不完整,进入这条路径时,任务 extractReleaseAnnotations 容易崩(你看到的就是它失败)。
删掉它后,AGP 把这个 AAR当作“旧格式”处理,跳过这些新行为,回到它完全兼容的老路径,因此不再在注解提取阶段出错。
用旧版的 classes.jar 覆盖新版
新版 classes.jar 体积略大,通常意味着多了更新的注解/字节码元数据(例如更高版本的注解格式、Kotlin/JetBrains/AndroidX 注解的附加信息、或新的 classfile 特性标记)。AGP 7.4 的注解提取器对这些“更新格式”支持不全,可能在扫描时崩溃。
换回旧版 classes.jar,字节码与注解回到 AGP 7.4 已验证过的形态,extractReleaseAnnotations 的解析就稳定了。
结合这两点:你把“新产物(AGP 8 思路/元数据)”变成了“老产物(AGP 7 兼容路径)”,Unity 2022 内置的 AGP 7.4.2 就能正常构建。
如果想保留“完全新版”的 AAR 而不用“降级”:
升级 Unity(或切换到使用 AGP 8.x 的外部 Gradle 构建),让工具链与 AAR 的生产工具链同代;
或在 Gradle/gradle.properties 中加兼容开关,避免触发新版路径,但这在 Unity 内置 Gradle 下可操作空间较小。
结论:你的处理本质是“让新 AAR 避免触发 AGP 7.4 的不兼容逻辑”,因此可以正常打包与运行。
其余,可参考[[classes.jar]]