如果修改aar包并再次打包成aar

步骤:

解压.aar文件
使用jd-gui查看源码并定位到代码再修改
解压.aar文件解压后产生的classes.jar文件
打包源码为classes.jar
打包所有文件(res文件、classes.jar、AndroidManifest.xml等)为xxx.aar
解压.aar文件
$ unzip myLib.aar -d tempFolder

使用jd-gui查看源码并定位到代码再修改
进入tempFolder把里面的classes.jar复制出来
再使用jd-gui(mac版下载地址:https://github.com/parcool/resources/blob/master/jd-gui-1.4.0.jar windows自行下载)打开classes.jar找到需要修改的地方,把这个类的代码copy出来,在android studio中新建项目,把这个.aar放到新建libs文件夹里再引用它,把之前copy出来的代码新建一个.java后粘贴到里面(注意包名也得一样,部分报错的代码需要手动修改一下。比如:this关键字之类的删掉),改好后build一下,从/build/intermediates/classes/debug/对应包名找到修改的.class文件。
注:新版(没研究过具体哪个版本开始)的android studio生成的.class位置变了,在/build/intermediates/javac/debug/对应包名下。
解压.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/ .

完成!!!!
没配图啥的,不明白的再交流吧。。。

ps:附一个我重新编译后的阿里云旺安卓包:https://github.com/parcool/resources/blob/master/MyIMCore2.0.2.1.aar

更新:
在再次另一个aar需要修改后重新打包的需求中,发现通过如上解压的方式来解压出现了一个问题:因为它有其他module混淆过,导致出现同名但大小写不同的.class文件(比如:a.class和A.class),如上方式解压后会提示重命名或覆盖等操作。在mac下我没解决得了这个问题,需要把硬盘格式化为区分大小写,放弃了。。。然后我搞了个Parallels Desktop来装了windows,把上面替换class的步骤换成了用7-zip来替换:改classes.jar为classes.zip,再用7-zip打开,把改好后的class文件拖进去,再执行最后一步打包aar操作就ok了。

作者:v587的毅哥
链接:https://www.jianshu.com/p/f0a267551493
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值