您的位置:首页 > 其它

Proguard

2016-01-24 00:51 337 查看
启用Proguard(使用Gradle编译)

在build.gradle文件中使用minifyEnabled属性来启用或禁用Proguard.如:

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

其中的getDefaultProguardFile('proguard-android.txt')这个函数用来获取Android
SDK中tools/proguard/文件夹下的ProGuard的默认配置。另外Android Studio在模块的根目录下添加了 proguard-rules.pro文件,以便开发者为当前模块添加自定义的ProGuard规则。

配置ProGuard

有些特殊的情况不能被混淆,如:
AndroidManifest.xml文件中引用的类

JNI中调用到的方法
动态引用的方法和变量
否则会在运行时找不到这些类或方法。
可以通过在ProGuard配置文件中添加 -keep来避免被混淆,如:

-keep
public class
<MyClass>
 更多的命令和选项请参考ProGuard
Manual .

解密混淆后的堆栈

ProGuard运行时会生成mapping.txt文件,显示混淆前后的类的比对。

可以使用 <sdk_root>/tools/proguard/ 文件夹下的 retrace.bat(Linux
or Mac OS X 中是 retrace.sh )来将混淆后的堆栈转换为可读的信息。使用方法如下:
retrace.bat|retrace.sh
[-verbose] mapping.txt
[<stacktrace_file>]
如:

retrace.bat
-verbose mapping.txt obfuscated_trace.txt

对已发布的应用程序的调试考虑

为防止mapping.txt文件被覆盖,需要为发布的每一个版本保存该文档以便debug时定位。如通过添加版本号来修改文件的名字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: