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
这可能需要设置unstrippedNativeLibsDir
和strippedNativeLibsDir
。
【讨论】:
以上是关于Android gradle 在每次构建时上传 NDK 符号的主要内容,如果未能解决你的问题,请参考以下文章
[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 仓库 )