当前位置: 首页 > news >正文

AGP8+ fullMode 完全模式混淆闪退

在这里插入图片描述

打包环境

  • AGP:8.7.2
  • Gradle:8.9

1、描述

同一个工程

✅ 在 AGP6+ 打包运行正常

✅ 在 AGP7+ 打包运行正常

❌ 在 AGP8+ 打包运行闪退(混淆包闪退、非混淆包正常)

2、混淆前

很正常的代码

public class MyApplication extends Application {@Overrideprotected 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 = truesigningConfig = signingConfigs["PrimerDebug"]proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro","obs-all-proguard-rules.pro")}release {isMinifyEnabled = true//开启混淆isDebuggable = falsesigningConfig = 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 坑不浅啊

http://www.xdnf.cn/news/127189.html

相关文章:

  • MAC地址攻击和ARP攻击的原理及解决方法
  • nodejs导入文件模块和导入文件夹
  • 研0调研入门
  • 【Vue3 实战】插槽封装与懒加载
  • LJF-Framework 第14章 LjfSecurity适配SpringSecurity
  • springcloud-openfeign
  • 使用钉钉机器人推送系统内部的ERP停机维护公告
  • 微信小程序 tabbar底部导航栏
  • 传统的图像压缩技术(二)
  • mysql——索引事务和JDBC编程
  • 【C++基础知识】namespace前加 inline
  • 低代码平台开发胎压监测APP
  • 【MySQL数据库】表的增删改查
  • C++智能指针上
  • 如何在Spring Boot中禁用Actuator端点安全性
  • containerd 配置代理
  • 生成随机验证码-解析与优化
  • 扩张尺度张量填充方式
  • HTML字符实体和转义字符串
  • 【Linux】基本指令(下)
  • Docker部署DeepSeek常见问题及解决方案
  • 详细讲解 QMutex 线程锁和 QMutexLocker 自动锁的区别
  • 提升内容创作效率:AI原创文章批量生成工具优势
  • 【DNS】BIND 9的配置
  • Android之AI自动化测试--Midscene
  • CentOS 7上Memcached的安装、配置及高可用架构搭建
  • 内存管理:内存堆管理
  • 编译原理(5):链接
  • Kafka命令行的使用/Spark-Streaming核心编程(二)
  • 17.磁珠在EMC设计中的运用