NullPointerException en Cordova App reportado por Fabric SDK
Estoy utilizando el marco de Ionic para construir la aplicación híbrida de Android y la aplicación funciona bien. Estoy usando el complemento de Analytics de Crash de tela y su informe de los fallos de la aplicación.
Estoy consiguiendo los detalles abajo del desplome muy a menudo y no seguro cuál es la razón de la misma. No estoy seguro de cuál sería el punto de partida para comenzar a analizar esto.
- Android Twitter Conflicto del SDK de la tela con Google GSON
- Integra el tejido con Libgdx
- Problemas con la adición de dependencias de telas a un proyecto construido cordova
- No se puede crear la aplicación de Android con crashlytics
- Instalar crashlytics sin tela?
Fatal Exception: java.lang.NullPointerException at android.webkit.WebViewClassic.setNetworkAvailable(WebViewClassic.java:4224) at android.webkit.WebView.setNetworkAvailable(WebView.java:731) at org.apache.cordova.engine.SystemWebViewEngine$1.setNetworkAvailable(SystemWebViewEngine.java:112) at org.apache.cordova.NativeToJsMessageQueue$OnlineEventsBridgeMode$2.run(NativeToJsMessageQueue.java:340) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:5319) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) at dalvik.system.NativeStart.main(NativeStart.java)
¿Está relacionado con algún plugin o cualquier problema en Ionic o Cordvoa? Cualquier ayuda o consejo sería útil.
- Twitter Composer Callback OnSuccess / Tela OnFailure
- Crashlytics (Fabric) separa las organizaciones para las variantes de aplicación (tipos de construcción, sabores de producto)
- Cómo desconectarse de twitter utilizando Fabric Sdk para android
- El inicio de sesión de Twitter de Android no funciona con Fabric SDK - La devolución de llamada no debe ser nula
- Tejido para AndroidStudio / Eclipse - No se puede iniciar sesión con otro usuario
- Cómo obtener datos de usuario a través de la API de tejido de Twitter (Android)
- Android: subir imagen a Twitter utilizando REST API y Fabric, error de tubería roto
- Consejos para optimizar el tiempo de construcción en el estudio de Android?
¿Podrías tragar la excepción? Editar este archivo:
/platforms/android/CordovaLib/src/org/apache/cordova/engineChange/SystemWebViewEngine.java
Y cambia esto
webView.setNetworkAvailable(value);
a esto
import java.lang.NullPointerException; ... try { webView.setNetworkAvailable(value); } catch (NullPointerException e) { Log.d(TAG, "webView.setNetworkAvailable called after destroy"); }
No es realmente una solución, pero dada la dificultad de reproducir localmente, puede ser una opción a considerar.
Tengo el mismo problema. También uso Cordova y Fabric Crashlytics.
Se reproduce sólo en Android 4.1.2, 4.2.2, 4.3.
He reproducido el error:
- Abrir WebView con contenido que contenga funciones javascript;
- Abra el nuevo WebView y ciérrelo;
- Desactivar la red (wifi y móvil) tan pronto como sea posible;
- Volver a la aplicación y mostrar stacktrace.
He encontrado una solución:
No estoy usando CordovaActivity en mi aplicación. Estoy usando CordovaInterface. PluginManager asociado con WebView eliminado continúa llamando a sus métodos. Así que la llamada manual WebView.handleDestroy () para destruir PluginManager.
En mi fragmento:
@Override public void onDestroy() { if (webView != null) { webView.handleDestroy(); webView.destroy(); webView = null; } super.onDestroy(); }
Actualización: Se reproduce cuando se destruye WebView, pero PluginManager sigue viva y envía eventos javascripts a suscriptores (WebViews). Porque llamo WebView.handleDestroy ().
Mi solución estaba en SystemWebViewEngine.java.
-
Cambio
protected final SystemWebView webView;
Paraprotected SystemWebView webView;
-
En el método
destroy()
después de
if (receiver != null) { try { webView.getContext().unregisterReceiver(receiver); } catch (Exception e) { Log.e(TAG, "Error unregistering configuration receiver: " + e.getMessage(), e); } }
añadir
webView = null;
-
Reemplazar
webView.setNetworkAvailable(value);
conif (webView != null) webView.setNetworkAvailable(value);
- Administrador de alarmas que no funciona en intervalos de tiempo específicos
- ¿Las notificaciones no siempre se reciben por teléfono?