播放服务升级到 7.5 后的 Google 分析问题

Posted

技术标签:

【中文标题】播放服务升级到 7.5 后的 Google 分析问题【英文标题】:Google analytics problems after play services upgrade to 7.5 【发布时间】:2015-09-16 18:19:26 【问题描述】:

在我们将 Google Play 服务升级到:

compile 'com.google.android.gms:play-services-base:7.5.0'
compile 'com.google.android.gms:play-services-analytics:7.5.0'

注意docs 说我们必须使用 play-services-analytics:7.3.0, 但是,由于我们使用的是 play services 7.5,因此我们使用了开头所述的配置。

应用程序编译正常,但我们注意到我们的 Google Analytics(分析)不再发送到我们的服务器。而且,每当我们调用 Tracker.send() 时,每个事件的错误日志中都会出现以下几行:

06-30 10:51:43.188  13623-13752/com.fairfax.domain E/SQLiteLog﹕ (1032) statement aborts at 31: [INSERT OR REPLACE  INTO properties(cid,app_uid,hits_count,adid,params,tid) VALUES (?,?,?,?,?,?)]
06-30 10:51:43.198  13623-13752/com.fairfax.domain E/GAv4﹕ Error storing a property: android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
06-30 10:51:44.348  13623-13752/com.fairfax.domain E/SQLiteLog﹕ (1032) statement aborts at 31: [INSERT OR REPLACE  INTO properties(cid,app_uid,hits_count,adid,params,tid) VALUES (?,?,?,?,?,?)]
06-30 10:51:44.358  13623-13752/com.fairfax.domain E/GAv4﹕ Error storing a property: android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
06-3

我们代理了流量,发现它确实似乎没有发送 GA 事件。

作为目前的解决方法,我们对手动调度进行了更改:

analytics.setLocalDispatchPeriod(0);

并手动调用:

GoogleAnalytics.getInstance(appContext).dispatchLocalHits();

但这当然不太理想,我们如何让 Google Analytics 根据配置处理存储/发送而不出现错误?

UPD:值得一提的是,我们正在从播放服务 6.5 升级。

UPD2:我们再次代理网络,现在看来 GA 确实在一段时间后发送 /batch 请求。这些 SQLite 错误仍然存​​在:

8273-8329/com.fairfax.domain E/SQLiteLog﹕ (1032) statement aborts at 29: [INSERT OR REPLACE  INTO properties(cid,app_uid,hits_count,adid,params,tid) VALUES (?,?,?,?,?,?)]

【问题讨论】:

如果在你升级接缝之前它可以工作,奇怪的是它在升级后就不能工作。我无法为 Android 提供帮助,但我给 Analytics SDK 团队发了电子邮件,只是为了防止他们的错误。 @DaImTo 那些 SQLite 错误似乎在设备重启后消失了。之后一切都按预期工作。话虽如此,我们仍然对发布带有 7.5 播放服务的版本犹豫不决,因为我们不能指望用户如此频繁地重启他们的设备。 你找到解决办法了吗? @SagarTrehan 我们升级到了最近发布的 8.3.0。我不记得从那以后看到过错误。 感谢康斯坦丁。我会尝试更新播放服务版本 【参考方案1】:

SQLiteLog 是您编写的类还是 Google Analytics 提供的类?如果您使用的是 DBHelper,您可以尝试使用 getWritableDatabase()。

您是否有任何长时间运行的服务可能正在使用旧数据库,或者有一些锁定?

您还可以尝试在应用程序上增加您的内部版本号,并查看 SQL 迁移。

【讨论】:

以上是关于播放服务升级到 7.5 后的 Google 分析问题的主要内容,如果未能解决你的问题,请参考以下文章

redhat linux6.5升级openssh到7.5p1

升级ssh到OpenSSH_7.5p1

升级到 'com.google.android.gms:play-services-ads:18.1.0' 后的 Android 编译错误

python2.7.5升级到2.7.14或者直接升级到3.6.4

openssh升级到7.5 为啥无法登陆

centos 7 python2.7.5升级到3.5.2