AGP8+ fullMode 完全模式混淆闪退

在这里插入图片描述

打包环境

  • 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 坑不浅啊

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值