Разрабатываемые нами проекты включают приложения и SDK.
SDK содержит движок. so.
Чтобы избежать чередования, мы реализовали это следующим образом.
Код: Выделить всё
packagingOptions {
doNotStrip "*/arm64-v8a/*.so"
doNotStrip "*/armeabi-v7a/*.so"
jniLibs {
useLegacyPackaging = true
}
}
Код: Выделить всё
$ FILE engine.so
engine.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, with debug_info, not stripped
После применения SDK к приложению оно было реализовано, как показано ниже, для применения сбоев.
build.gradle (проект)
Код: Выделить всё
plugins {
//...
id 'com.google.gms.google-services' version '4.4.2' apply false
id 'com.google.firebase.crashlytics' version '3.0.2' apply false
}
Код: Выделить всё
plugins {
//...
id 'com.google.gms.google-services'
id 'com.google.firebase.crashlytics'
}
Код: Выделить всё
android {
buildTypes {
debug {
firebaseCrashlytics {
mappingFileUploadEnabled true
nativeSymbolUploadEnabled true
}
}
}
tasks.configureEach { task -> if (task.name.startsWith('assemble') && task.name.endsWith("Debug")) task.finalizedBy "uploadCrashlyticsSymbolFile" + task.name.substring('assemble'.length()) }
dependencies {
// ...
implementation platform('com.google.firebase:firebase-bom:33.2.0')
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-crashlytics-ndk'
}
В случае сбоя это можно было увидеть в сбоях консоли Firebase.
Однако коллизия на engine.so не обнаружена и показывает неправильную трассировку стека.
crashlytics консоли Firebase
Код: Выделить всё
null pointer dereference: SIGSEGV 0x0000000000000000
#00 pc 0x6fa91b5b88
#01 pc 0x6fa91b5b6c
#02 pc 0x218964 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#03 pc 0x285ff0 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#04 pc 0x3dce0c libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#05 pc 0x3ea4c8 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#06 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#07 pc 0x3e5064 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#08 pc 0x760518 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#09 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#10 pc 0x77ebfc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#11 pc 0x203814 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#12 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#13 pc 0x2000fc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#14 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#15 pc 0x3dce0c libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#16 pc 0x3e4584 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#17 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#18 pc 0x800ba4 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#19 pc 0x3e5040 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#20 pc 0x760518 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#21 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#22 pc 0x76d498 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#23 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#24 pc 0x77f2a0 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#25 pc 0x77ebfc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#26 pc 0x203814 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#27 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#28 pc 0x2000fc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#29 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#30 pc 0x3dce0c libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#31 pc 0x2000fc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#32 pc 0x3e4584 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#33 pc 0xa16ffc libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
#34 pc 0x3e5040 libart.so (BuildId: 4752fd49b3f5a76fd788c235cf2fb143)
Я также пробовал загрузить символы с помощью Firebase cli.
app/build/intermidiates/merged_native_libs/appDebug/out/lib
Сжать папку
И
Код: Выделить всё
firebase crashlytics:symbols:upload --app="appId" path\lib.zip
Как загрузить символ ndk для Crashlytics?
Как загрузить символ ndk для Crashlytics?
p>
nativeSymbolUploadEnabled true
и ./gradlew :app:assembleAppDebug uploadCrashlyticsSymbolFileAppDebug
и Firebase CLI
firebase crashlytics
Подробнее здесь: https://stackoverflow.com/questions/791 ... in-android
Мобильная версия