lit*_*hen 10 debugging java-native-interface android android-studio
我遇到了一个我无法直接链接到我的代码的崩溃,然后我发现它是本机崩溃.回溯是这样的
Abort message: '[FATAL:jni_android.cc(259)] Please include Java exception stack in crash report
'
r0 00000000 r1 00003c12 r2 00000006 r3 00000008
r4 7cb80978 r5 00000006 r6 7cb80920 r7 0000010c
r8 7cb7ffad r9 7cb7ffac sl 7cb80408 fp 7cb80404
ip 0000000b sp 7cb7ff38 lr b3eab4b7 pc b3eadd20 cpsr 600f0010
A/DEBUG: backtrace:
#00 pc 0004ad20 /system/lib/libc.so (tgkill+12)
#01 pc 000484b3 /system/lib/libc.so (pthread_kill+34)
#02 pc 0001dd89 /system/lib/libc.so (raise+10)
#03 pc 00019511 /system/lib/libc.so (__libc_android_abort+34)
#04 pc 00017150 /system/lib/libc.so (abort+4)
#05 pc 0079a29b /data/app/com.android.chrome-1/base.apk (offset 0xfa5000)
Run Code Online (Sandbox Code Playgroud)
我想知道如何利用它来帮助我找到问题所在.我知道这太宽泛了,难以在我的代码中找到问题.所以我想知道是否有人可以提供任何指示或方向来利用这个日志?为了提供更多信息,我在崩溃时有多个webview,是否可能出现内存碎片错误?如果是这样,我该怎么办?重新创建webview?在此之前似乎还有一些东西
System.err: java.lang.IllegalStateException: get field slot from row 25 col 46 failed
at net.sqlcipher.CursorWindow.getLong_native(Native Method)
05-29 15:38:24.016 22757-23608/com.boxer.email W/System.err: at net.sqlcipher.CursorWindow.getLong(CursorWindow.java:450)
at net.sqlcipher.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:110)
at net.sqlcipher.AbstractCursor.moveToPosition(AbstractCursor.java:201)
at net.sqlcipher.AbstractCursor.moveToNext(AbstractCursor.java:230)
05-29 15:38:24.017 22757-23608/com.boxer.email W/System.err: at android.database.CursorWrapper.moveToNext(CursorWrapper.java:202)
at android.database.CursorWrapper.moveToNext(CursorWrapper.java:202)
at android.database.CursorWrapper.moveToNext(CursorWrapper.java:202)
at android.database.CursorWrapper.moveToNext(CursorWrapper.java:202)
Run Code Online (Sandbox Code Playgroud)
尝试在方法中销毁 webview,onDestroy() 因为即使您的 Activity 或片段被销毁,WebView 客户端或 Chromium 客户端仍在加载数据。
尝试这个 :
@Override
protected void onDestroy() {
if (myWbView != null)
myWbView.destroy();
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
或者
@Override
public void onDestroyView() {
super.onDestroyView();
webView=null; // remove webView, prevent chromium to crash
}
Run Code Online (Sandbox Code Playgroud)