前言
最近在改老项目的代码.碰见了老项目依赖的aar库之中存在的bug.
但是因为时间紧,任务重.该aar文件的源代码的版本升级了太多了.
新版本代码打包的话,可能会出现更多意想不到的问题.同时与当前项目不符的地方也有不少.
索性尝试,直接修改aar文件先解决当前的bug.
同时也记录一下几种不同情况下替换的方法.
注意:只是临时解决方法.替换的也是少部分的代码.如果替换代码过多不建议这样替换
1.需要修改aar文件里面的java代码,新增或者删除
主要用来替换aar文件之中的java代码.或者添加新的java文件代码.
通过android Studio的External Libraries 我们可以看到aar文件的整个文件格式和java代码.效果图如下:
第一步: 复制你需要修改的代码.然后修改完代码之后,通过javac命令.将java文件编译成class文件.
命令
javac XXXX.java
就可以在该文件目录下得到class文件.
而如果不想使用这个,也可以直接在你的项目代码之中,按照aar里面的类的结构创建包名.然后执行编译.
编译后的代码将会存放在 build/intermediates/javac/xxxx 你的文件的包名.
参考如下.
第二步:
将class文件打包到aar文件之中的jar包里面.
1.将aar文件之中的jar文件解压出来.
通过命令jar uvf classes.jar xxx.class
可以将class文件打包进jar.请注意,你所修改的类名开头的.class文件需要全部复制.
2.将classes.jar使用压缩软件,替换aar文件里面的即可.
如果第二步繁琐的话,可以试试Bandizip压缩工具.它可以直接针对jar文件进行修改.
然后保存
2.需要修改aar文件里面的xml布局文件.
如果想修改aar文件之中的layout文件.
直接写好了layout文件.替换aar文件里面的layout即可,或者新增也是直接替换即可.
可以使用压缩软件打开aar文件,然后再替换里面的文件.直接压缩.
但是:layout等布局或者资源修改后.需要在R.txt 之中添加上id
否则将无法找到指定布局或者view
而ID后面的值
可以参考R.txt的命名,只要不和文档之中相同类型的ID重复即可.
最后
将aar文件重新导入项目.clean项目后,build就能使用修改后的代码了.
修改后的代码和布局也能看到.
至此aar文件的修改步骤就结束了.
步骤很简单,你将aar文件理解成一种压缩包即可.将xml文件和class文件压缩在一起.
我们要替换也是围绕这个思路进行的替换.
评论区