Android 解决 jar/aar 包类名冲突
背景
在某些极端场景下,需要接多个第三方 jar 包,但是 jar 包都是各家按自己的规则混淆过的,很容易就出现了两个 jar 包中都包含 a.a.a.a
这个类的(前面几个 a 是包名,最后一个 a 是类名)
jar 包解决
-
下载新版本 proguard Releases · Guardsquare/proguard (github.com)
-
创建
convert.txt
,输入如下内容:
-injars 'classes.jar'
-outjars 'classes-out.jar'
-dontskipnonpubliclibraryclassmembers
-dontshrink
-dontoptimize
-dontusemixedcaseclassnames
# 在这里指定要转换成的包名
-repackageclasses com.xxx
-dontpreverify
-dontnote
-dontwarn
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
# 需要注意观察原始 jar 包中哪些是没有混淆的,需要保留
-keep class com.cmri.** {*;}
# 因为我们的目的只是替换外层包名,类内部的一些东西都不用管
-keepclassmembers class ** {*;}
- 执行如下命令:
cd E:\Program Files\proguard-7.2.1\bin
proguard.bat @C:\Users\xiaobo\Desktop\convert.txt
结果如图:

转换前

转换后
aar 解决
- 将 aar 拖到 7zFM.exe 图标上,用 7zip 打开
- 把 classes.jar 提取出来
- 按照上面 jar 包的形式进行处理 classes.jar
- 在 7zFM 中删除原来的 classes.jar 并将新的 classes.jar 拖进去
- 得到新的 aar
链接:https://www.jianshu.com/p/96c7832eb068
分类:
android gradle配置
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix