我有一个使用下面的 Proguard 配置的 Ant 构建,它是由“android”命令行工具生成的,看起来很简单。但是当我使用这个脚本构建应用程序时,应用程序在设备上执行时会爆炸,并出现一系列空指针异常(混淆过程以某种方式向代码添加错误)。为了修复应用程序,我只是重建它而不通过 Proguard 运行它。
您会向在 Android 应用程序中使用 Proguard 的人提供什么建议,以便 a) 应用程序在合理程度上得到优化和混淆,但 b) 功能完整性不会受到损害?
-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 * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-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 *;
}