Android资源混淆 + 混淆忽略 .so库
安装包立减1M--微信Android资源混淆打包工具
http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=208135658&idx=1&sn=ac9bd6b4927e9e82f9fa14e396183a8f#rd
AndResGuard
https://github.com/shwenzhang/AndResGuard/blob/master/README.zh-cn.md
美团Android资源混淆保护实践
http://tech.meituan.com/mt-android-resource-obfuscation.html
AndResGuard资源混淆用法
http://www.qingpingshan.com/rjbc/az/171398.html
关于AndResGuard
AndResGuard是一个帮助你缩小APK大小的工具,他的原理类似Java Proguard,但是只针对资源。他会将原本冗长的资源路径变短,例如将res/drawable/wechat变为r/d/a。
AndResGuard不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件中输入签名信息,可自动重签名并对齐,得到可直接发布的apk)以及对应资源ID的mapping文件。
项目地址: https://github.com/shwenzhang/AndResGuard
Gradle集成
- Project/build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.1.14'
}
} - 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.1.14'
//path = "/usr/local/bin/7za" --- Linux
//path = "D:\7za\7za.exe" --- Windows
}
}
如何使用
用法1:

用法2:
在Android Gradle Terminal中
- Windows
gradlew.bat resguardRelsese
- OS X or Linux
./gradlew reguardRelease
注意问题
- mappingFile用于增量更新,保持本次混淆与上次混淆结果一致;
- uss7zip为true时,useSign必须为true;
- useSign为true时,需要配置signConfig;
- whiteList添加在代码内部需要动态获取的资源id;
- sevenzip可使用artifacr或path,path指本地安装的7za(7zip命令行工具)。
Android studio 混淆打包时如何忽略依赖库中的第三方.so文件
http://blog.csdn.net/u011907407/article/details/55510379
在app项目中直接忽略library中的.so文件
在app的proguard-rules.pro忽略依赖库中的文件写法如下:
-libraryjars ../XXX(此处为library名称)/src/main/jniLibs/armeabi/xxxxx.so
-libraryjars ../XXX(此处为library名称)/src/main/jniLibs/armeabi-v7a/xxxxx.so
-libraryjars ../XXX(此处为library名称)/src/main/jniLibs/x86/xxxxx.so
同理依赖库中jar包在app 中忽略混淆的写法
-libraryjars ../XXX(此处为library名称)/libs/xxx.jar
-libraryjars ../XXX(此处为library名称)/libs/xxx.jar
最后温馨提醒:
shrinkResources true
(该属性为打包时是否自动删除无用的资源与代码,慎用!!据说有人因为这个属性导致app崩溃..此处不详细讨论..)
Android资源混淆 + 混淆忽略 .so库的更多相关文章
- Android 资源混淆 AndResGuard MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 转:美团Android资源混淆保护实践
转自:http://tech.meituan.com/mt-android-resource-obfuscation.html 前言 Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被 ...
- Android项目代码混淆
http://coolshell.info/blog/2015/03/Android-studio-prefrence.html 什么是Gradle Gradle是一种依赖管理工具,基于Groovy语 ...
- Android 代码混淆 混淆方案
本篇文章:自己在混淆的时候整理出比较全面的混淆方法,比较实用,自己走过的坑,淌出来的路.请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地 ...
- Android Stuido代码混淆
一.Android Studio 代码混淆基本配置首先我们要在build.gradle里设置 miifyEnabled 里改为true,表示可以混淆 proguardFiles getDefaultP ...
- Android Studio 代码混淆(你真的会混淆吗)
一.前言 今天要打包新产品,突然忘了混淆的参数是怎么写的了,虽然之前也混淆过,可是具体配置的参数代码有些记不起来了,因此决定花点时间写篇博客记录一下,方便以后查找和自己的记忆. 二.Android S ...
- Android ProGuard代码混淆技术详解
前言 受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI ...
- android 视频录制 混淆打包 之native层 异常的解决
原文地址:http://www.cnblogs.com/linguanh/ (滑至文章末,直接看解决方法) 问题起因: 前5天,因为项目里面有个类似 仿微信 视频录制的功能, 先是上网找了个 开 ...
- 77.Android之代码混淆
转载:http://www.jianshu.com/p/7436a1a32891 简介 作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使 ...
随机推荐
- Java那些事-泛型通配符
Java的类型通配符,可以出现在类.方法上面.最常用的方式就是集合类,例如List,Set等类上面. 通配符类型 有泛型参数 List 有无类型标识 List< ? > 有通用的标识 Li ...
- Google hack语法
基础语法: 1.语法说明: inurl: 在url地址栏中显示的信息页面 intext: 显示在正文信息中的内容页面 site: 限制显示你某个域名的所有页面 filetype: 搜索文件的后缀或者扩 ...
- Acer 4750G安装OS X 10.9 DP4(简版)
一.下载os x 10.9懒人版:http://bbs.pcbeta.com/viewthread-1384504-1-1.html 二.用系统自带的磁盘分区工具划分一个5G左右的临时安装盘(新建分区 ...
- Class-dump 安装和使用记录(导出应用的头文件)
class-dump算是逆向工程中一个入门级的工具,可以很方便的导出程序头文件,可以轻松的了解程序结构方便逆向.安装包下载地址:http://stevenygard.com/projects/clas ...
- 2017年软件工程作业-“Hello World!”团队互评beta版本
A.欢迎来怼——博客园安卓APP(测评人:刘淑霞) 博客地址:http://www.cnblogs.com/liusx0303/p/7905928.html B.Thunder——爱阅app(测评人: ...
- 20135234mqy-——信息安全系统设计基础第六周学习总结
处理器体系结构 4.1 Y86指令集体系结构 4.1.1程序员可见状态 Y86程序中的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态. 4.1.2 Y86指令 4个指令:irmovl, ...
- iOS自学-混合编程
OC调用swift,引入头文件 #improt "工程名字-swift.h" swift调用OC,在桥梁文件里面引入OC文件 的头文件 尽情混合编程吧...
- Sprint7
进展:根据昨天查到的资料,今天开始编写闹钟部分的代码,主要实现了闹钟添加事件显示时间主界面.
- <<梦断代码>>读后感
<梦断代码>中对软件工程所面临的种种困难与艰难的描述,即便再过5年读也许都不过时.因为正如原作者所说,书中描写的是一队人马并肩扛起代码大石,虽历经磨难仍欲将其推上山顶的故事,而正是这种故事 ...
- 剑指offer:二位数组中的查找
准备找实习期间,复习一下数据相关内容,刷刷题. 题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样 ...