【发布时间】:2016-09-05 05:12:32
【问题描述】:
打开我的应用程序时突然发生了一次崩溃,我在下面上传了崩溃日志。但它有时会发生,但并非每次和每台设备都会发生。
谁能帮我理解崩溃日志,以及为什么有时和某些设备会发生这种情况。以下崩溃的主要原因是什么?
Revision: '14'
ABI: 'arm'
pid: 1834, tid: 8022, name: pool-3-thread-1 >>> com.example <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: 'art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: java_array == null'
r0 00000000 r1 00001f56 r2 00000006 r3 00000000
r4 942bfdb8 r5 00000006 r6 00000002 r7 0000010c
r8 00000000 r9 b4e4f520 sl af17a800 fp 00000965
ip 00001f56 sp 942bf498 lr b6f26fd5 pc b6f4aeb4 cpsr 60070010
backtrace:
#00 pc 00037eb4 /system/lib/libc.so (tgkill+12)
#01 pc 00013fd1 /system/lib/libc.so (pthread_kill+52)
#02 pc 00014bef /system/lib/libc.so (raise+10)
#03 pc 00011531 /system/lib/libc.so (__libc_android_abort+36)
#04 pc 0000fcbc /system/lib/libc.so (abort+4)
#05 pc 0021d161 /system/lib/libart.so (art::Runtime::Abort()+160)
#06 pc 000a831b /system/lib/libart.so (art::LogMessage::~LogMessage()+1322)
#07 pc 000b1a49 /system/lib/libart.so (art::JniAbort(char const*, char const*)+1060)
#08 pc 000b1fa5 /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
#09 pc 001be127 /system/lib/libart.so (art::JNI::GetArrayLength(_JNIEnv*, _jarray*)+570)
#10 pc 00001171 /data/app/com.example-1/lib/arm/library.so (Java_com_example_value_encypt+48)
#11 pc 004986f9 /data/dalvik-cache/arm/data@app@com.example-1@base.apk@classes.dex
【问题讨论】:
-
您的应用中有一些 NDK 代码吗? (原生 C++ 代码)
-
你应该看看你的 NDK 代码,这是从那里开始的。 java_array 之一似乎没有初始化。
-
好的,然后检查ndk代码,找到'java_array'变量并添加一个缺失的空检查。错误是这个变量在某些时候为空。
-
@Kelevandos 没有变量“java_array”。NDK 仅调用 GetArrayLength 方法。
-
好的,那么对这个方法做一次nullcheck,如果引用为null则返回0
标签: android android-logcat android-log