小问题:
如何更改库模块中debug 或release 构建类型的包名称?
上下文:
在采用 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。 src/main 中的
com.example.com
和 src/debug/中的com.example.com.dev
但第二个它被忽略了 - 在 Gradle sourceSets 中设置
manifest.srcFile
。当我运行./gradlew sourceSets
时文件在列表中,但包名称没有改变 - 库模块中的两种不同风格,并为每一种设置不同的 list 。无论如何,包裹不会改变。
目前我只有两个合适的解决方案: 1. 将 Firebase 设置和实现保留在存储库之外的应用程序模块中。 2. Firebase 只有一个环境。
非常感谢您的帮助或建议。
编辑:
考虑到我需要修改模块(库)中的包,而不是在应用程序中。出于某种奇怪的原因,当我尝试在模块中使用 applicationIdSuffix
或 applicationId
时,Gradle 显示此错误:
错误:库项目无法设置 applicationIdSuffix。
最佳答案
库项目不能设置applicationId。
这是 Android 库项目的设计行为。
Two different flavors in the library module and set different manifests for each one. The package anyway doesn't change.
可能您需要将您的Build Variants 更改为特定的风格/构建类型,然后您可以看到更新的包名称生效。
请参见下面的屏幕截图。
关于android - 如何在库模块中使用不同的包名称进行调试和发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52639323/