android - 如何在库模块中使用不同的包名称进行调试和发布?

标签 android firebase gradle

小问题:

如何更改库模块中debugrelease 构建类型的包名称?

上下文:

在采用 MVP + Clean 架构的 Android 项目中,我们在库模块中使用了存储库模式。我们希望在具有两个环境(开发和生产)的库中包含 Firebase。

我已经在 Firebase 中创建了项目(com.example.comcom.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 只有一个环境。

非常感谢您的帮助或建议。

编辑:

考虑到我需要修改模块(库)中的包,而不是在应用程序中。出于某种奇怪的原因,当我尝试在模块中使用 applicationIdSuffixapplicationId 时,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 更改为特定的风格/构建类型,然后您可以看到更新的包名称生效。

请参见下面的屏幕截图。

enter image description here

关于android - 如何在库模块中使用不同的包名称进行调试和发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52639323/

相关文章:

ios - 如何使用 Swift3 在​​ FIrebase 中查询/检查特定的键/值对

javascript - 带角色的Firestore查询?

android - 使用minifyEnabled执行我的应用时出现ClassCastException true

android - 在 PopupWindow 中长按 EditText 不显示系统编辑对话框

当应用程序在后台时,Android altbeacon 的间隔范围

java - 如何使用 Android 配置 Proguard,使其不会删除仅在 XML 布局中引用的事件处理程序方法?

Swift firebase 我的数据库变得有点复杂,我应该如何访问这个 child ?

android - 如何使用 gradle 任务解析 .json 文件并从中获取 json 数据?

gradle - 更改生成的 war 文件的名称并复制 war 文件

android - Toast 和 onOnclick,toast k 不会显示