编译过程中修改第三方jar包
背景
Android项目过程中要引入第三方开源的jar,根据需求又要对其进行破坏性的定制,不修改源码不行。然而种种规范和要求又不能让我们将第三方源码全部拿过来再修改。
奇葩的需求和奇葩的硬性规范,导致如下难题:
工程依赖要用原始未修改的jar
jar里面某几个class要修改
开发不能将所有源码引入
解决思路
工程依赖使用原始jar
工程内引入需要修改的源码(包路径、类名称等需要和源码相同)
编译时用我们修改后代码生成的class覆盖原jar中同名class
gradle脚本如下
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
// 解压缩第三方jar包到某目录,拷贝过程中去掉我们要修改的class
task unzip(type: Copy) {
// 原始jar包文件
def zipFile = file('xxxxx/xxx/abcdef.jar