升级cordova应用程序时出错

时间:2015-07-02 09:05:29

标签: java android cordova phonegap-plugins

由于安全方面的考虑,我正在尝试将有线电视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)

3 个答案:

答案 0 :(得分:4)

要更新cordova项目,您必须执行此操作:

首先使用

更新CLI版本
npm update -g cordova

然后转到项目文件夹并执行

cordova platform update android

答案 1 :(得分:1)

编辑:我还没有通过其他答案的所有内容,我现在意识到这个答案可能对OP没有用,但无论如何它可能会帮助某些人与Cordova 3.x-> 5迁移...

更新cordova时,您通常还需要更新平台和插件。

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

(如果您的内容仅在平台中认为以前保存过它)

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

cordova plugin list

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

rd /s/q platforms
rd /s /q plugins

或用于linux / OS X:

rm -rf platforms
rm -rf plugins

请注意,这是一种删除平台和插件的“粗暴”方式,你可以运行cordova platform remove android但是你必须处理文件platforms.json然后你可以使用{{1对于每个插件,但它会更长。

然后使用cordova plugin remove ...重新添加所有插件。

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

例如,使用

cordova plugin add ...

而不是

cordova plugin add cordova-plugin-camera

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

cordova plugin add org.apache.cordova.camera

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

重新添加平台:

cordova plugin add cordova-plugin-whitelist

答案 2 :(得分:1)

好像你已经部分升级了'你投射。我建议从一个新的5.11 Cordova项目开始,并使用与原始3.5.0项目相同的方式构建它。

尝试自动化(如在脚本中)构建项目的过程,以便您始终可以从一个新的Cordova项目开始并自动构建它以成为您的完整应用程序。

我过去曾使用过这个选项来克服一些无法解释的问题 - 所有这些都是因为升级不是应该如此顺利。