AppCenter自定义Flavor构建失败,如何修改Gradle任务指定变体?
解决AppCenter构建错误变体导致Google Services包名不匹配问题
问题原因
报错No matching client found for package name '{package}'是因为当前构建的{clientName}DevRelease变体对应的包名,在你的google-services.json文件中没有匹配的客户端配置。你需要指定正确的Gradle变体来构建,确保该变体的包名与google-services.json中的配置一致。
解决步骤
1. 确认正确的变体名称
在本地项目根目录执行以下命令,查看所有可用的Gradle构建变体:
- Mac/Linux:
./gradlew tasks - Windows:
gradlew tasks
在输出的Build tasks区域,找到以assemble开头的任务,比如assembleMainProdRelease、assembleStagingRelease等,这些就是你可以指定的变体命令。
2. 修改AppCenter的YAML配置
将默认配置中的tasks字段替换为指定正确变体的命令:
- task: Gradle@1 displayName: Gradle Task inputs: tasks: 'clean :app:assemble{YourCorrectVariantName}' # 替换成你确认的正确变体名称 options: >- -DAPPCENTER_KEYSTORE_PASSWORD="$(keystorePassword)" -DMOBILECENTER_KEYSTORE_PASSWORD="$(keystorePassword)" -DAPPCENTER_KEY_ALIAS="$(keyAlias)" -DMOBILECENTER_KEY_ALIAS="$(keyAlias)" -DAPPCENTER_KEY_PASSWORD="$(keyPassword)" -DMOBILECENTER_KEY_PASSWORD="$(keyPassword)" jdkArchitecture: x86 publishJUnitResults: false sqAnalysisBreakBuildIfQualityGateFailed: false
示例
如果正确的变体是MainProdRelease,修改后的tasks字段应为:
tasks: 'clean :app:assembleMainProdRelease'
如果你的应用没有产品风味,仅使用默认构建类型,确保google-services.json中的包名与Release构建类型的包名一致,直接保留assembleRelease即可,但需要检查本地构建是否正常,排除风味自动注入的问题。
内容的提问来源于stack exchange,提问作者R.Sanchez
相关产品推荐
相关产品推荐

