Proguard - 尽可能混淆 Android 应用程序

Proguard - Obfuscate Android application as much as possible

我有以下 Android 申请:

$ git clone https://github.com/zeuscronos/CallTheDog.git
$ cd CallTheDog/
$ npm install
$ ionic platform add android
$ cp __temp/* platforms/android/
$ ionic build android --release
$ adb install platforms/android/build/outputs/apk/android-release.apk

Proguard配置文件为:

platforms/android/proguard-rules.pro

你在这里在线:

https://github.com/zeuscronos/CallTheDog/blob/master/__temp/proguard-rules.pro

现在它的内容是:

-keep public class com.ionicframework.** { *; }
-keep public class org.apache.cordova.** { *; }
-keep public class io.ionic.keyboard.** { *; }
-keep public class mx.ferreyra.callnumber.** { *; }
-dontshrink

因为它现在没有做任何混淆。

我的问题是:

1- 如何配置这些 Proguard 规则以尽可能 obfuscate

2-我怎样才能keep the name of a method(有时需要保持整个应用程序的一致性)但同时obfuscating里面的内容如local variables等?

例如,看下图,如果我想保留方法的名称:executecallPhone 但同时混淆其局部变量怎么办?

Proguard已经尽可能混淆了,通常你说的都是异常。我认为这可能适用于您的示例

-keepclassmembers class mx.ferreyra.callnumber.CFCallNumber { 
    boolean execute(java.lang.String, ...rest of signature);
    void callPhone(org.json.JSONArray);
}

如果您还没有 gradle 发布版本,请不要忘记 minifyEnabled true