由于安全方面的考虑,我正在尝试将有线电视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)
答案 0 :(得分:4)
要更新cordova项目,您必须执行此操作:
首先使用
更新CLI版本npm update -g cordova
然后转到项目文件夹并执行
cordova platform update android
答案 1 :(得分:1)
更新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项目开始并自动构建它以成为您的完整应用程序。
我过去曾使用过这个选项来克服一些无法解释的问题 - 所有这些都是因为升级不是应该如此顺利。