Android动态替换jar包或者aar中的类
项目中使用第三方的库,库里面的某个方法,处理逻辑有bug或者想不让让他执行,但是此方法调用方的代码又无法去修改,或者编译是刚好有重复的类,一个类这种情况,有什么方式可以去处理了?
我们可以用类加载的优先级,
- 在自己的项目目录下,创建一个和jar包中类相同路径的包,
- 将此类的源码复制过来,修改需要修改的方法
- 删除原来jar包或者aar中的类
操作如下:
- 解压jar或者aar
unzip ×××sdk.aar -d sdkjar
-
找到classes.jar包,用zip压缩工具打开,找到对应的class文件,并删除
-
将sdkjar重新打包成一个新的aar
jar cvf ×××sdk-new.aar -C sdkjar .
之后依赖新的jar或者aar和自己项目中的复制修改后的类,编译项目