【问题标题】:How to report third party NDK crashes using crashlytics如何使用 crashlytics 报告第三方 NDK 崩溃
【发布时间】:2018-01-25 21:09:48
【问题描述】:

我从 Google Play 控制台收到以下 NDK 崩溃报告,但在 Crashlytics 中没有。

#00  pc 0000000000049c44  /system/lib/libc.so (tgkill+12)
#01  pc 00000000000473e3  /system/lib/libc.so (pthread_kill+34)
#02  pc 000000000001d535  /system/lib/libc.so (raise+10)
#03  pc 0000000000019081  /system/lib/libc.so (__libc_android_abort+34)
#04  pc 00000000000170e4  /system/lib/libc.so (abort+4)
#05  pc 000000000000c3a1  /system/lib/libcutils.so (__android_log_assert+112)
#06  pc 000000000002352d  /system/lib/libhwui.so
#07  pc 0000000000024db3  /system/lib/libhwui.so
#08  pc 00000000000281a9  /system/lib/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+80)
#09  pc 000000000000e361  /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+140)
#10  pc 0000000000064d19  /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+80)
#11  pc 0000000000046eb3  /system/lib/libc.so (_ZL15__pthread_startPv+22)
#12  pc 0000000000019acd  /system/lib/libc.so (__start_thread+6)

我想让 Crashltytics 也报告这些崩溃。我们不使用任何 NDK 库,崩溃应该来自外部 3rd 方库。我正在阅读https://docs.fabric.io/android/crashlytics/ndk.html,但仍然不知道该怎么做。

问题 1

鉴于我已经在我的 Android 应用程序中使用 Crashlytics,我必须进行/添加的确切配置更改是什么才能让 crashlytics 从外部 3rd 方库报告 NDK 崩溃?

问题 2

https://docs.fabric.io/android/crashlytics/ndk.html 中,提到了Uploading symbols for external dependenciessymbols 是什么?我应该关心它吗?

提前致谢。

【问题讨论】:

  • 你有解决上述NDK崩溃的办法吗?

标签: android android-ndk crashlytics


【解决方案1】:

您可以将 craslytics ndk 包含到您的 build.gradle 中,并且本机崩溃将在同一仪表板中报告。最近,crashlytics 已与 Firebase 集成。

crashlytics {
  enableNdk true
}
implementation 'com.crashlytics.sdk.android:crashlytics:2.8.0'
implementation 'com.crashlytics.sdk.android:crashlytics-ndk:2.0.1'

而在 Java 中你必须添加 NDK:

Fabric.with(this, new Crashlytics(), new CrashlyticsNdk());

nativeInitCrashlytics();

上传符号,这些报告可能会变得更有意义,但这与您无关,因为您没有第三方原生库的源代码,并且知道它所在的函数的名称并没有帮助崩溃。

也就是说,请注意,这个特定的崩溃很可能仍然不会出现在 Crashlytics 仪表板中。堆栈表明某些硬件加速渲染过程失败。可能与您的代码没有直接关系。

【讨论】:

  • 嗨,Alex,非常感谢您的回复。 nativeInitCrashlytics() 方法是什么?我应该实施吗?
  • 糟糕,我的错。你不需要这个电话。我们使用它to initialize the native context 来使用 C++ 中的 Crashlytics Native API,但如果没有它,您将收到崩溃报告。
  • 谢谢! Crashlytics 文档中似乎完全没有这些步骤。
猜你喜欢
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 2018-09-05
  • 2021-07-05
  • 2019-10-07
  • 2015-03-14
相关资源
最近更新 更多