Hello,村长🙂

不负时光,学习不止;做我所想,强身健体

修改第三方 jar /aar 文件重新打包_java

​转载修改 aar 重新打包​

1、反编译 jar 获取 java 文件

  • 下载反编译工具 ​​JD-GUI​
  • 导出 java 文件并修改

2、java 文件编译成 class 文件

  • 使用 javac 命令编译
  • 当遇到编码问题时添加参数:​​-encoding utf-8​
  • 修改第三方 jar /aar 文件重新打包_jar_02

  • ​1、​​​当遇到​​系统程序包不存在时,如下​​:把相应的程序包(jar)放在与需要编译的 java 文件同级目录下
  • 修改第三方 jar /aar 文件重新打包_jar_03

  • ​2、​​​当遇到​​编译源 jar 符号找不到时,如下:​
  • 修改第三方 jar /aar 文件重新打包_java_04

  • ​3、​​​当遇到​​编译源 jar 具有相同简明类型(因为第三方包混淆)时,如下:​
  • 修改第三方 jar /aar 文件重新打包_android_05

如果放在同一个目录下还是显示找不到程序包,可以在 classpath 后面追加多个 jar 参数,使用分号分隔:​​例如:javac -encoding utf-8 -classpath android.jar;classes-dex2jar.jar GRAppStoreActivity.java​

  • 最后,可能像这样执行编译命令:​​javac -encoding utf-8 -classpath AAAA.jar BBBB.java​
  • 修改第三方 jar /aar 文件重新打包_android_06

  • ​AAAA.jar​​ :这个 jar 是目标 jar,也就是我们需要修改里面的代码,然后重新打包的 jar

​注意:​​这里有个坑:如果我需要修改的 jar 代码依赖 android jar,那么!!!这了 android.jar 必须是 android sdk 目录下的 jar,不能随便找一个,否则编译失败。

修改第三方 jar /aar 文件重新打包_jar_07

3、替换字节码文件

复制编译生成的 class 文件,替换我们需要修改的 jar(反编译 jar ,从 JD-GUI 导出来是一个目录,里面的内容是 class 文件) 里面对应的 class 文件。

4、使用 jar 命令重新打包生成新的 jar 文件:​​jar cvf 生成文件名.jar​

修改第三方 jar /aar 文件重新打包_java_08