如何解决如何配置Firebase Crashlytics以获取NDK故障报告
我目前正在开发一个Android应用程序,其中一个我使用2个本机库:
- GStreamer
- baresip。
在某些Android设备上,在特定用例上,GStreamer本机库使用以下堆栈跟踪使我的应用程序崩溃:
致命信号11(SIGSEV),代码1(SEGV_MAPPER),故障加法器 0xaaaaaaaaaaaaaaaaa在TID 2458中(汤httpsrc0:sr),pid 2334 (application.id)
#05 pc 00000000000e24a4 /apex/com.android.runtime/lib64/bionic/libc.so(__pthread_start(void *)+ 36)(BuildId: ceedf0f98da575de138b0c631aceca44)
#06 pc 0000000000083d98 /apex/com.android.runtime/lib64/bionic/libc.so(__start_thread + 64)(BuildId:ceedf0f98da575de138b0c631aceca44)
我可以在Logcat中看到此问题,但在Firebase Crashlytics控制台中却看不到。为了了解NDK崩溃到我的应用程序中,我想为NDK SDK实施Firebase Crashlytics。
我的应用程序包含2种风味尺寸:
- 一个“应用程序”维度,可在2个商店(Playstore和自定义商店)上部署应用程序;
- “环境”维度(产品,阶段,质量保证)。
如果我添加2种构建类型(调试和发布),则意味着我有12种构建变体。
对于2个“ app”维度,我使用了不同版本的GStreamer库。没有使用专用的NDK脚本将GStreamer直接内置到我的Android应用程序中,该脚本可以生成此类文件。
baresip使用cmake内置到我的应用程序中:
externalNativeBuild
{
cmake
{
cFlags '-DHAVE_INTTYPES_H'
}
}
这是我的项目的结构:
project/
+- app/
|
+- src/
|
+- main/
|
+- ccp/
|
+- baresipenative.c
+- CMakeLists.txt
+- appFlavor1/
|
+ jniLibs/
|
+- arm64-v8a/
|
+- libc++_shared.so
+- libgstreamer_android.so
+- libgstreamernative.so
+- armeabi-v7a/
|
+- libc++_shared.so
+- libgstreamer_android.so
+- libgstreamernative.so
+- appFlavor2/
|
+ jniLibs/
|
+- arm64-v8a/
|
+- libc++_shared.so
+- libgstreamer_android.so
+- libgstreamernative.so
+- armeabi-v7a/
|
+- libc++_shared.so
+- libgstreamer_android.so
+- libgstreamernative.so
根据Firebase Crashlytics NDK SDK,我需要将firebaseCrashlytics
属性配置到build.gradle
文件中。
当我仅配置nativeSymbolUploadEnabled
时,Crashlytics控制台中什么也没有出现:
firebaseCrashlytics {
nativeSymbolUploadEnabled true
}
所以我想我还需要配置strippedNativeLibsDir
和unstrippedNativeLibsDir
属性,如下所示:
firebaseCrashlytics {
nativeSymbolUploadEnabled true
strippedNativeLibsDir 'path/to/stripped/parent/dir'
unstrippedNativeLibsDir 'path/to/unstripped/parent/dir'
}
如果我正确地理解了文档,请放在strippedNativeLibsDir
属性中,我应该将路径放置到裸机构建文件的obj
目录中?
然后在unstrippedNativeLibsDir
属性中放置GStreamer的so文件的路径?
预先感谢您的帮助!
解决方法
查找已剥离和未剥离的库的正确路径本身就是一个完整的问题。根据您的问题,我不确定我们能否从您提供的项目结构中确切推断出要使用的目录!
通常,类似于../build/intermediates/cmake
的路径用于未剥离的lib,而../build/intermediates/stripped_native_libs
则用于剥离的libs字段。
如果您正在使用CMake构建本机库,为什么不尝试遵循this quick tutorial,它将有望引导您朝着正确的方向前进;您总是可以跳过最后解释有问题的lib目录的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。