我的应用程序有很多活动,也使用本机库。使用 Eclipse 生成的默认 ProGuard 配置,ProGuard 会删除很多东西 - OnClick 方法、静态成员、我的本机库使用的回调方法...是否有一种简单的方法来指示 ProGuard 不要从我的包中删除任何内容?删除一些东西只能节省大约 2.5% 的应用程序大小,但会完全破坏我的应用程序。在 ProGuard 配置中逐类配置、测试和维护它会很痛苦。
EDIT这个答案已经有 10 年历史了——它可能不适用于较新的 proguard 版本。
我认为您至少需要添加这些标志(修改您个人的包名称):
-keep class javax.** { *; }
-keep class org.** { *; }
-keep class twitter4j.** { *; }
另外,添加这些标志:
-dontshrink
-dontoptimize
-dontpreverify
这是我的 Proguard.cfg 的整个配置文件:
-dontshrink
-dontoptimize
-dontpreverify
-verbose
-dontwarn javax.management.**
-dontwarn java.lang.management.**
-dontwarn org.apache.log4j.**
-dontwarn org.apache.commons.logging.**
-dontwarn org.slf4j.**
-dontwarn org.json.**
-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
-keep class javax.** { *; }
-keep class org.** { *; }
-keep class twitter4j.** { *; }
-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 *;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)