2

我有一个主要与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 调用中?

谢谢!

4

2 回答 2

4

来自 Crashlytics 和 Fabric 的 Mike 在这里。

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

选项1:

如果您只想或需要为您的发布版本上传符号,那么您可以设置crashlticsUploadSymbolsReleasefinalizedBy您的 ndk-build 任务的任务。

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

android.applicationVariants.all { variant ->
    def variantName = variant.name.capitalize()
    def task = project.task ("ndkBuild${variantName}")
    task.finalizedBy project.("crashlyticsUploadSymbols${variantName}")
}
于 2016-05-26T15:08:17.107 回答
1

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

android {
...
    afterEvaluate {
        assembleDebug.finalizedBy(crashlyticsUploadSymbolsDebug)
        assembleRelease.finalizedBy(crashlyticsUploadSymbolsRelease)
    }
}
于 2017-12-06T15:58:54.383 回答