Android_混淆_基本介绍(1)

前言:

  项目进行有一定规模了,需要加上混淆了。但是之前,工程没有加过混淆,担忧加上会引入不可控的BUG,所以趁这次机会对混淆进行一次系统的学习,写了些笔记。该模块结束了,这里就将笔记整理一下。

  笔记有三篇,分别为:基本介绍(1),混淆规则(2),常用混淆(3)。不多说,开始第一篇


1,开启混淆

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

以上分别为:debug方式开启和release方式开启

只要开启了混淆,系统默认是全部文件都进行混淆,但是,有一些文件经过混淆,会造成app的崩溃。而Proguard文件就是确定哪些文件不进行混淆的文件

2,Proguard基本介绍

Proguard能对Java类的代码进行,压缩、优化、混淆、预检;淆
1. 压缩(Shrink): 用于检测和删除没有使用的类,字段,方法和属性。
2. 优化(Optimize): 对字节码进行优化,并且移除无用指令。
3. 混淆(Obfuscate): 使用a,b,c等无意义的名称,对类,字段和方法进行重命名。
4. 预检(Preveirfy): 主要是在Java平台上对处理后的代码进行预检。
流程如下:



3,常用去混淆模块 和 {原因}

1,实体类 {Json文件解析}
2,第三方包 {对应有部分内容,不能被混淆}
3,与js交互调用的类 {具有基于命名的协议,不能被混淆}
4,反射相关的类 {具有基于命名的协议,不能被混淆}
5,Jni调用的类 {具有基于命名的协议,不能被混淆}
6,Manifest内配置的量 {具有基于命名的协议,不能被混淆}(例如:Activity、Service等)

4,Proguard配置,而生成的文件


文件对应的作用

mapping.txt —> 表示混淆前后代码的对照表,这个文件非常重要。
如果你的代码混淆后会产生bug的话,log提示中是混淆后的代码,希望定位到源代码的话就可以根据mapping.txt反推。
每次发布都要保留它方便该版本出现问题时调出日志进行排查,它可以根据版本号或是发布时间命名来保存或是放进代码版本控制中
dump.txt —> 描述apk内所有class文件的内部结构
seeds.txt —> 列出了没有被混淆的类和成员
usage.txt —> 列出了源代码中被删除在apk中不存在的代码
5,日志反混淆(自己尝试没啥用)

运行工具,我的路径:D:\study_adt_studio\sdk\tools\proguard\bin\proguardgui.bat


混淆规则,查看下一篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值