首页 > 解决方案 > 无法在 Crashlytics 中获取本机崩溃的堆栈跟踪

问题描述

我有一个包含本机库 (.so) 的 Android 项目。我已将 firebase crashlytics 集成到我的项目中。我能够在 firebase crashlytics 中获取 Java 崩溃的崩溃转储。但是,在本机崩溃的情况下 - 堆栈跟踪丢失例如 - 它类似于:

Crashed: Thread: SIGSEGV  0x0000000003000000
       at (Missing)()
       at (Missing)()
       at (Missing)()
       at (Missing)()
       at (Missing)()

我已经分别在文件夹 app/src/main/obj 和 app/src/main/libs 中添加了原生库的调试和发布版本 app build.gradle 的相关部分是:

crashlytics {
    enableNdk true
    androidNdkOut 'src/main/obj/'
    androidNdkLibsOut 'src/main/libs/'
    //manifestPath 'src/main/AndroidManifest.xml'
}

我使用命令上传本机符号

./gradlew crashlyticsUploadSymbolsRelease

返回成功(我的应用程序的构建变体是 Release)。我也做过

./gradlew crashlyticsUploadSymbolsDebug

可以肯定的是,但这也无济于事。

所以我的问题是:

  1. 有没有我遗漏的步骤?

  2. 我该如何调试和解决这个问题?

标签: androidfirebaseandroid-ndkcrashlyticsgradlew

解决方案


不要忘记检查命令的详细输出./gradlew crashlyticsUploadSymbolsRelease --debug。它必须显示类似Crashlytics symbol file uploaded successfully. 如果不是这种情况,请检查可能指示根本原因的周围消息。

这对我来说还不够,为了解决这个问题,我遵循了这里的建议:我在文件中设置android:extractNativeLibs为。trueAndroidManifest.xml

<application
    android:extractNativeLibs="true"
    ...
</application>

请注意,此设置会影响 apk 大小及其安装大小,如下所述:Setting android:extractNativeLibs=false to reduce app size


推荐阅读