Proguard cordova应用程序
安全审计团队要求我们在我们的一个应用程序上对Cordova Java代码运行proguard 我们通过对构建进行以下修改来启用proguard:Proguard cordova应用程序,cordova,proguard,cordova-plugin-proguard,Cordova,Proguard,Cordova Plugin Proguard,安全审计团队要求我们在我们的一个应用程序上对Cordova Java代码运行proguard 我们通过对构建进行以下修改来启用proguard: 要使用ant构建项目,请运行android更新项目-p-t# --子项目在平台/android/文件夹上。创建build.xml并更新project.properties 在project.properties中取消注释#proguard.config=${sdk.dir}/tools/proguard/proguard android.txt:pro
android更新项目-p-t#
--子项目
在平台/android/文件夹上。创建build.xml
并更新project.properties
project.properties
中取消注释#proguard.config=${sdk.dir}/tools/proguard/proguard android.txt:proguard project.txt
-dontwarn javax.naming.*
-keepattributes封闭方法
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
public *;
}
ant-release
编译,并期望不会得到错误E/AndroidRuntime( 2195): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.somecompany.someapp/com.somecompany.someapp.someapp}: java.lang.RuntimeException: Failed to create webview.
E/AndroidRuntime( 2195): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
E/AndroidRuntime( 2195): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
E/AndroidRuntime( 2195): at android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime( 2195): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime( 2195): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 2195): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime( 2195): at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime( 2195): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 2195): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 2195): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime( 2195): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime( 2195): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 2195): Caused by: java.lang.RuntimeException: Failed to create webview.
E/AndroidRuntime( 2195): at org.a.a.w.a(Unknown Source)
E/AndroidRuntime( 2195): at org.a.a.e.e(Unknown Source)
E/AndroidRuntime( 2195): at org.a.a.e.d(Unknown Source)
E/AndroidRuntime( 2195): at org.a.a.e.a(Unknown Source)
E/AndroidRuntime( 2195): at org.a.a.e.a(Unknown Source)
E/AndroidRuntime( 2195): at com.somecompany.someapp.someapp.onCreate(Unknown Source)
E/AndroidRuntime( 2195): at android.app.Activity.performCreate(Activity.java:5231)
E/AndroidRuntime( 2195): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime( 2195): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
E/AndroidRuntime( 2195): ... 11 more
E/AndroidRuntime( 2195): Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, class org.a.a.p]
E/AndroidRuntime( 2195): at java.lang.Class.getConstructorOrMethod(Class.java:472)
E/AndroidRuntime( 2195): at java.lang.Class.getConstructor(Class.java:446)
E/AndroidRuntime( 2195): ... 20 more
E/AndroidRuntime(2195):java.lang.RuntimeException:无法启动活动组件信息{com.somecompany.someapp/com.somecompany.someapp.someapp}:java.lang.RuntimeException:无法创建webview。
E/AndroidRuntime(2195):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
E/AndroidRuntime(2195):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
E/AndroidRuntime(2195):位于android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime(2195):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime(2195):位于android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(2195):位于android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(2195):位于android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime(2195):位于java.lang.reflect.Method.Invokenactive(本机方法)
E/AndroidRuntime(2195):位于java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(2195):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime(2195):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(2195):位于dalvik.system.NativeStart.main(本机方法)
E/AndroidRuntime(2195):原因:java.lang.RuntimeException:未能创建webview。
E/AndroidRuntime(2195):org.a.a.w.a(未知来源)
E/AndroidRuntime(2195):org.a.a.E.E(未知来源)
E/AndroidRuntime(2195):org.a.a.E.d(未知来源)
E/AndroidRuntime(2195):org.a.a.E.a(未知来源)
E/AndroidRuntime(2195):org.a.a.E.a(未知来源)
E/AndroidRuntime(2195):位于com.somecompany.someapp.someapp.onCreate(未知来源)
E/AndroidRuntime(2195):位于android.app.Activity.performCreate(Activity.java:5231)
E/AndroidRuntime(2195):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime(2195):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
E/AndroidRuntime(2195):。。。还有11个
E/AndroidRuntime(2195):由以下原因引起:java.lang.NoSuchMethodException:[class android.content.Context,class org.a.a.p]
E/AndroidRuntime(2195):在java.lang.Class.getConstructorOrMethod(Class.java:472)中
E/AndroidRuntime(2195):位于java.lang.Class.getConstructor(Class.java:446)
E/AndroidRuntime(2195):。。。20多
我们只需关闭proguard,应用程序就会编译并运行良好
以下是我们的问题:
我们如何在编译时出现这个问题?
B.如何更改构建配置以修复此错误并使用Proguard混淆代码?为避免混淆cordova类,请添加
-保留公共类org.apache.cordova.*{*;}
在proguard project.txt中。我建议修改您的构建脚本,使用
-printconfiguration
和-printmapping
选项运行proguard(请参阅),这样您就可以了解哪些类实际上已损坏,以及是否实际使用了您期望的配置(我的第一次打赌不是这样).使用cordova plugin proguard此文件是什么?它位于何处?