【问题标题】:Google analytics problems after play services upgrade to 7.5播放服务升级到 7.5 后的 Google 分析问题
【发布时间】: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。我不记得从那以后看到过错误。
  • 感谢康斯坦丁。我会尝试更新播放服务版本

标签: android google-analytics google-play-services


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 2016-05-04
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多