Como você soluciona uma crash na biblioteca do sistema Android (libwebcore.so)

Minha webview do Android está crashndo e o erro de despejo do logon do adb me diz que libwebcore.so é a biblioteca que causa a crash de segmentação. Como você soluciona isso?

Minha search inicial me levou a lugaires como este: Como usair o addr2line no Android , o que, em essência, diz paira obter a viewsão não removida da biblioteca e usair o utilitário addr2line paira identificair a linha exata que causa a crash de segmentação

  • Não é possível executair o ndk-build no Android studio de gradle on osx yosemite
  • Desempenho NDK vs JAVA
  • Usando o GCC de baunilha (ou Clang) com o NDK Android
  • o tipo de compilation não é um erro debugable do jni
  • Como posso usair a saída no logcat após um Fatal Signal 11 paira descobrir onde eu estou recebendo o erro no código nativo Android?
  • Chamando método nativo duas vezes da biblioteca de terceiros em uma atividade faz com que o aplicativo do Android feche
  • O tópico acima diz "Use o file .so em obj / local / airmeabi, uma vez que esta é a viewsão não removida" … mas não consegui encontrair o libwebcore.so em qualquer lugair em / usr / local / android-ndk-r6 ou / usr / local / android-sdk-mac_86 no meu Mac, e eu findi apenas uma viewsão despojada do libwebcore.so em / system / lib no dispositivo Android.

    Existe uma maneira de conseguir minhas mãos em uma viewsão não removida do libwebcore.so? Ou eu não estou indo sobre isso da maneira certa?


    Paira reference, aqui está o erro de despejo como cuspir pelo logon adb:

    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 airound 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 airound 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 

  • Como segmentair várias architectures usando o NDK?
  • Android NDK: Link usando uma biblioteca estática pré-compilada
  • Possível replace a biblioteca do sistema .so na aplicação
  • Falha na synchronization Gradle, NDK não configurado, baixe-o com o gerenciador SDK
  • Vinculando bibliotecas estáticas no android ndk
  • Emairanhado com o teste do Google
  • 2 Solutions collect form web for “Como você soluciona uma crash na biblioteca do sistema Android (libwebcore.so)”

    Você pode viewificair todo o projeto WebKit xcode juntamente com todo o projeto de código aberto do Android com o link que Kerubu forneceu (eu fiz alguns meses atrás, leva vários gigabytes e horas …) e provavelmente crie sua própria biblioteca .s não estragada (I não), mas duvido que esta seja a maneira mais fácil de abordair esta questão.

    Editair: acontece que o Android é refletido no github, aqui está o projeto WebCore .

    Existe uma boa chance de que seu aplicativo seja muito mais fácil de solucionair problemas do que o projeto WebKit!

    Eu vou me permitir lançair um palpite selvagem:

    Existem erros conhecidos com injeção de javascript (também aqui ) paira alguns dispositivos que também pairecem estair afetando também o framework de aplicativos html (como PhoneGap, apairentemente), você usa o método addJavascriptInterface ? Se for caso disso, há uma solução alternativa, chamando o WebChromeClient do onJsPrompt e analisando a string paira executair chamadas nativas a pairtir do webview.

    Java paira javascript:

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

    javascript paira java:

    em javascript:

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

    e em java:

     WebChromeClient chromeClient = new WebChromeClient(){ @Oviewride 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" // pairse the message and do whateview you want here result.confirm(); return true; } } webview.setChromeClient(chromeClient); retornair viewdadeiro; WebChromeClient chromeClient = new WebChromeClient(){ @Oviewride 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" // pairse the message and do whateview you want here result.confirm(); return true; } } webview.setChromeClient(chromeClient); } WebChromeClient chromeClient = new WebChromeClient(){ @Oviewride 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" // pairse the message and do whateview you want here result.confirm(); return true; } } webview.setChromeClient(chromeClient); } WebChromeClient chromeClient = new WebChromeClient(){ @Oviewride 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" // pairse the message and do whateview you want here result.confirm(); return true; } } webview.setChromeClient(chromeClient); 

    Não tem 100% de certeza, mas é a fonte do libwebkit.so paira ser encontrado no Android Open Source Project?

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.