在一个 APK 文件中的不同 Firebase 项目(运行时)之间切换

2024-03-09

我们正在将 Firebase 消息传递集成到 Android 应用程序中以用于推送通知。我们将使用服务器端的 SNS 向 Firebase 发送推送消息。以下是我们的用例:

  • 我们有三台服务器:QA、STG 和 PRODUCTION
  • 我们在 firebase 控制台中创建了三个项目:appQA、appSTG 和 appProd
  • 但我们只想生成 1 个 APK,它可以根据用户登录的服务器从上述三个 Fire Base 项目中的任何一个接收 Firebase 推送通知。
  • 我们在 firebase 中配置了每个项目,最后每个项目有 1 个 google-services.json 文件(总共 3 个)
  • 现在我们如何配置或生成 1 个 APK,它可以包含所有三个 json 文件并在它们之间切换runtime并不是构建时因为我们不想为不同的环境构建单独的 APK。我们严格要求生成一个可用于连接到我们所有环境并接收来自所有环境的推送通知的单个 APK。
  • 我们尝试过口味和构建类型,但两者都构建时并不是run-time

这是我们第一次涉足 Android 上的推送通知世界。

PS:最明显的解决方案是在 firebase 中只有一个项目并在客户端上配置它,我们所有的服务器都可以使用同一个项目,但理想情况下我们希望生产与 QA/STG 分别使用单独的项目


If you really如果需要一个能够以某种方式自行选择它所针对的 Firebase 项目的 APK,则无法使用 Gradle 插件提供的自动 init。

通常情况下,Firebase 应用程序自动初始化 https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html(一定要阅读我的博客文章)通过 gradle 插件注入的数据。该系统适用于绝大多数情况,但不适用于您的情况。

