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

时间:2017-05-20 13:16:14

标签: android android-studio ionic2 proguard android-proguard

我有以下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,但同时混淆其局部变量呢?

enter image description here

1 个答案:

答案 0 :(得分:1)

Proguard已经尽可能地混淆了,通常你提到的是异常。我认为这可能会为你的例子做到这一点

minifyEnabled true

如果您还没有忘记,请不要忘记gradle release build中的if("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER) && !sp.getBoolean("protected",false)) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.huawei_headline).setMessage(R.string.huawei_text) .setPositiveButton(R.string.go_to_protected, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Intent intent = new Intent(); intent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")); startActivity(intent); sp.edit().putBoolean("protected",true).commit(); } }).create().show(); }