步驟:
- 解壓
.aar
文件 - 使用
jd-gui
查看源碼并定位到代碼再修改 - 解壓
.aar
文件解壓后產生的classes.jar
文件 - 打包源碼為
classes.jar
- 打包所有文件(
res文件、classes.jar、AndroidManifest.xml
等)為xxx.aar
先創建一個新目錄,終端使用cd
進入該目錄,再創建tempFolder
和tempFolderClasses
,把需要修改的xxx.aar放入,并修改成.zip后綴,解壓到一個新目錄里,或者使用下面的unzip
命令
解壓xxxx.aar
文件
$ unzip xxxx.aar -d tempFolder
使用jd-gui
查看源碼并定位到代碼再修改
- 進入
tempFolder
把里面的classes.jar
復制出來 - 再使用jd-gui(mac版下載地址:https://github.com/parcool/resources/blob/master/jd-gui-1.6.0.jar windows自行下載)打開
classes.jar
找到需要修改的地方,把這個類的代碼copy出來,在android studio中新建項目,把這個.aar
放到新建libs
文件夾里再引用它,把之前copy出來的代碼新建一個.java
后粘貼到里面(注意包名也得一樣,部分報錯的代碼需要手動修改一下。比如:this
關鍵字之類的刪掉),改好后build一下,從項目名/app/build/intermediates/javac/debug/對應包名
找到修改的.class
文件,有可能是多個XXXX$xxxxx.class
。
解壓.aar
文件解壓后產生的classes.jar
文件
- 解壓
classes.jar
。命令:$ unzip classes.jar -d tempFolderClasses
- 把第二步生成的
.class
文件放到tempFolderClasses
文件夾下對應的地方替換掉以前的.class
文件(大功即將告成)
打包源碼為classes.jar
$ jar cvf newClasses.jar -C tempFolderClasses/ .
(注意斜杠后面加空格與.)
再把這個newClasses.jar
放回tempFolder
并刪除之前的,修改文件名為classes.jar
打包所有文件(res文件、classes.jar、AndroidManifest.xml
等)為xxx.aar
$ jar cvf newAAR.aar -C tempFolder/ .