Android gradle 在每次构建时上传 NDK 符号

Posted

技术标签:

【中文标题】Android gradle 在每次构建时上传 NDK 符号【英文标题】:Android gradle Upload NDK symbols on every build 【发布时间】:2020-08-29 13:55:50 【问题描述】:

我想在每次构建时上传 NDK 符号,

在我的 android 里面,我曾经拥有过:

applicationVariants.all  variant ->
    def variantName = variant.name.capitalize()
    println("symbols will be added on varinat $variantName")
    def task = project.task("ndkBuild$variantName")
    task.finalizedBy project.("uploadCrashlyticsSymbolFile$variantName")

    自从我搬到 FireBase 后,这不再编译了:

    无法获取未知属性“uploadCrashlyticsSymbolFile”

    我没有看到此任务正在运行。

    我基本上需要在每次构建时运行此任务:

    ./gradlew app:assembleBUILD_VARIANT\ 应用程序:uploadCrashlyticsSymbolFileBUILD_VARIANT

【问题讨论】:

您是否也包括构建类型?如果您查看 gradle 任务列表,则会为每种风格和构建类型生成该作业 【参考方案1】:

将此添加到应用的底部build.gradle android ... 块之外。

afterEvaluate 
    android.applicationVariants.all  variant ->
        def variantName = variant.name.capitalize()
        println("symbols will be added on variant $variantName")

        def task = tasks.findByName("assemble$variantName")
        def uploader = "uploadCrashlyticsSymbolFile$variantName"

        // This triggers after task completion
        task?.finalizedBy(uploader)

        // This ensures ordering
        task?.mustRunAfter(uploader)
    

您可以尝试不使用afterEvaluate 阻止。它应该仍然有效。

【讨论】:

【参考方案2】:

您可能需要使用 Firebase App Distribution,它允许自动上传发布构建工件 - 如果您有带有匹配调试符号的工件,它们实际上可以使用 - 如果没有匹配的程序集,这些符号有点无关紧要。

数字 1 显然是一个错误的假设,因为documentation 明确指出:

./gradlew app:assembleBUILD_VARIANT app:uploadCrashlyticsSymbolFileBUILD_VARIANT

这已经回答了here。


为了始终上传,可以创建一个任务依赖:

assembleRelease.finalizedBy uploadCrashlyticsSymbolFileRelease

这可能需要设置unstrippedNativeLibsDirstrippedNativeLibsDir

【讨论】:

以上是关于Android gradle 在每次构建时上传 NDK 符号的主要内容,如果未能解决你的问题,请参考以下文章

Android studio Gradle 构建加速

[Android Studio 3.5为每个调试会话进行gradle构建

Android Gradle 插件自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )

Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ⑧ ( 设置 Gradle 插件模块 | 将 Gradle 插件上传到自建 Maven 仓库 )

在 Android 中添加 Neumorphism 依赖项时构建失败

Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ③ ( 配置上传工件 | 将 Gradle 插件 jar 包源码文档上传到本地Maven 仓库 )