首先在Project的build.gradle中添加一下代码片段:
classpath'com.tencent.mm:AndResGuard-gradle-plugin:1.2.10'
其次在app的build.gradle中引用这个库,
whiteList是白名单,里面存放的是要混淆的文件格式
更多要添加的白名单请查看:AndResGuard白名单
下面是完整的build.gradle文件:
applyplugin:'AndResGuard'
andResGuard {
mappingFile =null
use7zip =true
useSign =true
keepRoot =false
compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"*.gif",
"resources.arsc"
]
whiteList = [
// your icon
"R.drawable.icon",
// for fabric
"R.string.com.crashlytics.*",
// for umeng update
"R.string.tb_*",
"R.layout.tb_*",
"R.drawable.tb_*",
"R.drawable.u1*",
"R.drawable.u2*",
"R.color.tb_*",
// umeng share for sina
"R.drawable.sina*",
// for google-services.json
"R.string.google_app_id",
"R.string.gcm_defaultSenderId",
"R.string.default_web_client_id",
"R.string.ga_trackingId",
"R.string.firebase_database_url",
"R.string.google_api_key",
"R.string.google_crash_reporting_api_key",
//友盟
"R.string.umeng*",
"R.string.UM*",
"R.layout.umeng*",
"R.drawable.umeng*",
"R.id.umeng*",
"R.anim.umeng*",
"R.color.umeng*",
"R.style.*UM*",
"R.style.umeng*",
//融云
"R.drawable.u*",
"R.drawable.rc_*",
"R.string.rc_*",
"R.layout.rc_*",
"R.color.rc_*",
"R.id.rc_*",
"R.style.rc_*",
"R.dimen.rc_*",
"R.array.rc_*"
]
sevenzip {
artifact ='com.tencent.mm:SevenZip:1.2.10'
//path = "/usr/local/bin/7za"
}
}
build clenr一下项目,编译完成之后会看到这几个按钮
如果想打debug包,则执行resguardDebug指令;
如果想打preview包,则执行resguardPreview指令;
如果想打release包,则执行resguardRelease指令。
打完的包会生成在
此时将安装包反编译一下会看到所有的资源文件名都被替换成a,b,c...这些简短的字符代替,不仅混淆了文件名而且达到了apk瘦身的效果,简直棒棒哒!!!
可以看到res包下面的layout中所有的文件名都被替换掉了,完成了!
最后有想了解反编译apk的同学可以观看我之前发布的一篇文章AndroidAPK安装包反编译流程以及踩过的坑,简单明了有不懂的小伙伴可以加我QQ:291252192.
网友评论