zoukankan      html  css  js  c++  java
  • Android项目增加混淆

     主要介绍向Android项目中添加混淆功能

    增加混淆的原因

    1. 提高安全性,增加反编译的难度
    2. 减少APK的文件大小

    实践

    混淆的配置

    一般情况下,app module 的 build.gradle 文件默认会有如下结构:

    android {
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }

    因为开启混淆会使编译时间变长,所以debug模式下不应该开启。我们需要做的是: 

    1. releaseminifyEnabled的值改为true,打开混淆;
    2. 添加自定义的混淆规则

    修改后文件内容如下:

    buildTypes {
        release {
            minifyEnabled true //开启混淆
            proguardFiles fileTree('prog').asList().toArray()
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    } 

    第二行是表示release下

    第三行表示开启混淆

    第四行表示文件夹prog下所有的文件都作为自定义混淆的配置文件加载;

    这个是学习到的新语法。通过fileTree('prog').asList().toArray() 返回文件夹下所有的文件数组。

    第五行表示加载默认的文件proguard-android.txt 和 proguard-rules.pro。

    其中getDefaultProguardFile('proguard-android.txt') 表示的是位于 SDK 的 tools/proguard/ 文件夹中的 proguard-android.txt,由Google官方提供的的默认的混淆规则。

    注意:SDK中提供的默认的混淆配置文件,里面包含了常见的混淆屏蔽规则,所以在添加自定义规则的时候,先去默认的文件中查看是否已经存在,避免重复。

    在向proguard-rules.pro文件中添加混淆规则的时候,不要与SDK提供的proguard-android.txt中的规则重复。其实proguard-android.txt里面已经包含绝大部分的常见的规则。

    参考 

    • /Users/XXX/Library/Android/sdk/tools/proguard/proguard-android.txt
  • 相关阅读:
    页面加载完成前的loading加载效果
    javascript数组常用的遍历方法
    JavaScript的值传递和引用传递
    操作iframe的一些方法
    函数依赖与数据库范式
    微信分享到朋友圈
    计算机原理基础-原反补
    async eachSeries如何按序列执行下去
    使用 VLOOKUP、INDEX 或 MATCH 查找值
    编码问题
  • 原文地址:https://www.cnblogs.com/zhou-guobao/p/proguard-android.html
Copyright © 2011-2022 走看看