android 代码混淆

来源:互联网 发布:如何在手机开淘宝网店 编辑:程序博客网 时间:2024/06/11 11:32

工程根目录下有两个文件,一个是proguard-project.txt(低版本的SDK文件名是proguard.cfg),另一个是project.properties。混淆的方法很简单:在project.properties文件中加入一行:proguard.config=proguard-project.txt。

但是这个时候导出的时候会有一堆报错,说找不到android-support-v4这个jar包,这时候就需要我们手动去proguard-project.txt文件中为其指定了,在proguard-project.txt文件中添加以下内容:

-libraryjars ./libs/android-support-v4.jar-dontwarn android.support.v4.** -dontwarn **CompatHoneycomb-dontwarn **CompatHoneycombMR2-dontwarn **CompatCreatorHoneycombMR2-keep interface android.support.v4.app.** { *; }-keep class android.support.v4.** { *; }-keep public class * extends android.support.v4.**-keep public class * extends android.app.Fragment

其实proguard-project.txt这个文件中还是有很多可以自定义的属性的,以下仅供参考:

-optimizationpasses 5                                                           # 指定代码的压缩级别-dontusemixedcaseclassnames                                                     # 是否使用大小写混合-dontskipnonpubliclibraryclasses                                                # 是否混淆第三方jar-dontpreverify                                                                  # 混淆时是否做预校验-verbose                                                                        # 混淆时是否记录日志-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*        # 混淆时所采用的算法-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              # 保持哪些类不被混淆-keepclasseswithmembernames class * {                                           # 保持 native 方法不被混淆    native <methods>;}-keepclasseswithmembers class * {                                               # 保持自定义控件类不被混淆    public <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 * {                                                      # 保持枚举 enum 类不被混淆    public static **[] values();    public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable {                                # 保持 Parcelable 不被混淆  public static final android.os.Parcelable$Creator *;}-keep class MyClass;                                                            # 保持自己定义的类不被混淆


原创粉丝点击