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

问题描述 投票:1回答:1

我想在我做的每一个项目中上传NDK符号。

在我的Android内部的gradle,我曾经有。

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}")
}
  1. 自从我转到FireBase后,这个就不再编译了。

    无法获得未知属性'uploadCrashlyticsSymbolFile'。

  2. 我没有看到这个任务运行。

  3. 我基本上需要这个任务在每次编译时都运行。

    .gradlew app:assembleBUILD_VARIANT / app:uploadCrashlyticsSymbolFileBUILD_VARIANT

android firebase gradle android-ndk crashlytics
1个回答
2
投票

在app的底部加上这个 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条显然是一个错误的假设,因为这个 文件 明确指出。

./gradlew app:assembleBUILD_VARIANT app:uploadCrashlyticsSymbolFileBUILD_VARIANT

而这一点已经有了答案 此处.


为了总是上传,可以创建一个任务依赖关系。

assembleRelease.finalizedBy uploadCrashlyticsSymbolFileRelease

这可能需要设置 unstrippedNativeLibsDirstrippedNativeLibsDir.

© www.soinside.com 2019 - 2024. All rights reserved.