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
等?
例如,看下图,如果我想保留方法的名称:execute
和 callPhone
但同时混淆其局部变量怎么办?
Proguard已经尽可能混淆了,通常你说的都是异常。我认为这可能适用于您的示例
-keepclassmembers class mx.ferreyra.callnumber.CFCallNumber {
boolean execute(java.lang.String, ...rest of signature);
void callPhone(org.json.JSONArray);
}
如果您还没有 gradle 发布版本,请不要忘记 minifyEnabled true
。
我有以下 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
等?
例如,看下图,如果我想保留方法的名称:execute
和 callPhone
但同时混淆其局部变量怎么办?
Proguard已经尽可能混淆了,通常你说的都是异常。我认为这可能适用于您的示例
-keepclassmembers class mx.ferreyra.callnumber.CFCallNumber {
boolean execute(java.lang.String, ...rest of signature);
void callPhone(org.json.JSONArray);
}
如果您还没有 gradle 发布版本,请不要忘记 minifyEnabled true
。