#安卓 #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]]