我想在我做的每一个项目中上传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}")
}
自从我转到FireBase后,这个就不再编译了。
无法获得未知属性'uploadCrashlyticsSymbolFile'。
我没有看到这个任务运行。
我基本上需要这个任务在每次编译时都运行。
.gradlew app:assembleBUILD_VARIANT / app:uploadCrashlyticsSymbolFileBUILD_VARIANT
在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
块。它应该还能用。
很可能你需要使用Firebase App Distribution,它允许自动上传发布构建的工件--如果你有与之匹配的调试符号的工件,它们实际上可以被使用--如果没有与之匹配的装配,符号就有些无关紧要。
第1条显然是一个错误的假设,因为这个 文件 明确指出。
./gradlew app:assembleBUILD_VARIANT app:uploadCrashlyticsSymbolFileBUILD_VARIANT
而这一点已经有了答案 此处.
为了总是上传,可以创建一个任务依赖关系。
assembleRelease.finalizedBy uploadCrashlyticsSymbolFileRelease
这可能需要设置 unstrippedNativeLibsDir
和 strippedNativeLibsDir
.