【问题标题】:Crashlytics doesn't see NDK kitCrashlytics 没有看到 NDK 套件
【发布时间】:2019-06-06 17:41:42
【问题描述】:

我使用 C++ 部分(使用 Cocos Creator 制作)将 Crashlytics 集成到 Android 应用程序中。 Java (Crashlytics.getInstance().crash()) 中的崩溃记录得很好,它们在 Firebase Crashlytics 控制台中可见。但未检测到 C++ 中的崩溃。所以我关注了instructions to turn on Crashlytics detailed logs,发现 Crashlytics 初始化的套件列表中缺少 NDK 套件:

06-06 19:13:55.241  9174  9174 D CrashlyticsCore: Exception handling initialization successful
06-06 19:13:55.242  9174  9174 D Fabric  : Initializing io.fabric.sdk.android:fabric [Version: 1.4.8.32], with the following kits:
06-06 19:13:55.242  9174  9174 D Fabric  : com.crashlytics.sdk.android:answers [Version: 1.4.7.32]
06-06 19:13:55.242  9174  9174 D Fabric  : com.crashlytics.sdk.android:beta [Version: 1.2.10.27]
06-06 19:13:55.242  9174  9174 D Fabric  : com.crashlytics.sdk.android:crashlytics [Version: 2.10.1.34]
06-06 19:13:55.242  9174  9174 D Fabric  : com.crashlytics.sdk.android.crashlytics-core [Version: 2.7.0.33]
06-06 19:13:55.242  9174  9174 D Fabric  :
06-06 19:13:55.253  9174  9245 D CrashlyticsCore: Opening a new session with ID ...

./build.gradle

buildscript {
    ....
    dependencies {
        ....
        classpath 'io.fabric.tools:gradle:1.29.0'
    }
    ....
}

./app/build.gradle

apply plugin: 'io.fabric'
...
crashlytics {
    enableNdk true
}
...
dependencies {
    ...
    implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
    implementation 'com.crashlytics.sdk.android:crashlytics-ndk:2.1.0'
    ...
}

更新

NDK 在我使用时从套件列表中消失

<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />

然后用

初始化它
Fabric.with(this, new Crashlytics());

为了首先获得用户的同意以遵守 GDPR。

在这种情况下,我应该通过 JNI 从 C++ 初始化 Crashlytics NDK 套件吗?

【问题讨论】:

  • Fabric/Firebaser 在这里 - 如果您查看 crashlytics.log,是否可以看到有关 NDK、符号生成或符号上传的任何信息?这是一种可靠的方式来查看您是否真的在初始化 NDK 套件。该日志将位于此处:在 Linux / Windows 上:~/.crashlytics/com.crashlytics.tools/crashlytics.log 在 Mac 上:~/Library/Caches/com.crashlytics/com.crashlytics.tools/crashlytics.log跨度>
  • @KevinKokomani 嗨!如果我只做assembleDebug,则没有。只有当我手动执行crashlyticsUploadSymbolsDebug 时它才会出现 - 但在那个阶段已经构建了 APK。我会在周一尝试构建小型示例项目并通知您。
  • @KevinKokomani 你好。我已将范围缩小到推迟初始化(请参阅原始帖子的更新),但在这种情况下仍然不知道如何解决。
  • 谢谢!您确实必须使用类似于“crashlyticsUploadSymbolsDebug”的符号上传任务来启动每个新构建 - 我们的插件将尝试找到您的二进制文件的路径,在它们上生成符号,然后将它们上传到我们的服务器。您可以尝试启用 Fabric.with(this, new Crashlytics(), new CrashlyticsNdk());而不是您当前的 init 语句?
  • @KevinKokomani 成功了,谢谢。我发布了我的答案,家庭 Firebase/Crashlytics 将更新文档以澄清“选择加入报告”的那一刻

标签: android android-ndk crashlytics


【解决方案1】:

如果您推迟 Crashlytics 初始化以获取用户的同意使用

<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />

然后要稍后激活 ndk-kit,您必须明确将其作为Fabric.with 的参数:

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

我希望 Firebase/Crashlytics 将更新文档的“选择加入报告”部分以提及这一点。

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多