安装包立减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集成

  1. 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'
    }
    }
  2. 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中

  1. Windows

    gradlew.bat resguardRelsese
  2. OS X or Linux
    ./gradlew reguardRelease

注意问题

  1. mappingFile用于增量更新,保持本次混淆与上次混淆结果一致;
  2. uss7zip为true时,useSign必须为true;
  3. useSign为true时,需要配置signConfig;
  4. whiteList添加在代码内部需要动态获取的资源id;
  5. 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库的更多相关文章

  1. Android 资源混淆 AndResGuard MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. 转:美团Android资源混淆保护实践

    转自:http://tech.meituan.com/mt-android-resource-obfuscation.html 前言 Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被 ...

  3. Android项目代码混淆

    http://coolshell.info/blog/2015/03/Android-studio-prefrence.html 什么是Gradle Gradle是一种依赖管理工具,基于Groovy语 ...

  4. Android 代码混淆 混淆方案

    本篇文章:自己在混淆的时候整理出比较全面的混淆方法,比较实用,自己走过的坑,淌出来的路.请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地 ...

  5. Android Stuido代码混淆

    一.Android Studio 代码混淆基本配置首先我们要在build.gradle里设置 miifyEnabled 里改为true,表示可以混淆 proguardFiles getDefaultP ...

  6. Android Studio 代码混淆(你真的会混淆吗)

    一.前言 今天要打包新产品,突然忘了混淆的参数是怎么写的了,虽然之前也混淆过,可是具体配置的参数代码有些记不起来了,因此决定花点时间写篇博客记录一下,方便以后查找和自己的记忆. 二.Android S ...

  7. Android ProGuard代码混淆技术详解

    前言     受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI ...

  8. android 视频录制 混淆打包 之native层 异常的解决

    原文地址:http://www.cnblogs.com/linguanh/    (滑至文章末,直接看解决方法) 问题起因: 前5天,因为项目里面有个类似 仿微信 视频录制的功能, 先是上网找了个 开 ...

  9. 77.Android之代码混淆

    转载:http://www.jianshu.com/p/7436a1a32891 简介 作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使 ...

随机推荐

  1. .NET处理Json的几种方式

    序列化里的xml,soap,binary在上一篇文章里面已经说过了,这篇主要说json. json是目前非常流行的一种序列化数据的方式,很多api都采用的是json,结构简洁,容易理解,适用性强,逐渐 ...

  2. sqli-labs学习笔记 DAY5

    DAY 5 sqli-labs lesson 26a 闭合符号为单引号和括号,并且不回显错误,如果服务器是Linux,尝试%a0代替空格,这里尝试使用布尔型 数据库名长度:?id=1')&&a ...

  3. git查看添加删除远程仓库

    查看远程仓库 git remote -v 删除远程仓库 git remote remove origin 添加远程仓库 git remote add origin 仓库地址 关联远程分支 重新关联远程 ...

  4. PAT 1001 A+B Fotmat

    源码 1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calcula ...

  5. Calculator项目的过程及感受

    1.将Calculator项目传到Github上的链接地址:https://github.com/sonnypp/object-oriented/tree/master/Calculator 2.本次 ...

  6. 【CSAPP笔记】8. 汇编语言——数据存储

    下面介绍一些C语言中常见的特殊的数据存储方式,以及它们在汇编语言中是如何表示的. 数组 数组是一种将标量数据聚集成更大数据类型的方式.实现数组的方式其实十分简单,也非常容易翻译成机器代码.C语言的一个 ...

  7. springboot maven

    更多信息请从官网获取https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE 1.parent基于自己项目而非spring-boot-starter- ...

  8. python学习笔记05:贪吃蛇游戏代码

    贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下代码即可: #!/usr/bin/env python import pygam ...

  9. Head First Java & 构造函数

        java继承中对构造函数是不继承的,只是调用(隐式或显式). ----------------------------------------------------------------- ...

  10. Java网络编程一:基础知识详解

    网络基础知识 1.OSI分层模型和TCP/IP分层模型的对应关系 这里对于7层模型不展开来讲,只选择跟这次系列主题相关的知识点介绍. 2.七层模型与协议的对应关系 网络层   ------------ ...