简短的问题:
如何更改库模块中调试或发布构建类型的包名称?
上下文:
在具有 MVP + Clean 架构的 Android 项目中,我们在库模块中有存储库模式。我们希望在具有两个环境(开发和生产)的库中包含 Firebase。
我已经在 Firebase (com.example.com
和com.example.com.dev
) 中创建了项目,然后将相应的项目下载google-services.json
到 src/main 和 src/debug 文件夹。
Gradle google-services插件使用google-services.json中定义的客户端 ID 验证模块包名称,但 Android 限制applicationId
在库中更改(我找不到技术原因)
我尝试过的事情:
- 有两个具有不同包属性的 AndroidManifest.xml。
com.example.com
在 src/main 和com.example.com.dev
src/debug/ 但第二个它只是被忽略 manifest.srcFile
在 Gradle sourceSets 中设置。运行时文件在列表中,./gradlew sourceSets
但包名没有改变- 库模块中有两种不同的风格,并为每种风格设置不同的清单。无论如何,包装不会改变。
目前我只有两个合适的解决方案: 1. 将 Firebase 设置和实现保留在存储库之外的 app 模块中。2. Firebase 只有一个环境。
非常感谢任何帮助或建议。
编辑:
考虑到我需要在模块(库)中修改包,而不是在应用程序中。由于某些奇怪的原因,当我尝试使用applicationIdSuffix
或applicationId
在模块中时,Gradle 会显示此错误:
错误:库项目无法设置 applicationIdSuffix。