AGP8+ fullMode 完全模式混淆闪退
总之,时间紧迫,先一把梭哈关闭 R8 fullMode 让项目先运行起来。❌ 在 AGP8+ 打包运行闪退(混淆包闪退、非混淆包正常)没有时间研究,也研究不懂,对新手来说升级 AGP 坑不浅啊。❌ 开启混淆打包,运行闪退(出现上文所示代码)✅ 在 AGP6+ 打包运行正常。✅ 在 AGP7+ 打包运行正常。好像也没发现什么东西。温故知新,问下 Al。
·

打包环境
- AGP:8.7.2
- Gradle:8.9
1、描述
同一个工程
✅ 在 AGP6+ 打包运行正常
✅ 在 AGP7+ 打包运行正常
❌ 在 AGP8+ 打包运行闪退(混淆包闪退、非混淆包正常)
2、混淆前
很正常的代码
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
androidx.multidex.MultiDex.install(this);
DNSDK.applicationAttachBaseContext(this, base);
}
}
3、AGP8+ 混淆后
- 这里看着还算正常

- 这就不正常了
- 一个普通类怎么变成了 abstract
- 一个正常的方法最后怎么就直接抛异常了
throw null【这样运行意料之中绝对闪退】
- 再随便看其他类,很多方法都是直接抛异常,方法体都变了【天崩开局😡】

5、AGP8+ 非混淆
经测试
✅ 关闭混淆打包。运行正常
❌ 开启混淆打包,运行闪退(出现上文所示代码)
buildTypes {
debug {
isMinifyEnabled = false//关闭混淆
isDebuggable = true
signingConfig = signingConfigs["PrimerDebug"]
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
"obs-all-proguard-rules.pro"
)
}
release {
isMinifyEnabled = true//开启混淆
isDebuggable = false
signingConfig = signingConfigs["PrimerRelease"]
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
"obs-all-proguard-rules.pro"
)
}
}
4、AGP8+ 混淆 [关闭完全模式]
看官方 R8 的文档:Google git:D8 dexer and R8 shrinker 好像也没发现什么东西
冥冥中记得 R8 有一个混淆模式:fullMode 完整模式
温故知新,问下 Al



Al 解释的很清楚
总之,时间紧迫,先一把梭哈关闭 R8 fullMode 让项目先运行起来
gradle.properties文件下配置开关:
android.enableR8.fullMode=false
果不其然,这次运行正常
没有时间研究,也研究不懂,对新手来说升级 AGP 坑不浅啊
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)