升级cordova应用程序时出错

Sur*_*all 10 java android phonegap-plugins cordova

我正在尝试将cordgap Android应用程序从cordova 3.5.0更新到cordova 5.1.1,因为存在安全问题.当我启动应用程序时,我收到以下错误,但我无法理解它们来自哪里.你能建议在哪里调查吗?

W/System.err( 1672): org.json.JSONException: Value PluginManager at 0 of type java.lang.String cannot be converted to int
W/System.err( 1672):    at org.json.JSON.typeMismatch(JSON.java:100)
W/System.err( 1672):    at org.json.JSONArray.getInt(JSONArray.java:357)
W/System.err( 1672):    at org.apache.cordova.CordovaBridge.promptOnJsPrompt(CordovaBridge.java:131)
W/System.err( 1672):    at org.apache.cordova.engine.SystemWebChromeClient.onJsPrompt(SystemWebChromeClient.java:119)
W/System.err( 1672):    at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:655)
W/System.err( 1672):    at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 1672):    at android.os.Looper.loop(Looper.java:137)
W/System.err( 1672):    at android.app.ActivityThread.main(ActivityThread.java:4745)
W/System.err( 1672):    at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1672):    at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1672):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
W/System.err( 1672):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
W/System.err( 1672):    at dalvik.system.NativeStart.main(Native Method)
W/System.err( 1672): org.json.JSONException: Value App at 0 of type java.lang.String cannot be converted to int
W/System.err( 1672):    at org.json.JSON.typeMismatch(JSON.java:100)
W/System.err( 1672):    at org.json.JSONArray.getInt(JSONArray.java:357)
W/System.err( 1672):    at org.apache.cordova.CordovaBridge.promptOnJsPrompt(CordovaBridge.java:131)
W/System.err( 1672):    at org.apache.cordova.engine.SystemWebChromeClient.onJsPrompt(SystemWebChromeClient.java:119)
W/System.err( 1672):    at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:655)
W/System.err( 1672):    at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 1672):    at android.os.Looper.loop(Looper.java:137)
W/System.err( 1672):    at android.app.ActivityThread.main(ActivityThread.java:4745)
W/System.err( 1672):    at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1672):    at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1672):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
W/System.err( 1672):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
W/System.err( 1672):    at dalvik.system.NativeStart.main(Native Method)
W/System.err( 1672): org.json.JSONException: Value File at 0 of type java.lang.String cannot be converted to int
W/System.err( 1672):    at org.json.JSON.typeMismatch(JSON.java:100)
W/System.err( 1672):    at org.json.JSONArray.getInt(JSONArray.java:357)
W/System.err( 1672):    at org.apache.cordova.CordovaBridge.promptOnJsPrompt(CordovaBridge.java:131)
W/System.err( 1672):    at org.apache.cordova.engine.SystemWebChromeClient.onJsPrompt(SystemWebChromeClient.java:119)
W/System.err( 1672):    at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:655)
W/System.err( 1672):    at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 1672):    at android.os.Looper.loop(Looper.java:137)
W/System.err( 1672):    at android.app.ActivityThread.main(ActivityThread.java:4745)
W/System.err( 1672):    at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1672):    at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1672):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
W/System.err( 1672):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
W/System.err( 1672):    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

Qui*_*Fix 1

编辑:我还没有浏览其他答案的所有评论,我现在意识到这个答案可能对OP来说并不是真正有用,但无论如何它可能会帮助那些与 Cordova 3.x->5 迁移作斗争的人......

当您更新 cordova 时,您通常还必须更新平台和插件。

因此,像您一样升级 CLI 后,您必须删除所有平台和插件,然后重新安装。

(如果您有仅在平台中的内容,请先保存)

在开始之前,保存您使用的插件列表

cordova plugin list
Run Code Online (Sandbox Code Playgroud)

然后我们清理所有内容(Windows 命令提示符):

rd /s/q platforms
rd /s /q plugins
Run Code Online (Sandbox Code Playgroud)

或对于 linux/OS X :

rm -rf platforms
rm -rf plugins
Run Code Online (Sandbox Code Playgroud)

请注意,这是一种删除平台和插件的“暴力”方式,您可以直接运行,cordova platform remove android但随后您必须处理文件platforms.json,并且您可以用于cordova plugin remove ...每个插件,但它会更长。

然后你用来cordova plugin add ...重新添加所有插件。

请注意,cordova 5 中的核心插件现在使用 npm 而不是 git,因此对于每个插件,您必须检查新的 id,否则您可能会得到旧版本。

例如,使用

cordova plugin add cordova-plugin-camera
Run Code Online (Sandbox Code Playgroud)

代替

cordova plugin add org.apache.cordova.camera
Run Code Online (Sandbox Code Playgroud)

最后你必须添加负责安全的新插件

cordova plugin add cordova-plugin-whitelist
Run Code Online (Sandbox Code Playgroud)

并在 config.xml 中配置它并在 html 中添加 CSP 元标记。

并重新添加平台:

cordova plugin add android
Run Code Online (Sandbox Code Playgroud)