- 解压aar(需要先命令行进入到aar级别文件夹)把
a.aar解压到同级目录的名字为b的文件夹下
unzip a.aar -d b
如果没有安装unzip(需要配置环境变量) 去下载
- 同上解压classes.jar
unzip classes.jar -d c
把classes.jar解压到同级目录的名字为c的文件夹下
- 修改相应的包名下面的类(替换或者删除)
- 使用命令重新打包成classes.jar
jar cvf classes.jar -C c/ .
把c文件夹打包成classes.jar
- 替换上次解压arr文件里里的
classes.jar在重新打包成aar
jar cvf new.aar -C b/ .
把b文件夹打包成new.aar
第二方案
下载新版本 proguard Releases · Guardsquare/proguard
- 解压aar,得到classes.jar
- 然后将classes.jar放到bin目录下
- 创建 convert.txt,输入如下内容
-injars 'classes.jar'
-outjars 'classes-out.jar'
-dontskipnonpubliclibraryclassmembers
-dontshrink
-dontoptimize
-dontusemixedcaseclassnames
# 在这里指定要转换成的包名(将a.a.a替换成的包名)
-repackageclasses com.aa
-dontpreverify
-dontnote
-dontwarn
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
# 需要注意观察原始 jar 包中哪些是没有混淆的,需要保留
-keep class com.** {*;}
# 因为我们的目的只是替换外层包名,类内部的一些东西都不用管
-keepclassmembers class ** {*;}
-
执行sh
./proguard.sh @convert.txt
window使用(proguard.bat @convert.txt)
-
classes-out.jar替换aar解压后的classes.jar
-
使用jar cvf 重新打包aar
jar cvf output.aar -C aar_unzip/ .