Android Studio代码混淆设置以及上传mapping文件
2015-10-19 15:25
531 查看
ProGuard
这个ProGuard工具可以通过删除未使用的代码和重命名类、字段和方法与语义模糊的名字来 收缩、优化和混淆你的代码。这个结果导致你生成一个更小型号的 .apk 文件,这样会使别人反向逆推工程更加困难。 因为 ProGuard 让你的应用程序的还原工程更加困难。这个对你而言是十分有用的,当你利用这个应用特点来帮助当你的程序度过一些安全和敏感的检测当你正对你的程序授权时。
ProGuard是集成到Android 开发系统中的,因此你不必手动调用这个应用。ProGuard 只有在你编译运行程序的时候才运作,因此当你在调试模式下编译你的程序的时候,你不需要处理混淆代码。是否有 ProGuard 运行是可以完全由你有选择的,但强烈推荐你去运行它。
混淆
现在网上关于反编译的博客很多了,我在此就不多做介绍了,放上个传送门传送门那么我们已经知道了反编译是如此的简单,我们总不希望自己辛苦写的代码被如此轻易的反编译走,而且这样有可能对公司的服务器留下被攻击的隐患,那么我们就可以使用混淆来保护我们所写的代码
Android studio混淆和Eclipse差不多是大同小异的。
名称 | 作用 |
---|---|
minifyEnabled | 是否开启混淆 |
shrinkResources | 去除无用的resource文件 |
proguardFiles getDefaultProguardFile | 加载混淆配置文件 |
如果按照默认的混淆规则很有可能你的程序会报错,因为混淆了一些方法所以程序运行期间无法找到该方法。所以我们应该自定义一些规则在默认的的混淆文件proguard-project.txt(或自行添加混淆规则proguard-rules.pro)中,
不优化输入的类文件,(如果没有使用该语句,说明要优化,就要指定相关的优化语句,如以下两条语句)
-dontoptimize
指定代码的压缩级别
-optimizationpasses 5
混淆时所采用的算法
-optimizations !code/simplification/arithmetic,!field/,!class/merging/
包明不混合大小写
-dontusemixedcaseclassnames
不去忽略非公共的库类
-dontskipnonpubliclibraryclasses
预校验
-dontpreverify
混淆时是否记录日志
-verbose
保护注解
-keepattributes Annotation
保持哪些类不被混淆
-keep public class * extends android.app.Fragment
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
这句话是指entity包下所有的类及其成员都不混淆;
-keepclasseswithmembernames class com.yuantel.meeting.entity.**{*;}
如果有引用v4包可以添加下面这行
-keep public class * extends android.support.v4.app.Fragment
忽略警告
-ignorewarning
记录生成的日志数据,gradle build时在本项目根目录输出
apk 包内所有 class 的内部结构
-dump class_files.txt
混淆前后的映射 (我是在使用了这条语句后,就在build\outputs\mapping\tencent\release\文件夹下,出现了dump.txt,seeds.txt,usage.txt)
-printmapping mapping.txt
未混淆的类和成员
-printseeds seeds.txt
列出从 apk 中删除的代码
-printusage unused.txt (dump.txt)
mapping文件
mapping.txt 列出了原始的类,方法和字段名与混淆后代码间的映射。这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码。这里下载符号表工具。mapping.txt文件在module的根目录下,即使制定了目录也会在module的根目录下。我使用的是gradle版本2.2.1 和 Android plugin version 1.3在Android studio中。
相关文章推荐
- android使用shape做selector按钮按下和弹起的动画
- Android屏幕适配全攻略(最权威的官方适配指导)
- MpAndroidChart各种图表我都用了一遍,并且已经熟练掌握。总结我的Demo
- 豆浆机改装记(4): Android BLE 编码正式入门
- Android Lint静态检查
- 浅谈Android中 Handler、Looper、Message不得不说的秘密
- android之Toast工具类
- android使用ViewPager实现画廊效果
- android中LinearGradient线型渐变
- Android笔记(四十) Android中的数据存储——SQLite(二) insert
- android 利用gradle构建工程
- Android中Sharedpreferences跨进程时数据刷新不及时
- android之view类的XML属性相关方法及说明
- Gzip方式数据请求以及解码
- android日志工具类
- android xmlns:tools用法
- android 去除title bar 标题栏 action bar
- android测试参考
- Android listview addHeaderView 和 addFooterView 详解
- 豆浆机改装记(3): Android BLE 蓝牙开发略解