【发布时间】:2021-02-17 01:28:29
【问题描述】:
我目前正在开发一个 Android 应用程序,其中一个我使用了 2 个本机库:
- GStreamer
- 裸露。
在某些 Android 设备上,在特定用例中,GStreamer 原生库使用以下堆栈跟踪使我的应用程序崩溃:
致命信号 11 (SIGSEV),代码 1 (SEGV_MAPPER),故障地址 0xaaaaaaaaaaaaaaa 在 tid 2458 (souphttpsrc0:sr), pid 2334 (应用程序.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 和一个自定义商店)上部署应用;
- en“环境”维度(prod、staging、qa)。
如果我添加 2 个构建类型(调试和发布),这意味着我有 12 个构建变体。
对于 2 个“应用”维度,我使用了不同版本的 GStreamer 库。 GStreamer 没有直接内置到我的 Android 应用程序中,并使用构建 so 文件的专用 NDK 脚本。
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 属性中,我应该将路径放入到baresip 构建文件的obj 目录?
在unstrippedNativeLibsDir 属性中,我应该将GStreamer 的so 文件的路径放入?
提前感谢您的帮助!
【问题讨论】:
标签: android firebase android-ndk crashlytics crashlytics-android