Android Proguard原理及使用方法
2015-10-12 15:57
423 查看
1. Android Proguard原理
引用一下developer.android.com 的原文:
The ProGuard tool
shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure names. The result is a smaller sized
to reverse engineer[1].
1.1 Proguard 的目的
shrinks, optimizes, and obfuscates your code。 压缩,优化,使你的代码混乱。可以使apk很难被反编译,保护源代码。同时能够就减小包大小。
1.2 Proguard的实现方法
a. 删除无用代码
b. 用语义混乱的名字来重命名类,变量和方法,达到看不懂的目的。反编译过代码的都知道,混淆后,代码基本一坨子a,b,c这样的命名组成的。
1.3 Proguard之后的apk
具有两个特点:a.包更小 b.反编译之后,混淆后的代码里边的变量,类名字都是a,b,c神马的,基本看不懂,可以保护源代码。
1.4 Proguard 什么时候使用
基本打release包得时候会用,保护源代码。
debug的时候看个人喜好。
2. Android Proguard使用方法
Manual:http://proguard.sourceforge.net/
我们这里简单说一下keep的使用方法吧。开发中比较实用。
2.1 overview of keep opitons
2.2 常用的keep
参见文章:http://blog.csdn.net/banketree/article/details/41928175
由于转载麻烦,这里加了传送门了。
2.3 proguard 的一些妙用
我们可以利用这一特性解决debug日志的问题,在proguard.cfg中添加
这样,release情况下,就可以通过混淆来干掉日志相关代码,也就不用频繁的改flag变量了。挺实用。
就先写到这里。希望对大家有用。
参考文献:
1. http://developer.android.com/tools/help/proguard.html#decoding
2. http://www.trinea.cn/android/proguard-grammar/
3. http://blog.csdn.net/banketree/article/details/41928175
引用一下developer.android.com 的原文:
The ProGuard tool
shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure names. The result is a smaller sized
.apkfile that is more difficult
to reverse engineer[1].
1.1 Proguard 的目的
shrinks, optimizes, and obfuscates your code。 压缩,优化,使你的代码混乱。可以使apk很难被反编译,保护源代码。同时能够就减小包大小。
1.2 Proguard的实现方法
a. 删除无用代码
b. 用语义混乱的名字来重命名类,变量和方法,达到看不懂的目的。反编译过代码的都知道,混淆后,代码基本一坨子a,b,c这样的命名组成的。
1.3 Proguard之后的apk
具有两个特点:a.包更小 b.反编译之后,混淆后的代码里边的变量,类名字都是a,b,c神马的,基本看不懂,可以保护源代码。
1.4 Proguard 什么时候使用
基本打release包得时候会用,保护源代码。
debug的时候看个人喜好。
2. Android Proguard使用方法
Manual:http://proguard.sourceforge.net/
我们这里简单说一下keep的使用方法吧。开发中比较实用。
2.1 overview of keep opitons
2.2 常用的keep
参见文章:http://blog.csdn.net/banketree/article/details/41928175
由于转载麻烦,这里加了传送门了。
2.3 proguard 的一些妙用
我们可以利用这一特性解决debug日志的问题,在proguard.cfg中添加
-assumenosideeffects class android.util.Log { public static *** d(...); public static *** v(...); }
这样,release情况下,就可以通过混淆来干掉日志相关代码,也就不用频繁的改flag变量了。挺实用。
就先写到这里。希望对大家有用。
参考文献:
1. http://developer.android.com/tools/help/proguard.html#decoding
2. http://www.trinea.cn/android/proguard-grammar/
3. http://blog.csdn.net/banketree/article/details/41928175
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories