android 混淆打包

ProGuard是一个压缩、优化和混淆Java字节码文件的免费的工具,它能够删除无用的类、字段、方法和属性。能够删除没用的注释,最大限度地优化字节码文件。它还能够使用简短的无心义的名称来重命名已经存在的类、字段、方法和属性。这样作的结果是更小的jar、apk……,而且更难被反编译。java

Android的编译环境中已默认集成了Proguard,但只有在release模式下编译才会运行。此状态下,它会在用到ant release或是Eclipse的导出向导时,自动检查proguard.config属性是否已设置,若是设置了,ProGuard就会在打成包以前,自动处理程序的字节码。Debug模式下,之因此不触发,是由于混淆后的代码会使得调试变得更加累赘。android

前面已经进行了签名打包,接下来windows

proguard.config放在项目的根目录下app

在ant.properties再添加proguard.config=proguard.cfg ide

在project.properties里添加proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt工具

注意:在运行过程当中可能会出现
D:\Program Files\android-sdk-windows\tools\ant\build.xml:871: Please correct the above warnings first.优化

而致使BUILD FAILEDui

proguard.config里添加-dontwarn便可成功调试

proguard.config的内容为:code

-keep public class <MyClass> 
-dontwarn
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-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 com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembernames class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembernames class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

 

报错:

解决:添加ant.properties(不可缺乏)

相关文章
相关标签/搜索