在测试或开发Android应用程序时禁用GoogleAnalytics

在测试或开发Android应用程序时禁用GoogleAnalytics,android,testing,analytics,Android,Testing,Analytics,我在我的Android应用程序中使用EasyTracker,当应用程序处于“开发”或“测试”模式时,我需要一种禁用分析跟踪的方法(我在常量文件中有一个标志来区分) 最好的方法是什么 谢谢 您可以使用一个具有静态布尔值的类,比如像下面这样调试: public final class BuildMode { public final static boolean DEBUG = true; } 在代码中,只需使用: if (BuildMode.DEBUG) ... 这是一个适用于

我在我的Android应用程序中使用EasyTracker,当应用程序处于“开发”或“测试”模式时,我需要一种禁用分析跟踪的方法(我在常量文件中有一个标志来区分)

最好的方法是什么


谢谢

您可以使用一个具有静态布尔值的类,比如像下面这样调试:

public final class BuildMode {
        public final static boolean DEBUG = true;
}
在代码中,只需使用:

if (BuildMode.DEBUG) ...

这是一个适用于所有android SDK版本的解决方案

我所做的是在analytics.xml中通过设置负周期禁用定期调度:

<integer name="ga_dispatchPeriod">-60</integer>
这样,除非您手动执行,否则不会发送点击

如果您只使用定期调度(从不手动调用
.dispatch()
),那么这应该可以工作。我想,第二天凌晨4点之前没有发送的点击会以某种方式被丢弃,因为它们无论如何都不会出现在报告中

请参阅《谷歌分析开发人员指南》中的:

注意:数据必须在第二天凌晨4点之前发送和接收, 在每个配置文件的本地时区中。以后收到的任何数据 这将不会出现在报告中

更多信息:

更新:随着

SDK提供了一个dryRun标志,当设置该标志时,可防止任何数据丢失 被发送到谷歌分析。应在任何时候设置dryRun标志 您正在测试或调试一个实现,不希望进行测试 显示在谷歌分析报告中的数据

要设置干运行标志,请执行以下操作:

//当设置了干运行时,将不会发送命中,但仍将发送命中 记录下来,就好像他们被派遣了一样

GoogeAnalytics.getInstance(this).setDryRun(true)

+++我的老答案+++

当您处于开发模式时,只需在
analytics.xml
文件中注释以下行即可

<string name="ga_trackingId">UA-****</string>
UA-****
Google Analytics将无法找到任何跟踪id,因此EasyTracker将无法完成其工作。
当你正在构建要发布的应用程序时,取消注释该行,你就可以开始了。

我的技巧是在发布之前更改android清单中的
android:versionName

例如,
1.0.0.ALPHA
直到构建发布APK,此时您可以更改为
1.0.0
。这样,您以后仍然可以看到所有的崩溃报告,但它们将在分析中分组


讨论使用
BuildConfig.DEBUG
标志有条件地配置分析,并且
Atul Goyal的回答引用了
v3
中的
dryRun
标志。如果您不关心在将来的调试过程中看到崩溃报告,并且假设
BuildConfig.debug
标志正常工作,那么这两件事可能是一个很好的设置。

我相信使用第4版Analytics执行此操作的正确方法是选择退出方法

GoogleAnalytics.getInstance(this).setAppOptOut(true);
如果在调试模式下构建,可以将该方法设置为set。即

GoogleAnalytics.getInstance(this).setAppOptOut(BuildConfig.DEBUG);
我正在使用类似的东西来允许用户选择退出分析

我在以下链接中找到此信息:


编辑:刚刚看到原始问题的日期,但我想我还是会添加这个答案,因为这是我一直在寻找的东西。

如果您正在构建一个独立的应用程序(而不是库),这将是最简单的方法,让构建系统确定它是否是调试构建

if(BuildConfig.DEBUG){
    GoogleAnalytics.getInstance(this).setDryRun(true);
}

我在网上看到,这种方法不适用于库项目,因为构建工具中存在错误,无法正确设置库的
BuildConfig.DEBUG
标志。不确定此问题是否已解决。

我对此问题有不同的解决方法。有时,您仍然希望测试分析是否正常工作,但只希望筛选生产报告中的测试数据。我的解决方案是在GA中为属性创建一个自定义会话范围的维度(即AppBuild),用于跟踪您是否正在运行应用程序的调试或生产版本。创建跟踪器后,在代码中输入:

// replace 1 with the correct dimension number if you have other dimensions defined
tracker.set("&cd1", BuildConfig.DEBUG ? "debug" : "production");

然后创建或修改GA视图,在AppBuild上添加过滤器,不包括调试。这将从GA视图中过滤掉所有调试数据。您还可以添加新视图以显示调试数据。

firebase的最新版本具有此方法,可将其放入App类中:


FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(!BuildConfig.DEBUG)

BuildMode.DEBUG
或者更确切地说
BuildConfig.DEBUG
?据我所知,您不能在较低版本的android上使用BuildConfig.DEBUG。我很好奇,您能用
EasyTracker
设置
dryRun
标志吗?
// replace 1 with the correct dimension number if you have other dimensions defined
tracker.set("&cd1", BuildConfig.DEBUG ? "debug" : "production");