¿Cómo solucionar un bloqueo de la biblioteca del sistema Android (libwebcore.so)

Mi webview de Android se está estrellando y el volcado de error de adb logcat me dice que libwebcore.so es la biblioteca que causa el error de segmentación. ¿Cómo se soluciona esto?

Mi investigación inicial me llevó a lugares como este hilo: Cómo utilizar addr2line en Android , que en esencia dice que para obtener la versión sin pelar de la biblioteca y utilizar la utilidad addr2line para identificar la línea exacta causando el error de segmentación

El hilo de arriba dice "Utilice el archivo .so bajo obj / local / armeabi, ya que esta es la versión no eliminada" … pero no pude encontrar libwebcore.so en cualquier lugar bajo / usr / local / android-ndk-r6 O / usr / local / android-sdk-mac_86 en mi Mac, y sólo encontré una versión eliminada de libwebcore.so bajo / system / lib en el dispositivo Android.

¿Hay alguna manera de conseguir mis manos en una versión no depurada de libwebcore.so? ¿O simplemente no voy por esto de la manera correcta?


Para referencia, aquí está el error dump como spit out por adb logcat:

I/DEBUG ( 65): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 65): Build fingerprint: 'google/passion/passion:2.3.4/GRJ22/121341:user/release-keys' I/DEBUG ( 65): pid: 611, tid: 618 >>> com.swishly.gap <<< I/DEBUG ( 65): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000 I/DEBUG ( 65): r0 00000002 r1 002f9564 r2 00000003 r3 008e79c8 I/DEBUG ( 65): r4 00000000 r5 002f9700 r6 00000000 r7 4470baf4 I/DEBUG ( 65): r8 4470bb64 r9 44520ea8 10 002ae048 fp 00000000 I/DEBUG ( 65): ip 00000000 sp 4470bad0 lr a851857b pc a851838e cpsr 00000030 I/DEBUG ( 65): d0 0061006300000000 d1 0064006500680000 I/DEBUG ( 65): d2 0077007400650000 d3 004c006b00720000 I/DEBUG ( 65): d4 007400610063006f d5 0053006e006f0069 I/DEBUG ( 65): d6 006300720075006f d7 0000000000000065 I/DEBUG ( 65): d8 0000000000000000 d9 0000000000000000 I/DEBUG ( 65): d10 0000000000000000 d11 0000000000000000 I/DEBUG ( 65): d12 0000000000000000 d13 0000000000000000 I/DEBUG ( 65): d14 0000000000000000 d15 0000000000000000 I/DEBUG ( 65): d16 41d39d979893f080 d17 41d39d9b0a07ff06 I/DEBUG ( 65): d18 41106a1000000000 d19 4024000000000000 I/DEBUG ( 65): d20 0000000000000000 d21 0000000000000000 I/DEBUG ( 65): d22 4024000000000000 d23 0000000000000000 I/DEBUG ( 65): d24 0000000000000000 d25 3ff0000000000000 I/DEBUG ( 65): d26 0000000000000000 d27 bff0000000000000 I/DEBUG ( 65): d28 0000000000000000 d29 3ff0000000000000 I/DEBUG ( 65): d30 0000000000000000 d31 3ff0000000000000 I/DEBUG ( 65): scr 20000013 I/DEBUG ( 65): I/DEBUG ( 65): #00 pc 0021838e /system/lib/libwebcore.so I/DEBUG ( 65): #01 pc 00218576 /system/lib/libwebcore.so I/DEBUG ( 65): #02 pc 002186f8 /system/lib/libwebcore.so I/DEBUG ( 65): #03 pc 0021873a /system/lib/libwebcore.so I/DEBUG ( 65): #04 pc 0021875c /system/lib/libwebcore.so I/DEBUG ( 65): #05 pc 0021879a /system/lib/libwebcore.so I/DEBUG ( 65): #06 pc 0021febe /system/lib/libwebcore.so I/DEBUG ( 65): #07 pc 00220df0 /system/lib/libwebcore.so I/DEBUG ( 65): #08 pc 0022147c /system/lib/libwebcore.so I/DEBUG ( 65): #09 pc 00017e34 /system/lib/libdvm.so I/DEBUG ( 65): I/DEBUG ( 65): code around pc: I/DEBUG ( 65): a851836c 602303c2 eb03e002 602003c2 46206063 I/DEBUG ( 65): a851837c bf00bd70 b510680b b1134604 1c426818 I/DEBUG ( 65): a851838c 6820601a f7ff6023 4620fd55 bf00bd10 I/DEBUG ( 65): a851839c 4604b510 fd1ef7ff f6534620 4620fa73 I/DEBUG ( 65): a85183ac bf00bd10 4604b570 460e6cc0 f6acb168 I/DEBUG ( 65): I/DEBUG ( 65): code around lr: I/DEBUG ( 65): a8518558 d10242a5 2600462c 6823e017 f1b3b113 I/DEBUG ( 65): a8518568 d1f83fff e7f33408 1d216878 f7ff1980 I/DEBUG ( 65): a8518578 3408ff03 d00642a5 2b006823 f1b3d0f9 I/DEBUG ( 65): a8518588 d1013fff 462ce7f5 42ac3604 e8bdd1ec I/DEBUG ( 65): a8518598 bf0081f0 b087b5f0 0710f100 4604ae03 I/DEBUG ( 65): I/DEBUG ( 65): stack: I/DEBUG ( 65): 4470ba90 00953a1c I/DEBUG ( 65): 4470ba94 a83da669 /system/lib/libwebcore.so I/DEBUG ( 65): 4470ba98 9de0413c I/DEBUG ( 65): 4470ba9c 00000001 I/DEBUG ( 65): 4470baa0 00953a18 I/DEBUG ( 65): 4470baa4 0000a000 I/DEBUG ( 65): 4470baa8 4470bb64 I/DEBUG ( 65): 4470baac 44520ea8 I/DEBUG ( 65): 4470bab0 002ae048 I/DEBUG ( 65): 4470bab4 afd1362d /system/lib/libc.so I/DEBUG ( 65): 4470bab8 4470baf4 I/DEBUG ( 65): 4470babc 00953a1c 

