參考:
Android開發——如何解決三方庫中的類名沖突問題_android 類沖突-CSDN博客
Android 解決 jar/aar 包類名沖突 - 簡書
實操步驟
1.提前安裝好unzip-5.51-bin,proguard-7.4.0,jarjar-1.4軟件
2.解壓包名沖突的 AAR 文件
進入到需要修改包名的aar(此例為itrustekyclibrary.aar)存放的目錄,執行解壓命令:
unzip itrustekyclibrary.aar -d tempFolder
3.將tempFolder文件夾中的classes.jar放到 E:\jar-tool\目錄下
注意與下述混淆規則文件convert.txt中的-injars path中指定的path一致即可
4.創建混淆打包規則文件?convert.txt
-injars 'E:\jar-tool\classes.jar'
-outjars 'E:\jar-tool\classes-out.jar'-dontskipnonpubliclibraryclassmembers
-dontshrink
-dontoptimize
-dontusemixedcaseclassnames
# 在這里指定要轉換成的包名
-repackageclasses a.a
-dontpreverify
-dontnote
-dontwarn
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod# 需要注意觀察原始 jar 包中哪些是沒有混淆的,需要保留
-keep class jp.co.cybertrust.itrust.identification.** {*;}
-keep class b.** {*;}
-keep class c.** {*;}
-keep class d.** {*;}
-keep class e.** {*;}
-keep class f.** {*;}
-keep class g.** {*;}
-keep class h.** {*;}
-keep class i.** {*;}
# 因為我們的目的只是替換外層包名,類內部的一些東西都不用管
-keepclassmembers class ** {*;}
5.執行命令生成新的classes.jar
進入對應的文件目錄:E:\proguard-7.4.0\proguard-7.4.0\bin,執行重打包命令:
proguard.bat @E:\jar-tool\convert.txt
6.替換原始的classess.jar
將新生成的classes-out.jar替換tempFolder中的classes.jar
7.重新打包aar, 命令如下(注意空格后有一個點)
jar cvf newAAR.aar -C tempFolder/ .