gradle中设置
applicationVariants.all { variant ->
variant.javaCompileProvider.configure {
it.doLast {
JavaCompile javaCompile = variant.javaCompile
if (variant.hasProperty('javaCompileProvider')) {
//android gradle 3.3.0 +
javaCompile = variant.javaCompileProvider.get()
} else {
javaCompile = variant.javaCompile
}
if ("${javaCompile.destinationDir}".toLowerCase().contains("relase")) {
println("start classes obfuscation " + "${variant.javaCompile.destinationDir}")
try {
javaexec {
setDefaultCharacterEncoding("utf-8")//这里传错会导致解密出现问题,
main("-jar")
args(
"../obfuseStringGradle.jar",
project.name,
javaCompile.destinationDir,
"../ignore_class.txt",
ENCRYPT_CONFIG_JSON
)
}
} catch (e) {
println("exec encrypt fail.. " + "${e.getMessage()}")
}
}
}
}
}
obfuseStringGradle.jar是混淆程序,
ignore_class.txt 是每个正则表达式。需要忽略的词
ignore_class.txt
```^((?!lozn).)*$``` 表示不包含的就忽略加密!
ENCRYPT_CONFIG_JSON 是一些开关
该套配置可以实现一些字节码的插.桩,甚至干扰流程控制。
网友评论