Android - “firebase.test.lab”设置无法从 Firebase 分析中排除 Play 商店测试活动

Posted

技术标签:

【中文标题】Android - “firebase.test.lab”设置无法从 Firebase 分析中排除 Play 商店测试活动【英文标题】:Android - "firebase.test.lab" setting fails to exclude play store testing activity from firebase analytics 【发布时间】:2020-08-12 04:29:49 【问题描述】:

每次将新版本上传到 Google Play 商店后,大约 10 分钟内就有大约 8 个新用户登录我的 Firebase 分析控制台。我还没有公开发布我的应用程序,它处于封闭的测试轨道上,没有其他人选择加入。唯一可能的原因似乎是谷歌的内部测试,例如发布前报告。这些数字真的会弄乱我的分析数据,所以我想从 Firebase 分析中排除这些测试流量。

在遵循这些先前问题中的建议后,不幸的是,所提到的解决方案都没有成功排除测试活动

How to prevent Play Store testing from affecting Firebase Analytics Disable Google Analytics from android pre-launch reports Exclude testing device from Firebase Analytics logging

在我的 AndroidManifest.xml 中的应用程序标记的第一行之后:

<meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />

在我的 MainActicity 中 onCreate() 的开头,我有:

if(!isTestDevice(this))

    FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(true);

我有以下功能:

public static boolean isTestDevice(Context context) 
    String testLabSetting = Settings.System.getString(context.getContentResolver(), "firebase.test.lab");
    return "true".equals(testLabSetting);

一开始我以为isTestDevice函数可能没有正常工作,所以我在我的主屏幕添加了以下调试代码:

if(isTestDevice(linearLayout.getContext())) 
    TextView testText = new TextView(linearLayout.getContext());
    testText.setText("TEST DEVICE");
    testText.setId(linearLayout.generateViewId());
    linearLayout.addView(testText, 0, params);

    TextView disabledText = new TextView(linearLayout.getContext());
    disabledText.setText("Analytics disabled");
    disabledText.setId(linearLayout.generateViewId());
    linearLayout.addView(disabledText, 0, params);

在发布前的报告截图中,我可以看到 isTestDevice 函数正在运行:

此外,如果我注释掉 setAnalyticsCollectionEnabled(true); 行,则不会将任何活动记录到 Firebase 分析控制台,这表明 AndroidManifest.xml 中的行正确禁用了分析,直到 setAnalyticsCollectionEnabled(true); 行运行为止。

另外,即使我禁用发布前报告,同样的活动也会被记录下来,在上传发布后的几分钟内大约有 8 个用户。

似乎记录的活动来自预发布报告以外的其他来源,因为我可以从预发布屏幕截图中看到,预发布设备被正确检测为测试设备,此外,即使我关闭发布前报告,该活动仍会被记录。但即便如此,该活动仍会在上传版本后 10 分钟内记录下来。

如何防止此测试活动被登录到 Firebase 分析?链接帖子中的解决方案似乎不再有效。

编辑:我的应用程序的一个主要功能是游戏。我现在基本上可以通过仅在用户在游戏中得分超过一分时将分析设置为启用来解决该问题。这有效地消除了机器人记录的所有流量,因为它们只是漫无目的地点击任何东西并且缺乏得分超过一分所需的任何情报。但这是一个非常糟糕的 hack,我想删除它。

【问题讨论】:

【参考方案1】:

避免这种情况的唯一可靠方法是通过 IP 地址排除。正如您所发现的,禁用发布前报告并不会停止运行测试,因为我们使用来自这些测试的信息来检测应用程序的问题。

【讨论】:

您能否提供更多详细信息,例如要排除哪些 IP 地址? firebase.google.com/docs/test-lab/android/… 您能否详细说明“因为我们使用这些测试中的信息来检测应用程序的问题”。可以通过只显示一个空屏幕来完全阻止这些机器人的 App UI 吗?否则他们将与我的真实用户互动,这真的很不愉快......我不明白任何人如何在生产环境中忍受这种行为,我觉得我在这里错过了一些重要的东西:(! 我也遇到了同样的 Firebase 测试实验室问题,它影响了我在生产中的分析。一个简单的解决方案似乎是必要的。一般来说,实验室测试不会影响生产中的任何内容。

以上是关于Android - “firebase.test.lab”设置无法从 Firebase 分析中排除 Play 商店测试活动的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

android 21 是啥版本

Android逆向-Android基础逆向(2-2)

【Android笔记】android Toast

图解Android - Android核心机制