Crashlytics NDK 如何启用原生符号上传

Crashlytics NDK How to Enable native symbol uploading

我正在尝试为我的 NDK android 应用程序启用 crashlytics。我按照 the guide here. 我卡在了第 2 步。

Step 2: Enable native symbol uploading To produce readable stack: traces from NDK crashes, Crashlytics needs to know about the symbols in your native binaries. Our Gradle plugin includes the uploadCrashlyticsSymbolFileBUILD_VARIANT task to automate this process (to access this task, make sure nativeSymbolUploadEnabled is set to true).

For method names to appear in your stack traces, you must explicitly invoke the uploadCrashlyticsSymbolFileBUILD_VARIANT task after each build of your NDK library. For example:

>./gradlew app:assembleBUILD_VARIANT\
           app:uploadCrashlyticsSymbolFileBUILD_VARIANT

For method names to appear in your stack traces, you must explicitly invoke the uploadCrashlyticsSymbolFileBUILD_VARIANT task after each build of your NDK library.是什么意思?我还看到他们留下了 gradlew 一行。这是命令行上的命令吗?我很迷茫。谁能帮我完成第 2 步?

当您像 Step1 中提到的那样将“nativeSymbolUploadEnabled true”添加到 gradle 文件时,这将指示 gradle 插件生成格式为“uploadCrashlyticsSymbolFileBUILD_VARIANT" 对于每个构建类型和体系结构。检查此屏幕截图,其中我只有一种构建类型“发布”,但也有三种架构。生成的任务是:

  1. 上传CrashlyticsSymbolFileArm8Release
  2. 上传 CrashlyticsSymbolFileUniversalRelease
  3. uploadCrashlyticsSymbolFileX86_64Release

要 运行 这些任务,您需要在为所需构建变体更新的终端中执行命令,例如

>./gradlew app:assembleX86_64\
       app:uploadCrashlyticsSymbolFileX86_64Release

或在 gradle 选项卡中手动调用这些任务。它们需要按此顺序执行(首先是 assemble,然后是 uploadCrashlyticsSymbolFile...)以确保已为 Crashlytics 创建二进制文件以生成和上传符号文件。

回答您的问题:要使方法名称出现在堆栈跟踪中,您必须在每次构建 NDK library.mean 后显式调用 uploadCrashlyticsSymbolFileBUILD_VARIANT 任务是什么意思? Crashlytics 需要符号文件才能将崩溃报告转换为具有方法名称和行号的可读堆栈跟踪。

我也是一头雾水,不过终于明白了。

这个命令应该是这样的

首先,移动到目录

cd /YourProjectRootPath/proj.android/

你可以在这个目录下找到gradlew文件。

然后执行gradlew到运行两个任务

任务 1:assembleDebug 或 assembleRelease

任务 2:上传 CrashlyticsSymbolFileDebug 或上传 CrashlyticsSymbolFileRelease

命令是,(调试示例)

./gradlew XXXXXX:assembleDebug XXXXXX:uploadCrashlyticsSymbolFileDebug

请将“XXXXXX”替换为您的“应用名称”。

如果您不知道您的应用名称是什么,请运行下面的命令。

./gradlew tasks --all

您可以看到所有的任务名称,并且可以找到这两个任务。

XXXXXX:组装调试 XXXXXX:uploadCrashlyticsSymbolFileDebug

这个“XXXXXX”就是您的“应用名称”。

我不知道为什么Google用“>”和“\”来描述这么复杂的命令,但它只是一个简单的命令,

./gradlew <TASK1> <TASK2>