JAR包

Android 解决 jar/aar 包类名冲突

2022-04-25  本文已影响0人  雁过留声_泪落无痕

背景

在某些极端场景下,需要接多个第三方 jar 包,但是 jar 包都是各家按自己的规则混淆过的,很容易就出现了两个 jar 包中都包含 a.a.a.a 这个类的(前面几个 a 是包名,最后一个 a 是类名)

jar 包解决

-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 解决

上一篇下一篇

猜你喜欢

热点阅读