如何配置Firebase Crashlytics以获取NDK崩溃报告



我目前正在开发一个Android应用程序,其中我使用了两个本地库:

  • GStreamer
  • baresip

在某些Android设备上,在特定的用例中,GStreamer本机库会使用以下堆栈使我的应用程序崩溃:

致命信号11(SIGSEV(,代码1(SEGV_MAPPER(,故障地址tid 2458中的0xaaaaaaaaaa(souphttpsrc0:sr(,pid 2334(application.id(

#05 pc 00000000000 e24a4/apex/com.android.runtime/lib64/bionic/libc.so(__pthread_start(void*(+36((构建ID:ceedff98da575de138b0c631 aceca44(

#06 pc 00000000000 83d98/apex/com.android.runtime/lib64/bionic/libc.so(__start_thread+64((构建ID:ceedff98da575de138b0c631aceca44(

我可以在logcat中看到这个问题,但不能在我的Firebase Crashlytics控制台中看到。为了了解NDK在我的应用程序中的崩溃,我想为NDK SDK实现Firebase Crashlytics。

我的应用程序包含两个口味维度:

  • an";应用程序";在2个商店(playstore和一个自定义商店(上部署应用程序的维度
  • en";"环境";维度(prod、staging、qa(

如果我添加了两个构建类型(调试和发布(,这意味着我有12个构建变体。

对于2〃;应用程序";维度,我使用不同版本的GStreamer库。GStreamer并没有直接构建到我的Android应用程序中,而是使用专门的NDK脚本来构建so文件。

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
}

所以我想我还需要配置strippedNativeLibsDirunstrippedNativeLibsDir属性,如下所示:

firebaseCrashlytics {
nativeSymbolUploadEnabled true
strippedNativeLibsDir 'path/to/stripped/parent/dir'
unstrippedNativeLibsDir 'path/to/unstripped/parent/dir'
}

如果我正确理解了文档,那么我应该将baresip构建文件的obj目录的路径放入strippedNativeLibsDir属性中?

unstrippedNativeLibsDir属性中,我应该输入GStreamer的so文件的路径?

提前感谢您的帮助!

为剥离和未剥离的库找到正确的路径本身就是一个完整的问题。根据你的问题,我不确定我们能否从你给出的项目结构中准确推断出要使用的目录!

通常,类似于../build/intermediates/cmake的路径用于未剥离的库,而../build/intermediates/stripped_native_libs用于剥离的库字段。

如果你正在使用CMake来构建你的原生库,为什么不尝试遵循这个快速教程呢?它有望引导你朝着正确的方向前进;您总是可以跳过阅读,直到最后解释有问题的lib目录。

相关内容

  • 没有找到相关文章

最新更新