2012-11-02 2 views
4

Я работаю над приложением Phonegap и видел, что Phonegap недавно был обновлен до 2.2 с множеством исправлений для Android. Поэтому я сразу обновляюсь, заменяя xml, jar и JS-файл. Мое приложение отлично работало. Для добавления дополнительных функций используется пользовательский интерфейс Javascript. К сожалению, когда повышен до 2.2, я получаю следующий журнал ошибок:Android Phonegap 2.1> 2.2 Ошибка обновления

Pastebin error log

Это ошибка я получаю при запуске приложения на моем Samsung Galaxy S2 работает 4.0.4. Это основной файл приложения Java, который я использую.

Pastebin Java File

Я надеюсь, что вы, ребята, можете мне помочь определить проблему. У меня нет подсказки о том, что может вызвать JNI Error.

EDIT: Я попробовал один и тот же код на андроид 2.2 эмулятора, и это дало мне более описательную ошибку:

10-31 13:02:12.945: I/dalvikvm(543): Could not find method android.webkit.WebView.<init>, referenced from method org.apache.cordova.CordovaWebView.<init> 
10-31 13:02:12.945: W/dalvikvm(543): VFY: unable to resolve direct method 3298: Landroid/webkit/WebView;.<init> (Landroid/content/Context;Landroid/util/AttributeSet;IZ)V 
10-31 13:02:12.945: D/dalvikvm(543): VFY: replacing opcode 0x70 at 0x0001 
10-31 13:02:12.945: D/dalvikvm(543): VFY: dead code 0x0004-005b in Lorg/apache/cordova/CordovaWebView;.<init> (Landroid/content/Context;Landroid/util/AttributeSet;IZ)V 
10-31 13:02:13.195: I/CordovaLog(543): Changing log level to DEBUG(3) 
10-31 13:02:13.205: I/CordovaLog(543): Found preference for useBrowserHistory=false 
10-31 13:02:13.205: D/CordovaLog(543): Found preference for useBrowserHistory=false 
10-31 13:02:13.205: I/CordovaLog(543): Found preference for exit-on-suspend=false 
10-31 13:02:13.205: D/CordovaLog(543): Found preference for exit-on-suspend=false 
10-31 13:02:13.215: W/CordovaWebView(543): useBrowserHistory=false is deprecated as of Cordova 2.2.0 and will be removed six months after the 2.2.0 release. Please use the browser history and use history.back(). 
10-31 13:02:13.245: D/JsMessageQueue(543): Set native->JS mode to 2 
10-31 13:02:13.245: I/CordovaWebView(543): Disabled addJavascriptInterface() bridge since Android version is old. 
10-31 13:02:13.255: D/CordovaWebView(543): Origin to allow: http://127.0.0.1* 
10-31 13:02:13.255: D/CordovaWebView(543): Unlimited access to network resources 
10-31 13:02:13.265: D/CordovaWebView(543): Origin to allow: http://api.enkhuizenapp.nl 
10-31 13:02:13.265: D/CordovaWebView(543): Origin to allow: .* 
10-31 13:02:13.265: I/CordovaLog(543): Found log level DEBUG 
10-31 13:02:13.265: I/CordovaLog(543): Changing log level to DEBUG(3) 
10-31 13:02:13.265: I/CordovaLog(543): Found preference for useBrowserHistory=false 
10-31 13:02:13.265: D/CordovaLog(543): Found preference for useBrowserHistory=false 
10-31 13:02:13.265: I/CordovaLog(543): Found preference for exit-on-suspend=false 
10-31 13:02:13.265: D/CordovaLog(543): Found preference for exit-on-suspend=false 
10-31 13:02:13.265: W/CordovaWebView(543): useBrowserHistory=false is deprecated as of Cordova 2.2.0 and will be removed six months after the 2.2.0 release. Please use the browser history and use history.back(). 
10-31 13:02:13.285: D/JsMessageQueue(543): Set native->JS mode to 2 
10-31 13:02:13.285: I/CordovaWebView(543): Disabled addJavascriptInterface() bridge since Android version is old. 
10-31 13:02:13.285: D/CordovaWebView(543): >>> loadUrl(file:///android_asset/www/menu.html) 
10-31 13:02:13.285: D/PluginManager(543): init() 
10-31 13:02:13.296: D/CordovaWebView(543): >>> loadUrlNow() 
10-31 13:02:13.296: D/CordovaWebView(543): >>> loadUrl(file:///android_asset/www/main.html) 
10-31 13:02:13.296: D/PluginManager(543): init() 
10-31 13:02:13.315: D/CordovaWebView(543): >>> loadUrlNow() 
10-31 13:02:13.955: D/dalvikvm(543): GC_FOR_MALLOC freed 1775 objects/133528 bytes in 76ms 
10-31 13:02:14.765: D/Cordova(543): onPageFinished(file:///android_asset/www/menu.html) 
10-31 13:02:15.365: D/Cordova(543): onPageFinished(file:///android_asset/www/main.html) 
10-31 13:02:15.685: I/Database(543): sqlite returned: error code = 14, msg = cannot open file at source line 25467 
10-31 13:02:15.945: D/CordovaLog(543): Falling back on PROMPT mode since _cordovaNative is missing. 
10-31 13:02:15.955: D/CordovaLog(543): file:///android_asset/www/scripts/cordova-2.2.0.js: Line 1032 : Falling back on PROMPT mode since _cordovaNative is missing. 
10-31 13:02:15.955: I/Web Console(543): Falling back on PROMPT mode since _cordovaNative is missing. at file:///android_asset/www/scripts/cordova-2.2.0.js:1032 
10-31 13:02:16.065: D/AndroidRuntime(543): Shutting down VM 
10-31 13:02:16.065: W/dalvikvm(543): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
10-31 13:02:16.075: E/AndroidRuntime(543): FATAL EXCEPTION: main 
10-31 13:02:16.075: E/AndroidRuntime(543): java.lang.NullPointerException 
10-31 13:02:16.075: E/AndroidRuntime(543): at org.apache.cordova.api.Plugin.execute(Plugin.java:74) 
10-31 13:02:16.075: E/AndroidRuntime(543): at org.apache.cordova.api.CordovaPlugin.execute(CordovaPlugin.java:61) 
10-31 13:02:16.075: E/AndroidRuntime(543): at org.apache.cordova.api.PluginManager.exec(PluginManager.java:224) 
10-31 13:02:16.075: E/AndroidRuntime(543): at org.apache.cordova.ExposedJsApi.exec(ExposedJsApi.java:43) 
10-31 13:02:16.075: E/AndroidRuntime(543): at org.apache.cordova.CordovaChromeClient.onJsPrompt(CordovaChromeClient.java:213) 
10-31 13:02:16.075: E/AndroidRuntime(543): at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:566) 
10-31 13:02:16.075: E/AndroidRuntime(543): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-31 13:02:16.075: E/AndroidRuntime(543): at android.os.Looper.loop(Looper.java:123) 
10-31 13:02:16.075: E/AndroidRuntime(543): at android.app.ActivityThread.main(ActivityThread.java:4627) 
10-31 13:02:16.075: E/AndroidRuntime(543): at java.lang.reflect.Method.invokeNative(Native Method) 
10-31 13:02:16.075: E/AndroidRuntime(543): at java.lang.reflect.Method.invoke(Method.java:521) 
10-31 13:02:16.075: E/AndroidRuntime(543): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
10-31 13:02:16.075: E/AndroidRuntime(543): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
10-31 13:02:16.075: E/AndroidRuntime(543): at dalvik.system.NativeStart.main(Native Method) 

Спасибо заранее!

+0

Ошибка: (CB-1810) CordovaWebView не работает как компонент, иди, добавьте свою информацию. https://issues.apache.org/jira/browse/CB-1810 –

+0

Я думаю, что Джо уже исправил это. Возможно, вам придется захватить краевой код и создать свою собственную банку. –

ответ

7

Существует ток решения этой проблемы, а именно, что вы добавляете пул потоков к вашему CordovaActivity:

private final ExecutorService threadPool = Executors.newCachedThreadPool(); 

И, конечно, реализовать метод Добавленный getThreadPool(). Это было добавлено случайно, и, мы надеемся, будет инкапсулировано в следующем выпуске как-то.

public ExecutorService getThreadPool() 
{ 
    return threadPool; 
} 
+0

Большое спасибо. Продолжайте хорошую работу! – handyface

+0

Как люди, использующие сборку телефонных звонков, обойдутся? – drogon

+1

@drogon: Насколько я знаю, люди с PhoneGap Build не могут даже использовать CordovaWebView в качестве компонента и не будут сталкиваться с этой проблемой. Это только для тех, кто решил использовать его как компонент как часть более крупного приложения для Android. –

-1

Я имел эту проблему, но после выполнения действий, описанных в документации Upgrading Cordova Android, что ошибка исчезла.

Смежные вопросы