【问题标题】:Crashlytics NDK How to Enable native symbol uploadingCrashlytics NDK 如何启用本地符号上传
【发布时间】:2020-12-19 18:26:34
【问题描述】:

我正在尝试为我的 NDK android 应用启用 crashlytics。我跟着the guide here. 我在第 2 步卡住了。

第 2 步:启用本地符号上传以生成可读堆栈: NDK 崩溃的痕迹,Crashlytics 需要了解符号 在您的本机二进制文件中。我们的 Gradle 插件包括 uploadCrashlyticsSymbolFileBUILD_VARIANT 任务来自动化这个过程 (要访问此任务,请确保将 nativeSymbolUploadEnabled 设置为 真的)。

要让方法名称出现在堆栈跟踪中,您必须显式 每次调用 uploadCrashlyticsSymbolFileBUILD_VARIANT 任务 构建您的 NDK 库。例如:

>./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 步?

【问题讨论】:

    标签: firebase android-ndk crashlytics


    【解决方案1】:

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

    这个命令应该是这样的。

    首先,移动到目录

    cd /YourProjectRootPath/proj.android/
    

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

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

    任务 1:assembleDebug 或 assembleRelease

    任务2:uploadCrashlyticsSymbolFileDebug 或uploadCrashlyticsSymbolFileRelease

    命令是,(调试示例)

    ./gradlew XXXXXX:assembleDebug XXXXXX:uploadCrashlyticsSymbolFileDebug
    

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

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

    ./gradlew tasks --all
    

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

    XXXXXX:assembleDebug XXXXXX:uploadCrashlyticsSymbolFileDebug

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

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

    ./gradlew <TASK1> <TASK2>
    

    【讨论】:

      【解决方案2】:

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

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

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

      >./gradlew app:assembleX86_64\
             app:uploadCrashlyticsSymbolFileX86_64Release
      

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

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

      【讨论】:

      • 很好的解释。每次更改 gradle 并重新同步 gradle 时都需要这样做吗?或者这样做 1 次(在添加 crashlitics ndk 之后)好吗?
      • 每次需要构建应用程序时,您都需要运行这些 gradle 任务(组装和上传CrahslyticsSymbolFile...),尤其是在本机代码发生更改时。当代码发生更改时,编译后的二进制文件也会有所不同,Crashlytics 将需要新符号来进行这些更改。
      • 有没有办法自动化这个?好像很容易忘记
      • 我认为可以指示gradle以指定的顺序运行任务,但我不是很熟悉。我认为与此有关:docs.gradle.org/current/userguide/tutorial_using_tasks.html
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多