コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Failed to gain exclusive lock to the Cloud Firestore client's offline persistence.

概要

java.lang.RuntimeException: Internal error in Cloud Firestore (X.X.X)
java.lang.RuntimeException: Failed to gain exclusive lock to the Cloud Firestore client's offline persistence. This generally means you are using Cloud Firestore from multiple processes in your app. Keep in mind that multi-process Android apps execute the code in your Application class in all processes, so you may need to avoid initializing Cloud Firestore in your Application class. If you are intentionally using Cloud Firestore from multiple processes, you can only enable offline persistence (that is, call setPersistenceEnabled(true)) in one of them.
java.lang.RuntimeException: android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5 SQLITE_BUSY)

一部の Android 端末で DocumentReference.GetSnapshotAsync を呼び出した時に
上記の例外が発生してアプリが強制終了する現象に遭遇した

FirebaseFirestore.DefaultInstance.Settings.PersistenceEnabled = false;

アプリ起動時に Firestore のオフラインデータの永続性を無効化するようにしたら
アプリは強制終了しなくなった

代わりに、オフラインでプレイしたデータはアプリを終了したら消えるようになった