由于 APK 正在重新签名,Firebase 服务无法与 Firebase 测试实验室设备一起使用

Posted

技术标签:

【中文标题】由于 APK 正在重新签名,Firebase 服务无法与 Firebase 测试实验室设备一起使用【英文标题】:Firebase Services not working with Firebase Test Lab devices due to the APK is being re-sign 【发布时间】:2021-09-01 21:44:57 【问题描述】:

我正在使用 Firebase 测试实验室进行测试,但很可能由于 Firebase SDK 出现问题,模拟器无法继续运行。启动屏幕后应用程序无法继续,因为它需要远程配置才能成功获取,如果失败则显示 AlertDialog。

来自测试实验室的错误日志

我检查了 app-debug.apk SHA,它与在 Firebase 项目和云控制台中注册的内容相同,我可以在我的设备上本地运行它。

【问题讨论】:

【参考方案1】:

这里可能的问题是 Robo 通常必须在 FTL 中运行测试之前重新签署您的应用程序。

测试 API 中有一个新功能,可让您将 Robo 测试模式设置为 ROBO_VERSION_1,这将在 UIAutomator-only 模式下运行 Robo,而无需退出应用程序。不幸的是,该功能尚未在 Firebase 控制台或 gcloud CLI 中公开。

【讨论】:

谢谢,那么解决方法是什么?我认为他们从未在解释 Firebase Robo 测试的文档中提到重新签署应用程序并且无法真正回忆起它,但在我认为它无需进一步操作即可工作之前。 你很可能是对的,我在这些测试中使用了 Robo 脚本,所有那些失败的测试也使用了 Robo 脚本。另一方面,使用默认 Robo 爬虫的常规测试可以正常工作。我现在通过电子邮件发送更多详细信息。 只是为了澄清,尽管使用默认 Robo 爬虫进行常规测试工作正常,但仍然无法使用远程配置【参考方案2】:

您的 Roboscript 失败,因为应用程序无法正常启动,因此 Roboscript 无法执行其操作。

如果由于您的应用的 APK 被重新签名而导致远程配置无法获取,那么您可以让 Robo 尝试在不重新签署 APK 的情况下抓取您的应用,方法是确保您的应用在远程配置无法获取且没有任何内容的情况下停止其他对话框(显示在您的爬网图中)。在 FTL 中,当 Robo 检测到应用重新签名后无法爬取时,它会在不重新签名的情况下尝试爬取。

【讨论】:

目前,跳过对 APK 重新签名的标志未在 Firebase 控制台或 gcloud CLI 中公开。我们正在考虑尽快提供此标志。同时,您可以稍微调整您的应用程序,让 Robo 尝试在不重新签署 APK 的情况下抓取它。要实现这一点,您不需要删除 Remote Config 部分,您只需要确保当它无法获取时,没有可供 Robo 交互的按钮(就像在警告对话框中一样)。例如,您可以检查获取失败并立即使您的应用崩溃,因此不会显示任何对话框。 避免重新签署 APK 的选项将在大约一周后在我们的 API 中公开访问。根据您的 CI 设置,更新客户端(如果有)可能需要一些额外的时间。你介意扩展一下你的 CI 设置吗?您是直接使用我们的 API 或 gcloud 还是其他一些工具?谢谢! 感谢您提供详细信息!因此,我们还需要更新 gcloud 以添加一个参数,该参数允许您指定您不希望 Robo 重新签署您的 APK(并相应地更改 testlab_first_robo_test.yml:args)。当 APK 没有重新签名时,您应该仍然可以使用 Roboscript,但请注意,android Studio 中录制的 Roboscript 是针对 Robo 重新签名应用程序的 APK 并在 Espresso 模式下抓取它的场景,而不是重新 -签署应用程序的 APK 意味着 Robo 在 UIAutomator 模式下抓取它,这可能需要也可能不需要手动调整您的 Roboscript。 根据 gcloud 的发布时间表,它应该会在几周内发布。至于 Play Pre-Launch Report,在设置页面的某处应该已经有这个选项(您可以在其中上传 Roboscript 等)。 顺便说一下,为了避免gcloud等待测试结果,可以使用--async标志。

以上是关于由于 APK 正在重新签名,Firebase 服务无法与 Firebase 测试实验室设备一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Java 服务器端修改apk并重新打包签名

当您生成签名的 apk 时,Firebase 数据库无法正常工作

我如何生成使用Firebase Auth的签名APK?]

生成带有 minifyEnabled 设置为 true 的签名 APK 后,firebase UI 输出空白

APK重新签名或者更换APK签名版本

怎么给修改后的apk重新签名?