【问题标题】:Crashlytics NDK symbols and Gradle tasksCrashlytics NDK 符号和 Gradle 任务
【发布时间】:2016-05-25 11:33:15
【问题描述】:

我有一个主要与 gradle 相关的问题。

我正在使用 Crashlytics 报告我的 Android 应用中的 NDK 崩溃。 我在 build.gradle 中有一个任务,它调用 ndk-build 并将 cpp 文件编译成 .so 文件。 在此任务结束时,我想调用一个将生成的符号映射上传到 Crashlytics 的任务。

在 Android Studio 中安装 Fabric 插件后,我看到 Gradle 选项卡中添加了一些新任务。其中之一是 crashlyticsUploadSymbols[buildType][flavor] 其中 buildType 和 flavor 指示当前选择的构建类型和风格。

这个任务似乎上传了一个符号文件。

我的问题是, 是否可以从 build.gradle 中调用此任务? 目前我在 Android Studio 的终端选项卡中使用手动调用,形式为:

./gradlew crashlyticsUploadSymbols[buildType][flavour]

是否可以从 build.gradle 中以某种方式调用此任务?

为了调用这个任务,我在 buildNdk 任务结束时使用 finalizedBy,所以一旦 buildNdk 完成,上传任务就会执行。

同样非常重要的是,如何获取当前的 buildType 和 flavor,以便能够将其添加到 crashlyticsUploadSymbols 调用中?

谢谢!

【问题讨论】:

    标签: android gradle android-ndk twitter-fabric crashlytics-android


    【解决方案1】:

    来自 Crashlytics 和 Fabric 的 Mike 在这里。

    这也在 Twitter 社区论坛上得到了回答,但在这里分享了相同的答案。

    选项 1:

    如果您只想或需要为发布构建上传符号,则可以将 crashlticsUploadSymbolsRelease 设置为 ndk-build 任务的 finalizedBy 任务。

    选项 2: 如果您有多个基于变体的任务,您可以执行以下操作:

    android.applicationVariants.all { variant ->
        def variantName = variant.name.capitalize()
        def task = project.task ("ndkBuild${variantName}")
        task.finalizedBy project.("crashlyticsUploadSymbols${variantName}")
    }
    

    【讨论】:

    • 这对我不起作用,我得到Error:(101, 0) Cannot add task ':App:externalNativeBuildProdDebug' as a task with that name already exists. <a href="openFile:/path/to/app/build.gradle">Open File</a> 所以仍然需要手动上传:(
    • 听起来您可能有重复的任务,但我建议您发布一个包含更多详细信息的新问题。
    【解决方案2】:

    以下为我完成了这项工作:

    android {
    ...
        afterEvaluate {
            assembleDebug.finalizedBy(crashlyticsUploadSymbolsDebug)
            assembleRelease.finalizedBy(crashlyticsUploadSymbolsRelease)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-02
      • 1970-01-01
      • 2017-03-01
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      相关资源
      最近更新 更多