如果正常情况不适合您,您必须通过 Android 构建工具禁用 FirebaseInitProvider(请参阅工具:节点=“删除” https://developer.android.com/studio/build/manifest-merge.html),然后自己初始化您的应用程序FirebaseApp.initializeApp() https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp使用您构建的 FirebaseOptions。您需要安排在调用任何 API 之前进行 init,否则会出现错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在一个 APK 文件中的不同 Firebase 项目(运行时)之间切换 的相关文章

随机推荐

  • 实现 AVAssetDownloadURLSession 下载 HLS 流时出错

    我正在尝试为流应用程序实现离线模式 目标是能够在用户的设备上下载 HLS 流 以便即使用户离线时也可以观看流 我最近偶然发现本教程 https developer apple com library content documentatio
  • Angular2-捕获错误并将其显示在视图中

    我有一个执行 get 请求并抛出错误的服务 服务 ts return this http get apiUrl map response Response gt const items response json return items
  • PNG、GIF、JPEG、SVG 有哪些不同的用例? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在构建网站或界面等时何时应使用某些图像文件类型 他们的优点和缺点是什么 我知道PNG和GIF是无损的 而JPEG是有损的 但 PNG
  • 如何制作我的程序的流程图

    我有一个用java编写的非常大的服务器程序 它是由另一位不再在公司工作的开发人员编写的 非常复杂 它由23个包组成 我使用的是eclipse 我想要的是一个程序 它将获取我的程序的源文件并为函数创建一种流程图字符 从具有 main 的类开始
  • 特定计算机上的 C# 控制台应用程序出现奇怪问题

    我有最简单的 C 控制台应用程序 仅执行 WriteLine 和 ReadLine 由于某种原因 它不能在其构建的机器上以独立模式运行 我在另一个盒子上尝试了构建的可执行文件 它工作正常 尝试在这台机器上运行它会导致它挂在那里 它在 VS
  • 如何计算请求到响应的生命周期?

    我目前正在向请求对象添加一个 cookie 并从响应中的当前时间中减去它 但我假设有更好的方法来做到这一点 此外 在实际用例中 重复使用相同的 Cookie 密钥可能行不通 有任何想法吗 RequestFilters Add request
  • 复杂的 SQL 查询 - 折叠日期范围

    我们有一个表格列出了 服务时间 的开始和结束日期 我想要一个可以搜索所有行并根据日期间隔识别服务中断的查询 Data Start End 1 1 2000 2 1 2001 2 2 2001 4 1 2001 4 1 2004 6 2 20
  • SqlDbType 枚举映射 - C#

    其中有什么价值SqlDbType我应该使用枚举numericT SQL 数据类型 Decimal 请参阅此页面 http msdn microsoft com en us library system data sqltypes aspx
  • “暂停”具有属性的线程

    我有一个 TThread 对象 希望能够通过程序主窗体上的按钮启动 停止线程 我一直在研究实现这一点的方法 到目前为止我有以下想法 当用户单击 停止 时终止并释放线程 并在单击 开始 时创建一个新线程 使用 sleep 来延迟线程 我不想这
  • 输入 UITextField 时 iPhone 键盘不出现

    这一定是某种我看不到的新手错误 如果我能得到关于检查什么或去哪里的提示 我将不胜感激 我遵循了一个具有 UITextField 的 iPhone 教程 确保我连接了文本字段的 IBOutlet 并且它似乎可以正确编译 没有错误或警告 但是当
  • 使用 PhoneGap 进行闪烁导航的 Jquery Mobile 代码

    我相信这篇文章可以解决我的问题在页面之间导航时闪烁 https stackoverflow com questions 5953753 flickering when navigating between pages 具体来说 docume
  • 子类型的关系数据建模

    我正在学习关系模型和数据建模 我对子类型有些困惑 我知道数据建模是一个迭代过程 有许多不同的建模方法 但我不知道如何在不同的选项之间进行选择 Example 假设我们想要建模粒子 分子 原子 质子 中子 电子 为了简单起见 我们忽略夸克和其
  • 如何通过 gradle externaNativeTool 将特定参数(例如:opencv_dir)传递给 CMake?

    我正在尝试在 Android studio 中作为 externalNativeBuildTool 执行 CMake 脚本 它具有 OpenCV 依赖项 我知道我可以在脚本中静态定义 OpenCV 并且我不想在 android studio
  • 是否可以在 C++ 中为变量使用动态名称

    如果可能的话 我想使用动态名称 这是一个关于我的意思的例子 int sol1 sol2 for int i 1 i lt 3 i sol i i i return max sol1 sol2 With sol i I mean sol1在第
  • XCTests 无法间歇性地在模拟器中启动应用程序

    有没有人经历过并解决过 XCTests 间歇性无法在模拟器中启动应用程序进行 UI 测试 XCUI 我正在快速通道中运行 不同的测试似乎每次测试运行都失败 操作系统 10 12 3 iOS模拟器 10 0 Xcode 8 2 1 快车道2
  • wget 破坏了内容配置

    我正在尝试从以下网站下载通过 Content Disposition attachment 发送的 kml 文件 http waterwatch usgs gov index php m real w kml r us regions ia
  • 我应该在 PHP 代码中使用 @ 吗?

    如果我使用 在我的代码中 它会影响性能吗 这篇文章有助于回答您的问题 http anvilstudios co za blog php how to ignore errors in a custom php error handler h
  • 在 Perl 中将变量链接到类属性

    这个问题源于另一个问题 Perl中彻底销毁一个对象的所有痕迹 https stackoverflow com questions 31841484 completely destroy all traces of an object in
  • 在构建jenkins项目时,10分钟后发生超时错误

    我正在使用 jenkins 构建我的 git 远程项目 问题是日志显示 10 分钟后超时 开始接收对象 并在 56 时发生了一些事情 编辑您的作业配置 然后在 git 插件部分下 点击 添加 单击 高级克隆行为 在 克隆和获取操作的超时 以
  • 在一个 APK 文件中的不同 Firebase 项目(运行时)之间切换

    我们正在将 Firebase 消息传递集成到 Android 应用程序中以用于推送通知 我们将使用服务器端的 SNS 向 Firebase 发送推送消息 以下是我们的用例 我们有三台服务器 QA STG 和 PRODUCTION 我们在 f