В проекте на Unity под Android имеется предзаполненная база данных SQLite. База c названием db.bytes лежит в проекте в папке \Assets\StreamingAssets.
При тестировании на Unity база работает нормально. Но при установке APK на реальный девайс через Google Play - база не функционирует.
При этом на cмартфоне БД создается (только я не понимаю, по правильному ли пути она создана). Она не пуста. Таблица с локалью в ней есть. Я нашел базу на SD-карте в папке \Android\data\ProjectName\files\db.bytes. Она должна лежать здесь в открытом доступе, или где-то по другому пути?
Копирование БД я делал по найденному в Инетах образцу (хоть и несколько устаревшему, насколько я понял) и выглядит метод у меня таким образом:
private void startDbCheckAndCopy()
{
try
{
if (Application.platform == RuntimePlatform.Android)
{
//#if UNITY_ANDROID && !UNITY_EDITOR
path = Application.persistentDataPath + "/db.bytes";
if (!File.Exists(path))
{
WWW load = new WWW("jar:file://" + Application.dataPath + "!/assets/" + "db.bytes");
while (!load.isDone) { }
File.WriteAllBytes(path, load.bytes);
}
//#endif
}
else if (Application.platform == RuntimePlatform.WindowsEditor)
{
path = Application.dataPath + "/StreamingAssets/" + "db.bytes";
}
}
catch (Exception ex)
{
Debug.Log("ошибка" + ex.ToString());
}
}
Данный метод вызывается самым первым в методе start() при загрузке игры (скрипт висит на canvas). Сразу после него вызывается следующий метод, который обращается к БД, но из БД ничего в итоге не грузится:
private void checkStartNew()
{
try
{
dbconnection = new SqliteConnection("URI=file:" + path);
dbconnection.Open();
if (dbconnection.State == ConnectionState.Open)
{
cmd = new SqliteCommand();
cmd.Connection = dbconnection;
cmd.CommandText = "SELECT start FROM pref WHERE id=1";
r = cmd.ExecuteReader();
start = int.Parse(r[0].ToString());
}
else
{
Debug.Log("Error connection");
}
}
catch (Exception ex)
{
Debug.Log(ex);
}
r.Close();
}
Собственно вопрос, что я делаю не так и как нужно изменить код, чтобы БД на устройстве заработала? Может быть, как-то поменять путь расположения БД?