Проблемы с аналитикой 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.