如何不重复源码创建多版本应用 解决Gradle配置applicationIdSuffix报错
Gradle配置构建变体applicationIdSuffix不生效问题
问题背景
- 已针对该问题排查整日,当前接手的非自研遗留应用此前从未规范使用构建配置,目标是配置Debug、Power User、Release三类构建变体。
- 此前版本发布无规范流程:开发人员仅手动将版本名修改为三类名称之一、调整对应连接字符串后就打包部署,安装时会直接覆盖旧版应用。
- 目前已完成两个构建变体的创建,可通过构建变体配置区分应用对接生产环境或测试环境(node API后端)的连接字符串。
- 目标效果:通过Gradle配置
applicationIdSuffix,让开发版部署时可作为独立应用存在,自带独立版本名与应用标签,无需每次手动修改相关配置。
已完成配置与报错信息
当前编写的debug构建类型配置如下:
debug { manifestPlaceholders appLabel: 'DevApp' minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-debug.txt' applicationIdSuffix '.debug' versionNameSuffix 'bvd' }
配置后构建未生效,提示与manifest文件中的包名不匹配,报错信息如下:
Execution failed for task ':app:processDebugGoogleServices'. > No matching client found for package name 'com.baywater.app.debug'
待确认问题
- 是否无需创建完全独立的代码包即可实现该需求?
- 如果创建关联原有源码的新包,是否需要额外配置manifest文件?
当前项目现状
- 项目所有内容(包括appName类)均存于app目录下,曾尝试在目录内创建名为debug的新包,但仍因引用manifest文件中的包名导致配置失败。
- 此前了解到appID已与包名解耦,但实际测试时并未体现该特性。
相关配置参考截图:
内容的提问来源于stack exchange,提问作者Craig
相关产品推荐
相关产品推荐

