Firebase App Distribution 和 Google play 安全签名
Posted
技术标签:
【中文标题】Firebase App Distribution 和 Google play 安全签名【英文标题】:Firebase App Distribution and Google play secure signing 【发布时间】:2020-12-30 10:42:34 【问题描述】:我已经在我们的项目中设置了Firebase App Distribution,并使用提供的“App Tester”android 应用程序,这太棒了。尽管我发现了一个我知道很多使用此工具的人都在经历的主要问题,并且从我所看到的情况来看,实际上没有人知道其背后的原因。
问题是:我从 Play 商店下载我的应用程序。然后我在 Firebase App Distribution 上部署我的应用程序的新版本来测试它,转到 App Tester,单击我的应用程序并单击安装。我收到错误“安装失败”,没有更多详细信息。要解决此问题,我必须从手机中卸载该应用,然后再次单击安装才能成功安装。
这背后的原因是 Android 不允许一个签名的 APK 被另一个使用不同密钥签名的 APK 更新。
我从 Play 商店下载的 APK 由我的 CI 签名,然后由 Play 商店用他们的 signing feature 再次签名(我知道可以启用/禁用它,但我更喜欢保持启用状态)。 Play 商店用于再次签署我的 APK 的密钥是私有的,没有人可以访问它。
但我在 Firebase App Distribution with Fastlane 上上传的 APK 是由我的 CI 签名的,而不是 Play 商店。所以关键是不同的,这就是 App Tester 无法安装应用程序的原因。
我不能告诉 Firebase 使用 Play 商店使用的密钥执行相同的流程来为我的 APK 签名吗?每当我以前从 Play 商店安装我的应用程序时,卸载它真的很烦人。更重要的是,我公司的测试人员不明白为什么会出现此错误并且不知道该怎么做,这很烦人......
【问题讨论】:
【参考方案1】:问题:您使用应用分发与测试人员共享的应用是否与 Playstore 上的应用具有相同的应用 ID(例如 com.xyz.abc)?
在一个设备上不能有两个具有相同应用 ID 的签名应用。 解决方案之一是将开发应用程序 ID 更新为与生产应用程序 ID 不同。
例如。 生产应用程序 ID - com.xyz.abc 开发应用 id - com.xyz.abc-dev
这也将使两个应用程序可以在同一设备上共存。
【讨论】:
我不太喜欢在测试人员的手机上安装两个不同的应用程序。即使它们有不同的名称,一些测试人员也会混淆它们并在生产 APK 上测试功能,从而浪费时间。我的目标是在 Android 上拥有与 ios Testflight 相同的行为。它不应该失败,因为安装的 APK 来自 Play 商店。 Tesflight 用于 beta 测试。在这种情况下,您可能需要查看适用于 Android 的 Playstore 测试版。 我说 testflight 是因为它的工作原理,而不是因为我想要一个具有 APK 验证时间的 beta 测试环境。我想要一个类似于 Testflight 的测试应用,在我上传我的 APK 和它可供测试人员使用的时间之间没有延迟。以上是关于Firebase App Distribution 和 Google play 安全签名的主要内容,如果未能解决你的问题,请参考以下文章
Firebase App Distribution 和 Google play 安全签名
Firebase App Distribution - 为新的 UDID 更新现有 IPA
ios distribution.cert 被撤销了,我可以提交到 App Store 吗?
iOS App Beta Distribution(大规模)
如何解决 Firebase:没有创建 Firebase App '[DEFAULT]' - 调用 Firebase App.initializeApp() (app/no-app)