gradle编译missing_rules报错处理

最近升级agp版本之后,编译有报错,报错信息如下:

复制代码
ERROR: Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /home/yeshen/app/build/outputs/mapping/debug/missing_rules.txt.

错误提示已生成缺失类的规则文件:

/home/yeshen/app/build/outputs/mapping/debug/missing_rules.txt

处理方法

添加缺失的keep规则。打开该文件,将其中的规则复制到项目的 ProGuard/R8规则文件(通常是proguard-rules.pro)中:

参考:

https://stackoverflow.com/questions/70037537/proguard-missing-classes-detected-while-running-r8-after-adding-package-names-in

https://stackoverflow.com/a/79144211

  1. Open following path and copy the content

build\app\outputs\mapping\release\missing_rules.txt

  1. Paste content into following file

android/app/proguard-rules.pro

原因

这些缺失的类可能是:

项目自身代码中的类,但可能因为包名变化或代码被删除导致缺失。

第三方库中的类,但该库可能没有正确引入,或者版本不兼容,或者该库的ProGuard规则没有被正确应用。

如何判断缺失的类属于哪个库?

如果类名包含知名库的包名(如com.google.、okhttp3.、retrofit2.等),则很容易识别。

如果类名看起来像是项目自己的代码(如com.yourcompany.yourapp),那么可能是代码被误删或者包名重构导致。

为什么AGP 8.0之后会报错?

AGP 8.0 带来了以下变化:

  1. 默认启用R8全模式(Full Mode):在AGP 8.0之前,R8运行在兼容模式(兼容ProGuard),而全模式会进行更积极的优化,这可能导致之前被忽略的问题暴露出来(如缺少类或规则)。
  2. Kotlin元数据处理变化:AGP 8.0要求使用较新版本的Kotlin(至少1.8.0+),如果项目中的Kotlin版本过旧,则可能导致元数据解析问题。
  3. 构建工具链更新:AGP 8.0使用新版本的Dex和资源处理工具,这些工具对代码和资源的检查更加严格。
相关推荐
2501_9160088912 小时前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
独行soc13 小时前
2026年渗透测试面试题总结-20(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
常利兵13 小时前
2026年,Android开发已死?不,它正迎来黄金时代!
android
Risehuxyc14 小时前
备份三个PHP程序
android·开发语言·php
Doro再努力1 天前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
Daniel李华1 天前
echarts使用案例
android·javascript·echarts
做人不要太理性1 天前
CANN Runtime 运行时组件深度解析:任务调度机制、存储管理策略与维测体系构建逻辑
android·运维·魔珐星云
我命由我123451 天前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
朗迹 - 张伟1 天前
Tauri2 导出 Android 详细教程
android
lpruoyu1 天前
【Android第一行代码学习笔记】Android架构_四大组件_权限_持久化_通知_异步_服务
android·笔记·学习