播放服务升级到 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
升级到 'com.google.android.gms:play-services-ads:18.1.0' 后的 Android 编译错误