您的位置:首页 > 移动开发 > Android开发

Android混淆打包

2014-05-05 17:21 141 查看
混淆原理:类名和方法名的映射转化,混淆是可逆的(算法很多,不易逆)。

混淆好处:混淆代码,增强安全性;减少代码体积,提高运行效率。

混淆打包配置文件:proguard-android.txt, proguard-project.txt

ADT会在project.properties生成相应的配置(默认被注释):proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

不混淆情况:

(1)四大组件(Activity、Service、Receiver、Provider)

(2)native方法

proguard.cfg配置项目:

-optimizationpasses 5 设置混淆的压缩比率(5~7)

-dontusemixedcaseclassnames 不使用混淆大小写的类名

-dontskipnonpubliclibraryclasses 如果应用程序引用了jar包,并且想混淆jar包里面的class

-dontpreverity

-verbose 混淆后产生映射文件

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  混淆采用的算法

-keep public class * extends android.app.Activity  所有activity子类不混淆(抽取onCreate中的代码,提高混淆的程度)

-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  同上

-keepclasseswithmembernames class * {

    native <methods>;    所有native的方法不混淆

}

-keepclasseswithmembers class * {

    pulbic <init>(android.content.Context, android.util.AttributeSet);    构造方法不混淆

}

-keepclasseswithmembers class * {

    public <init>(android.content.Context, android.util.AttributeSet, int);



-keepclassmembers class * extends android.app.Activity {

    public void *(android.view.View);

}

-keepclassmembers enum * {

    public static **[] values();

    public static ** valueOf(java.lang.String);

}

-keep class * implement android.os.Parcelable {

    public static final android.os.Parcelable&Creator *;

}

参考资料:http://proguard.sourceforge.net/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: