资源混淆工具AndResGuard
来源:互联网 发布:时时彩软件urssc 编辑:程序博客网 时间:2024/06/05 05:41
git地址https://github.com/shwenzhang/AndResGuard
AndResGuard是微信团队退出的资源混淆工具,其原理是将 "res/drawable/someres" 这样的长路径(字符数)转换成 "r/d/s"这样的短路径,从而缩小包体大小。
其具体的代码实现分析可以参见http://blog.csdn.net/cg_wang/article/details/70183864。
AndResGuard即可以像其Git上所展示的那样配置在项目中,也可以单独使用jar文件作为一个独立的工具使用。
我这里使用的是后者。
将Git项目下到本地后,可以看到一个tool_output的文件夹
点开后,可以看到它包含了一个jar文件、2个批处理文件(分别对应windows和linux)、一个config.xml(混淆配置文件)、1个签名文件release.keystore。
我们公司使用的是windows,点开build_apk.bat,已经有完整的填写例子,
set jdkpath=D:\Program Files\Java\jdk1.7.0_79\bin\java.exeset storepath=release.keystoreset storepass=testresset keypass=testresset alias=testresset zipalign=D:\soft\dev\android\sdk\build-tools\23.0.2\zipalign.exe"%jdkpath%" -jar AndResGuard-cli-1.2.0.jar input.apk -config config.xml -out outapk -signature "%storepath%" "%storepass%" "%keypass%" "%alias%" -zipalign "%zipalign%"pause
依次填入apk全名(input.apk),输出文件目录(outapk)还有签名文件信息。以我们项目为例,填完后如下:
set jdkpath=C:\Program Files\Java\jdk1.8.0_11\bin\java.exeset storepath=storepathset storepass=****set keypass=*****set alias=*****set zipalign=D:\soft\dev\android\sdk\build-tools\23.0.2\zipalign.exe"%jdkpath%" -jar AndResGuard-cli-1.2.0.jar v5.0.0.apk -config config.xml -out result -signature "%storepath%" "%storepass%" "%keypass%" "%alias%" -zipalign "%zipalign%"pause
把签名文件和apk拖到tool_output目录下,双击运行.bat,就在result目录下打出了新包。相比最初的13.7Mb,处理后的安装包为12.6Mb,包体减小了约1.1Mb。安装运行,崩溃了。日志显示资源文件找不到导致了空指针。
原因是我们的项目里有个别库调用资源文件采用的是文件名的方法(库本身没有生成R文件),混淆后文件名变了,导致空指针。
接下来就需要config.xml了,打开config.xml
一共有5项,注释很清楚
1.property
seventzip: 指定是否是使用7z压缩
metaname : meta文件名
keeproot : 根路径是否混淆(res/drawable --> r/s)
2.whitelist
不混淆的资源文件清单。把用文件名调用的资源文件都列到这里。
3.keepmapping
mapping文件输出路径
4.compress
指定重打包时需要压缩的文件。
path标签中填的是需要被压缩的文件。
5.sign
签名信息,会被命令行中输入的签名信息覆盖。所以如果用命令行输,可以不写。
这个工具用起来很便捷,不需要写额外代码,只需要打出包后用AndroidResGuard工具处理一下就可以减小可观的包体大小。
- AndResGuard资源混淆工具
- 资源混淆工具AndResGuard
- 微信开源工具AndResGuard做Android资源混淆
- 微信开源工具AndResGuard-资源混淆工具的使用及注意事项
- 使用AndResGuard混淆资源文件
- 微信资源混淆AndResGuard原理
- Android项目集成AndResGuard资源混淆两种方式
- AndResGuard资源混肴
- 【Android】开发干货-技术分享之AndResGuard资源混淆的使用
- android插件自定义之多渠道打包插件(支持微信资源混淆andResGuard)
- Android 资源混淆工具
- Android资源混淆工具使用说明
- Android--资源混淆工具使用说明
- 微信Android资源混淆打包工具
- 微信资源混淆工具打包
- Mac下使用微信Android资源混淆打包工具
- Android资源混淆打包工具 - 让你的资源瘦瘦身
- AndResGuard分析
- PHP那些琐碎的知识点
- 第一讲 Hello Spring MVC
- 视频转换 质量少许改变 清晰度不怎么改变 格式工厂
- Python 交叉排序题
- IDEA openjdk platform binary 已停止工作 的解决办法
- 资源混淆工具AndResGuard
- Java学习之类加载器
- ubuntu下使用python接口对网络结构进行可视化
- 开发者的利器--Zeal 离线API
- 在case标签中使用非静态字段
- java实现求一个数组中有多少个子序列
- maven打包出现错误: Failed to clean project: Failed to delete
- JsonUtil.fromJson -- error
- Java基础