打包jar文件
主模块build.gradle根路径加入任务
task makeJar(type: org.gradle.api.tasks.bundling.Jar) {
//指定生成的jar名称
baseName 'fixclass'
//从哪里打包class文件
from('build/intermediates/classes/debug/cn/xxx/hotfixtest/')
//打包到jar后的目录结构
into('cn/gowild/hotfixtest/')
// //include ,exclude参数来设置过滤
//去掉不需要打包的目录和文件
exclude('MainActivity.class', 'FixEngine.class', 'BuildConfig.class', 'R.class', 'BuildConfig.class')
// 去掉R$开头的文件
exclude { it.name.startsWith('R$') }
}
命令执行gradlew makejar
build/intermediates/classes/debug/cn/xxx/hotfixtest目录下自动生成jar包
jar转dex
sdk\build-tools\26.0.0目录下dx.bat命令
dx --dex --output=新dex.jar 当前jar.jar
class转dex
1、build --> make project 后,在build\intermediates\classes\debug\..下得到要操作的.class文件
2、创建目录,层级与.java文件包名一致,把.class文件移到该目录下(如果路径名与包名不一致,转dex操作会报错)
3、用jdk/bin目录下的jar命令或者上方的gradle脚本,jar cvf destFile.jar source.class,得到jar文件
4、用Android sdk/build-tools下的命令dx --dex --output=destFile_dex.jar destFile.jar得到包含.dex类型的jar包
dex转jar
命令:d2j-dex2jar classes.dex
.class 转 java
JD-GUI:http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/JD-GUI.shtml