Android--资源混淆工具使用说明
来源:互联网 发布:高韶青 离开中国 知乎 编辑:程序博客网 时间:2024/05/17 21:50
https://github.com/shwenzhang/AndResGuard/blob/master/README.zh-cn.md
Android资源混淆工具使用说明
其他语言版本: English, 简体中文.
AndResGuard
是一个帮助你缩小APK大小的工具,他的原理类似Java Proguard,但是只针对资源。他会将原本冗长的资源路径变短,例如将res/drawable/wechat
变为r/d/a
。
AndResGuard
不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件中输入签名信息,可自动重签名并对齐,得到可直接发布的apk)以及对应资源ID的mapping文件。
原理介绍:详见WeMobileDev公众号文章
注意: v2签名会使得7zip压缩失效,如果你对apk大小有极致的要求,可以在signingConfigs中关闭v2签名
使用Gradle
此工具已发布在Bintray
apply plugin: 'AndResGuard'buildscript { repositories { jcenter() } dependencies { classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.3' }}andResGuard { // mappingFile = file("./resource_mapping.txt") mappingFile = null // 当你使用v2签名的时候,7zip压缩是无法生效的。 use7zip = true useSign = true // 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字 keepRoot = false whiteList = [ // for your icon "R.drawable.icon", // for fabric "R.string.com.crashlytics.*", // for google-services "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" ] compressFilePattern = [ "*.png", "*.jpg", "*.jpeg", "*.gif", "resources.arsc" ] sevenzip { artifact = 'com.tencent.mm:SevenZip:1.2.3' //path = "/usr/local/bin/7za" }}
使用Android Studio的同学可以再 andresguard
下找到相关的构建任务; 命令行可直接运行./gradlew resguard[BuildType | Flavor]
, 这里的任务命令规则和assemble一致。
在设置sevenzip
时, 你只需设置artifact
或path
. 支持同时设置,总以path的值为优先.
最终的混淆APK会生成在{App}/build/output/apk/AndResGuard_{apk_name}/{apk_name}_signed_7zip_aligned.apk
。
请使用Umeng_social_sdk的同学特别留意将资源加入白名单,否则会出现Crash。可以在white_list.md查看更多sdk的白名单配置,也欢迎大家PR自己的白名单
白名单机制只作用于资源的specsName,不会keep住资源的路径。如果想keep住资源原有的物理路径,可以使用mappingFile
。 例如我想keep住icon所有folder,可以在mappingFile指向的文件添加:
res path mapping: res/mipmap-hdpi-v4 -> res/mipmap-hdpi-v4 res/mipmap-mdpi-v4 -> res/mipmap-mdpi-v4 res/mipmap-xhdpi-v4 -> res/mipmap-xhdpi-v4 res/mipmap-xxhdpi-v4 -> res/mipmap-xxhdpi-v4 res/mipmap-xxxhdpi-v4 -> res/mipmap-xxxhdpi-v4
点击查看更多细节和命令行使用方法
已知问题
- 当时在使用7zip压缩的APK时,调用
AssetManager#list(String path)
返回结果的首个元素为空字符串. #162
致谢
Apktool 使用了Apktool资源解码部分的代码
v2sig @jonyChina162
- Android资源混淆工具使用说明
- Android--资源混淆工具使用说明
- Android 资源混淆工具
- 微信Android资源混淆打包工具
- 微信开源工具AndResGuard做Android资源混淆
- AndResGuard资源混淆工具
- 资源混淆工具AndResGuard
- Mac下使用微信Android资源混淆打包工具
- Android日志:代码混淆,使用说明
- android代码混淆的使用说明
- Android资源文件混淆
- Android 资源(res)混淆
- Android 资源混淆
- JS代码压缩混淆工具使用说明
- JS代码压缩混淆工具使用说明
- Android资源混淆打包工具 - 让你的资源瘦瘦身
- Android 代码混淆,Android proguard 使用说明
- android反混淆工具
- DB2 插入数据并返回自增长主键
- springboot使用自定义配置文件
- hdu--2222--Keywords Search
- Android VPN编程
- 【HPU1189】Ou à [数学]
- Android--资源混淆工具使用说明
- 前向渲染水效果实现
- BZOJ 1997: [Hnoi2010]Planar 2-sat
- 图像边缘锯齿及处理方法
- Go! Go! Go! 来我的另一个博客
- 8.21上课感悟
- 快速幂
- 内存管理
- hdu5965(思维)