我正在使用 Eclipse 和最新的 Android 版本中包含的 ProGuard,试图混淆我的 android 应用程序,但它不断删除重要的方法。我尝试通过键入各种排除项来编辑 proguard.cfg 文件以保留方法,例如以下内容
保持公共无效我的方法(字符串我的字符串)
保持公共类 myInterface
保持公共类 com.help.app.myInterface.**
但这些都不起作用。当我查看 usage.txt 文件时,方法仍然存在,我的应用程序无法运行。我不明白我做错了什么。我会很感激一些帮助。
这是我的班级的样子
package com.whoiam.whatido;
public class MainClass extends Activity {
......
public void onCreate(Bundle savedInstanceState) {
....
}
....
....
final class myInterface {
myInterface() {}
public void dontDeleteMePlease(String message) {
....
}
public void leaveMeBe(String message) {
...
}
.....
}
final class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view) {
....
}
}
这是我的 proguard.cfg 文件的示例(除了靠近中间的三个“保持”之外,它是默认设置):
-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
-keep public class com.whoiam.whatido.myInterface.**
-keep public class com.whoiam.whatido.myInterface.** {
<methods>;}
-keep public void leaveMeBe(String message);
-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 *; }
我也试过 -dontshrink 因为我真的不希望我的代码被削减......但无论如何它都会缩小。我也连续几个小时尝试了尽可能多的变化,但没有什么能挽救我的方法。
如何从 ProGuard 的愤怒中拯救我的“donDontDeleteMePlease”?我需要在 proguard.cfg 文件中输入什么才能让它像我一样?