Usted puede comprobar todo el proyecto de WebKit xcode junto con todo el proyecto de código abierto de Android con el enlace de Kerubu siempre (lo hice hace unos meses, se tarda varios gigabytes y horas …) y probablemente crear su propia biblioteca. No lo hice), pero dudo que esta sea la forma más fácil de abordar este tema.

Editar: resulta que android se refleja en github, aquí está el proyecto de WebCore .

¡Es muy probable que su aplicación sea mucho más fácil de solucionar que el proyecto WebKit!

Me permito lanzar una conjetura salvaje:

Hay errores conocidos con la inyección de javascript (también aquí ) para algunos dispositivos que sólo parecen estar afectando a algún marco de la aplicación html también (como PhoneGap, al parecer), ¿utiliza el método addJavascriptInterface ? Si es así, hay una solución, llamando al WebChromeClient de onJsPrompt y analizando la cadena para realizar llamadas nativas desde la vista web.

Java a javascript:

 webview.loadUrl("javascript:alert('toto');"); 

Javascript a java:

En javascript:

 prompt('this is the message', 'this is the default value'); 

Y en java:

 WebChromeClient chromeClient = new WebChromeClient(){ @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, android.webkit.JsPromptResult result){ Log.d("javascriptPrompt", "prompt : "+url+"-"+message); // should log "javascriptPrompt, "prompt: null - this is the message" // parse the message and do whatever you want here result.confirm(); return true; } } webview.setChromeClient(chromeClient); 

No 100% seguro, pero es la fuente de libwebkit.so que se encuentra en Android Open Source Project?

  • Run-as El paquete 'abc' es desconocido - Galaxy S4 Jellybean o Android 4.3
  • Determine el ABI de la construcción actual en build.gradle
  • Cómo compilar y ejecutar un programa C / C ++ en el sistema Android
  • Cómo determinar el código C se compila para Android / NDK o iOS
  • ¿Es seguro guardar sólo armeabi-v7a para un androide apk
  • Lista de código nativo soportado de teléfonos Android
  • JAVAH no puede encontrar clase (android ndk)
  • Android JNI APK Embalaje
  • ¿Hay algún recurso bueno que discuta Android NDK API de una manera algo decente?
  • El soporte de NDK es una característica experimental y todos los casos de uso aún no son compatibles con el error en Android Studio?
  • La aplicación nativa se bloquea en Android L
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.