Вопрос:
Мое приложение уже развернуто и отлично работает практически на всех устройствах, которые его используют, однако, на Android 5.1.1, в частности с LG G3, я получаю журналы сбоев для “Native crash”.
Native crash at/system/lib64/libc.so
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Build fingerprint: ‘Verizon/zerofltevzw/zerofltevzw:5.1.1/LMY47X/G920VVRU3BOG5:user/release-keys’ Revision: ’10’ ABI: ‘arm64’ pid: 31341, tid: 31341, name: <companyName>.mobile >>> com.<companyName>.mobile <<< signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr ——— Abort message: ‘sart/runtime/class_linker.cc:3135] Check failed: dex_cache.Get() != nullptr Failed to allocate dex cache for /data/app/com.google.android.gms-1/base.apk:classes2.dex’ x0 0000000000000000 x1 0000000000007a6d x2 0000000000000006 x3 0000007f96649e30 x4 0000007f96649e30 x5 0000000000000005 x6 0000000000000001 x7 0000000000000020 x8 0000000000000083 x9 000000000000008a x10 0000007f963d6000 x11 0000000000000001 x12 0000000000000001 x13 0000007f963d6000 x14 f0ca73d6a9a36950 x15 000000000000000c x16 0000007f963d6610 x17 0000007f96376894 x18 0000000000000000 x19 0000007f96649e30 x20 0000007f9664a0e8 x21 0000007f963dc000 x22 0000000000000001 x23 0000000000000006 x24 0000007ff97b6020 x25 0000007f928a6000 x26 0000007ff97b6018 x27 0000007f927fd520 x28 0000007f928a6000 x29 0000007ff97b5ea0 x30 0000007f96338264 sp 0000007ff97b5ea0 pc 0000007f9637689c pstate 0000000060000000 backtrace: #00 pc 000000000005e89c /system/lib64/libc.so (tgkill+8) #01 pc 0000000000020260 /system/lib64/libc.so (pthread_kill+160) #02 pc 0000000000021794 /system/lib64/libc.so (raise+28) #03 pc 000000000001b17c /system/lib64/libc.so (abort+60) #04 pc 0000000000310144 /system/lib64/libart.so (art::Runtime::Abort()+300) #05 pc 00000000000d52b8 /system/lib64/libart.so (art::LogMessage::~LogMessage()+2684) #06 pc 00000000001161f4 /system/lib64/libart.so (art::ClassLinker::RegisterDexFile(art::DexFile const&)+728) #07 pc 000000000011d744 /system/lib64/libart.so (art::ClassLinker::FindClassInPathClassLoader(art::ScopedObjectAccessAlreadyRunnable&, art::Thread*, char const*, unsigned long, art::Handle<art::mirror::ClassLoader>)+708) #08 pc 000000000011dcdc /system/lib64/libart.so (_ZN3art11ClassLinker9FindClassEPNS_6ThreadEPKcNS_6HandleINS_6mirror11ClassLoaderEEE.part.431+884) #09 pc 0000000000122010 /system/lib64/libart.so (art::ClassLinker::ResolveType(art::DexFile const&, unsigned short, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLoader>)+244) #10 pc 0000000000123588 /system/lib64/libart.so (art::ClassLinker::ResolveMethod(art::DexFile const&, unsigned int, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLoader>, art::Handle<art::mirror::ArtMethod>, art::InvokeType)+176) #11 pc 00000000003b03b8 /system/lib64/libart.so (art::ClassLinker::ResolveMethod(art::Thread*, unsigned int, art::mirror::ArtMethod**, art::InvokeType)+208) #12 pc 00000000003b5554 /system/lib64/libart.so (artQuickResolutionTrampoline+3044) #13 pc 00000000000cedd8 /system/lib64/libart.so (art_quick_resolution_trampoline+88) #14 pc 0000000002a4bb00 /data/dalvik-cache/arm64/[email protected]@[email protected]@classes.dex
До сих пор все, что мне удалось выполнить, – это отслеживание кода ошибки до того, как оно было ClassLinker::AppendToBootClassPath метода ClassLinker::AppendToBootClassPath в исходном коде Android. К сожалению, это не помогло, потому что я не знаю, что я могу сделать, чтобы исправить это.
Я немного искал в Google, чтобы узнать, есть ли какие-либо документированные процессы для отладки этой ошибки, но я не смог найти ничего значимого.
Что я могу сделать, чтобы выследить источник этой проблемы?
Изменить. Поскольку это непротиворечивая проблема, с ней сложно работать, но из того, что я узнал недавно о компиляции для Android, это, по-видимому, проблема, которая распространялась во время компиляции. Я думаю, что dex, возможно, случайно написал плохой символ в кэше dex. Когда компоновщик попытался получить доступ к токену для метода, он отбросил ошибку.
Я все еще не уверен, как исправить эту проблему, но я сближаюсь с пониманием, чтобы решить эту проблему.