美文网首页Android技术知识Android开发Android开发
Android修改第三方.aar后重新打包

Android修改第三方.aar后重新打包

作者: v587的毅哥 | 来源:发表于2018-09-28 10:50 被阅读15次

    一切从需求出发:公司选定了用阿里云旺作为客服IM系统,但是这个SDK(Android端)是2016年12月更新的,后面官方就没动作了。问题出在:不兼容Android8.0,因为notification没有channel的问题。所以接下来的动作就是修改源码使其兼容8.0+

    步骤:

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

    $ unzip myLib.aar -d tempFolder

    使用jd-gui查看源码并定位到代码再修改
    1. 进入tempFolder把里面的classes.jar复制出来
    2. 再使用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文件。
    解压.aar文件解压后产生的classes.jar文件
    1. 解压classes.jar。命令:$ unzip classes.jar -d tempFolderClasses
    2. 把第二步生成的.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

    相关文章

      网友评论

        本文标题:Android修改第三方.aar后重新打包

        本文链接:https://www.haomeiwen.com/subject/dpeuoftx.html