Proguard打破phonegap应用程序

时间:2014-02-11 09:43:17

标签: cordova obfuscation proguard

试图模糊我的phonegap应用程序 启动后我正在

367 D / CordovaLog(30913):file:///android_asset/www/cordova.js:第913行:未捕获TypeError:对象[object Object]没有方法'exec'

我想我尝试了网上提到的所有选项,这是我的proguard-project.txt

-keep public class * extends com.phonegap.api.Plugin 
-keep public class org.apache.cordova.** 
-keep class org.apache.cordova.** { *; }
-keep public class * extends org.apache.cordova.CordovaPlugin
-keep public class * extends org.apache.cordova.api.CordovaPlugin
-keep public class * extends com.phonegap.api.Plugin
-keep public class * extends org.apache.cordova.api.Plugin
-keep public class org.apache.cordova.DroidGap
-keep public class org.apache.cordova.**
-keep public class org.apache.**
-keep public class com.kazem.**
-keep public class nl.**
-dontwarn android.webkit.*
-dontwarn org.apache.**
-dontwarn  android.support.v7.widget.**
-dontwarn com.google.android.gms.**
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-keepdirectories
-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 * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}

2 个答案:

答案 0 :(得分:1)

我用过:

-keep public class * extends org.apache.cordova.CordovaPlugin
-keep public class * extends com.phonegap.api.Plugin 
-keep class org.apache.cordova.** { *; }
-dontwarn android.webkit.*

答案 1 :(得分:0)

1)。取消注释project.properties文件中的以下行

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

2).Inside AndroidSDk / tools / proguard / proguard-project.txt添加下面的行,因为我们的项目使用带有JS的WebView,所以我们必须为JavaScript接口类指定完全限定的类名:

-keep public class * extends org.apache.cordova.CordovaPlugin
-keep public class * extends com.phonegap.api.Plugin 
-keep class org.apache.cordova.** { *; }
-dontwarn android.webkit.*

3).Build Android项目。 4)。将“progdard-project.txt”文件从“AndroidSDk / tools / proguard / proguard-project.txt”复制到android文件夹。
5)。导出签名包:右键单击项目&gt; android工具&gt;导出已签名的应用程序包