Android项目集成AndResGuard资源混淆两种方式
来源:互联网 发布:如何制作淘宝水印 编辑:程序博客网 时间:2024/06/07 16:23
Android 项目开发完成后我们为了防止别人反编译我们的apk安装包,我们需要对我们开发完的安装包做一些处理,比如代码混淆、加壳、资源混淆、资源加密等,本文要介绍的是微信官方推荐的AndResGuard资源混淆方法。
1、AndResGuard官方介绍
AndResGuard
是一个帮助你缩小APK大小的工具,他的原理类似Java Proguard,但是只针对资源。他会将原本冗长的资源路径变短,例如将res/drawable/wechat
变为r/d/a
。AndResGuard
不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件中输入签名信息,可自动重签名并对齐,得到可直接发布的apk)以及对应资源ID的mapping文件。
项目地址:https://github.com/shwenzhang/AndResGuard
2、AndResGuard集成方式
第一种 Gradle集成
①、项目Project/build.gradle文件中增加以下内容
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.3' }}
②、Module/build.gradle文件中增加以下内容
apply plugin: 'com.android.application'apply plugin: 'AndResGuard'android { ...}dependencies { ...}andResGuard { // mappingFile = file("./resource_mapping.txt") mappingFile = null use7zip = true useSign = true // 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字 keepRoot = false whiteList = [ // for your icon "R.drawable.icon" ] compressFilePattern = [ "*.png", "*.jpg", "*.jpeg", "resources.arsc" ] sevenzip { artifact = 'com.tencent.mm:SevenZip:1.2.3' //path = "/usr/local/bin/7za" --- Linux //path = "D:\7za\7za.exe" --- Windows }}参照官方文档有几个问题说明下
mappingFile用于增量更新,保持本次混淆与上次混淆结果一致;uss7zip为true时,useSign必须为true;useSign为true时,需要配置signConfig;whiteList添加在代码内部需要动态获取的资源id;sevenzip可使用artifacr或path,如果两种都设置以path路径为准,path指本地安装的7za(7zip命令行工具)下载路径。
建议下载图中红色框中的即可,当然你也可以下载其他版本,注意的是在win下7Z的安装后如果没有7za.exe的话,可以把7z.exe复制一份改成7za.exe,并配置环境变量
同步后,我们gradle的task任务列表里就会出现混淆任务
双击上图中的选中任务,混淆就会开始,和普通的buidApk任务一样,完成后会弹个框作为提示。混淆后的apk生成在build/output/apk/AndResGuard_*
目录中,官方说法默认会生成4种apk,我们选择签名、压缩、对齐后的apk即可,后缀名是*_signed_7zip_aligned.apk,但我用
该方式并未出现4种apk,只出现3种,没有7zip的包。
增加set sevenzippath=C:\Program Files\7z1700-extra\7za.exe
执行指令为 "%jdkpath%" -jar AndResGuard-cli-1.2.3.jar input.apk -config config.xml -out outapk -signature "%storepath%" "%storepass%" "%keypass%" "%alias%" -7zip "%sevenzippath%" -zipalign "%zipalign%"
修改完成之后我们双击build_apk.bat批处理文件运行
- Android项目集成AndResGuard资源混淆两种方式
- 微信开源工具AndResGuard做Android资源混淆
- AndResGuard资源混淆工具
- 资源混淆工具AndResGuard
- 使用AndResGuard混淆资源文件
- 微信资源混淆AndResGuard原理
- 【Android】开发干货-技术分享之AndResGuard资源混淆的使用
- android插件自定义之多渠道打包插件(支持微信资源混淆andResGuard)
- 微信开源工具AndResGuard-资源混淆工具的使用及注意事项
- AndResGuard资源混肴
- Jar包混淆的两种方式
- Android Studio集成Genymotion的两种方式
- Android集成第三方app的两种方式
- Android实现资源动态加载的两种方式
- Apk的混淆,这里的混淆分为两种代码混淆和资源文件混淆或是通过第三方加固
- Android资源文件混淆
- Android 资源(res)混淆
- Android 资源混淆
- android 多功能自定义画板控件(用于解决特定需求)
- 关于group by 在sql中的应用记录
- 深入学习js之浅谈作用域(变量提升)
- [Revit二次开发]在WPF显示revit的三维视图
- 如何使用ARMS配置tengine的日志监控
- Android项目集成AndResGuard资源混淆两种方式
- Oracle Imp和exp 命令
- JDK动态代理源码例子解析
- 将iOS项目进行子工程化
- coursera《机器学习》吴恩达-week1-02 单一变量的线性回归
- 从hdfs读数据并转为Map格式
- android 内核出现kernel panic的分析
- vue项目搭建步骤
- [k8s]kube-dns架构图解