android 解决混淆导致AGPBI: {“kind“:“error“,“text“:“Type a.a is defined multiple times

当我们代码将minifyEnabled true后开启混淆,最终打包可能会出现AGPBI: {"kind":"error","text":"Type a.a is defined multiple times: F:\classes.jar:a/a.class,出现原因是是因为 R8/Projguard 混淆器 介入后,将原本不同的类都重命名为了最简短的 a.a

在 Android 组件化架构中,如果你在 alibraryblibrary 两个库模块中都开启了 minifyEnabled true

  • 隔离编译 :Gradle 在编译 Library 时是相互隔离的。R8 在处理 alibrary时,并不知道 blibrary 的存在。

  • 重名碰撞 :R8 的混淆算法通常从 a, b, c 开始。alibrary里的某个核心类(比如 DataBinderMapperImpl)被混淆成了 a.a;凑巧 blibrary 里的某个类也被混淆成了 a.a

  • 合并冲突 :当 App 模块尝试将这两个已经混淆好的 .jar 文件合并到一个 DEX 文件时,由于它们都叫 a.a,编译器无法分辨该保留哪一个,为了程序安全只能报错

知道原因后我们只需要aliberary跟blibrary 的android{resourcePrefix "a_"}跟android{resourcePrefix "b_"}即可

相关推荐
谢亮_vipxieliang12 小时前
ValidX分组验证详解:不同场景使用不同验证规则
java·spring boot·后端·spring cloud·eclipse·hibernate
Brilliantwxx12 小时前
【C语言】 初入嵌入式C语言复习(基础+进阶面试题)
c语言·开发语言
熊野君12 小时前
附录与 Codex 实操手册
开发语言·人工智能·产品经理
wuminyu12 小时前
深入剖析 Panama Off-heap 的性能损耗与开销
java·linux·c语言·jvm·c++
pnoker12 小时前
IoT DC3 AI 能力:Agentic Center 的设计与边界
java·人工智能·物联网·大模型·spring ai
xiaoqiMikko13 小时前
一条 CVSS 9.0 的 RCE,advisory 里没写修复版是哪个 —— fastjson 16723 的字段考古
java·安全
程序员贺加贝13 小时前
一次 SaaS ERP 主数据生命周期设计:Policy、PreCheck 与结构化阻断原因
java·后端·架构·saas
XZ-07000113 小时前
week2-1-可视化
开发语言·python
catino13 小时前
spring-Bean
java·后端·spring
Java后端的Ai之路13 小时前
14、Python - 责任链模式
服务器·开发语言·人工智能·python·责任链模式