Ошибка при обновлении приложения cordova

Я пытаюсь обновить приложение Android с Android-телефоном от cordova 3.5.0 до кордовы 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)

Ответ 1

Изменить: я не прошел все комментарии другого ответа, и теперь я понимаю, что этот ответ может быть не очень полезен для OP, но в любом случае это может помочь кому-то сражаться с миграцией Cordova 3.x- > 5...

Когда вы обновляете кордову, вам часто приходится обновлять платформу и плагины.

Итак, после того как вы обновили 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, и вы можете использовать cordova plugin remove ... для каждого плагин, но он будет длиннее.

Затем вы используете cordova plugin add ... для повторного добавления всех своих плагинов.

Будьте осторожны, основные плагины в кордове 5 теперь используют npm вместо git, поэтому для каждого плагина вам нужно проверить новый идентификатор, или вы можете получить старые версии.

Например, используйте

cordova plugin add cordova-plugin-camera

вместо

cordova plugin add org.apache.cordova.camera

И, наконец, вам нужно добавить новый плагин, отвечающий за безопасность

cordova plugin add cordova-plugin-whitelist

И настройте его в файле config.xml и добавьте метатег CSP в свой html.

И снова добавьте платформу:

cordova plugin add android

Ответ 2

Чтобы обновить проект кордовы, вы должны сделать это:

Сначала обновите версию CLI с помощью

npm update -g cordova

затем перейдите в папку проекта и выполните

cordova platform update android

Ответ 3

Кажется, что вы "частично обновили" проект. Я бы рекомендовал начать со свежего проекта 5.11 Cordova и построить его так же, как и с оригинальным проектом 3.5.0.

Попробуйте автоматизировать (как в script) процесс создания вашего проекта, чтобы вы всегда могли начать с нового проекта Cordova и автоматически построить его, чтобы стать полнофункциональным приложением.

Я использовал этот вариант в прошлом, чтобы преодолеть некоторые необъяснимые проблемы - все из-за того, что обновления не были такими гладкими, какими они должны быть.