Android 如何在Firebase测试实验室中检测运行

Android 如何在Firebase测试实验室中检测运行,android,firebase,firebase-test-lab,Android,Firebase,Firebase Test Lab,我最近发现我的应用程序在Firebase中的设置有问题。我们配置了启动前报告,这意味着测试实验室设备正在为我们的分析提供大量匿名会话 有没有办法检测设备正在运行这些测试?例如,对于测试实验室中的测试,将返回true还是返回true?这将允许我调整分析/etc的配置,如果是的话。这实际上是 您可以检查是否存在名为“firebase.test.lab”的系统属性: 您的“正在测试的设备”应检查IP地址,如果在Firebase测试实验室IP范围内,则应禁用分析 有关处理此问题的Util方法,请参见我的

我最近发现我的应用程序在Firebase中的设置有问题。我们配置了启动前报告,这意味着测试实验室设备正在为我们的分析提供大量匿名会话

有没有办法检测设备正在运行这些测试?例如,对于测试实验室中的测试,将返回true还是返回true?这将允许我调整分析/etc的配置,如果是的话。

这实际上是

您可以检查是否存在名为“firebase.test.lab”的系统属性:


您的“正在测试的设备”应检查IP地址,如果在Firebase测试实验室IP范围内,则应禁用分析


有关处理此问题的Util方法,请参见我的答案。

这里有一个后续问题。使用此代码似乎已检测到大多数运行自动测试的设备,但并非所有。Play pre-launch报告显示测试是在Nexus 5/7/9和Galaxy手机上进行的。这些设备已经停止出现在我们的日志中,但每次构建都会出现一个rogue Nexus 5X。除了这里提到的“firebase.test.lab”属性之外,是否还需要检查其他一些配置变量?据我所知不是这样。请随时加入Firebase Slack上的#测试实验室频道,了解更多信息。如果有问题,我们会调查的。请注意,如果您要将此答案转换为Kotlin,testLabSetting可以为null,因此您需要将
testLabSetting
声明为
String?
,否则如果应用程序是在非测试实验室设备上启动的,您将遇到令人讨厌的NPE。
@Nullable String testLabSetting =
  Settings.System.getString(context.getContentResolver(), "firebase.test.lab");
if ("true".equals(testLabSetting)) {
  // Do something when running in Test Lab
}