一、概述
有時(shí)候使用了三方sdk完箩,但是三放sdk是aar的形式铁蹈,但是aar中的代碼跟自己的需求有一點(diǎn)淡差別宽闲,這時(shí)候我們可以通過(guò)修改aar中的代碼進(jìn)行實(shí)現(xiàn)。
二、步驟
- 解壓
.aar
文件 - 使用
jd-gui
查看源碼并定位到代碼再修改 - 解壓
.aar
文件解壓后產(chǎn)生的classes.jar
文件 - 打包源碼為
classes.jar
- 打包所有文件(
res文件容诬、classes.jar娩梨、AndroidManifest.xml
等)為xxx.aar
解壓.aar
文件
$ unzip myLib.aar -d tempFolder
使用jd-gui
查看源碼并定位到代碼再修改
- 進(jìn)入
tempFolder
把里面的classes.jar
復(fù)制出來(lái) - 再使用jd-gui(mac版下載地址:https://github.com/parcool/resources/blob/master/jd-gui-1.4.0.jar windows自行下載)打開(kāi)
classes.jar
找到需要修改的地方,把這個(gè)類(lèi)的代碼copy出來(lái)览徒,在android studio中新建項(xiàng)目狈定,把這個(gè).aar
放到新建libs
文件夾里再引用它,把之前copy出來(lái)的代碼新建一個(gè).java
后粘貼到里面(注意包名也得一樣习蓬,部分報(bào)錯(cuò)的代碼需要手動(dòng)修改一下纽什。比如:this
關(guān)鍵字之類(lèi)的刪掉),改好后build一下躲叼,從/build/intermediates/classes/debug/對(duì)應(yīng)包名
找到修改的.class
文件芦缰。
解壓.aar
文件解壓后產(chǎn)生的classes.jar
文件
- 解壓
classes.jar
。命令:$ unzip classes.jar -d tempFolderClasses
- 把第二步生成的
.class
文件放到tempFolderClasses
文件夾下對(duì)應(yīng)的地方替換掉以前的.class
文件(大功即將告成)
打包源碼為classes.jar
$ jar cvf newClasses.jar -C tempFolderClasses/ .
(注意斜杠后面加空格與.)
再把這個(gè)newClasses.jar
放回tempFolder
并刪除之前的枫慷,修改文件名為classes.jar
打包所有文件(res文件让蕾、classes.jar、AndroidManifest.xml
等)為xxx.aar
$ jar cvf newAAR.aar -C tempFolder/ .
完成;蛱L樗住!神帅!