Проблемы с аналитикой Google после обновления игровых сервисов до 7.5

После того, как мы обновили службы 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, однако, поскольку мы используем игровые сервисы 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 отправляет/пакетный запрос через некоторое время. Эти ошибки 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 (?,?,?,?,?,?)]

Ответы

Ответ 1

Является ли SQLiteLog классом, который вы написали, или Google Analytics? Если вы используете DBHelper, вы можете попробовать getWritableDatabase() на нем.

Есть ли у вас какие-либо длительные службы, которые могут использовать старую базу данных или иметь в ней какую-то блокировку?

Вы также можете попробовать ударить свой номер сборки в приложении и изучить миграцию SQL.