unity3d - application - unity persistentdatapath windows
ApplicationData.persistentDataPath Unity Editor para Android (1)
¿Alguien sabe, dónde tengo que colocar un archivo (archivo sqlite) en la estructura de directorio del proyecto de unidad, para que, después de la compilación e instalación de apk, el archivo permanezca almacenado en persistentDataPath en el lado de Android?
¡Gracias por adelantado!
Directamente dentro de la carpeta Assets, cree una carpeta con el nombre "StreamingAssets" y coloque su archivo de base de datos sqlite en esta carpeta y luego use el siguiente código para extraer y copiar la base de datos sqlite a persistentDataPath:
void InitSqliteFile (string dbName)
{
// dbName = "example.sqlite";
pathDB = System.IO.Path.Combine (Application.persistentDataPath, dbName);
//original path
string sourcePath = System.IO.Path.Combine (Application.streamingAssetsPath, dbName);
//if DB does not exist in persistent data folder (folder "Documents" on iOS) or source DB is newer then copy it
if (!System.IO.File.Exists (pathDB) || (System.IO.File.GetLastWriteTimeUtc(sourcePath) > System.IO.File.GetLastWriteTimeUtc(pathDB))) {
if (sourcePath.Contains ("://")) {
// Android
WWW www = new WWW (sourcePath);
// Wait for download to complete - not pretty at all but easy hack for now
// and it would not take long since the data is on the local device.
while (!www.isDone) {;}
if (String.IsNullOrEmpty(www.error)) {
System.IO.File.WriteAllBytes(pathDB, www.bytes);
} else {
CanExQuery = false;
}
} else {
// Mac, Windows, Iphone
//validate the existens of the DB in the original folder (folder "streamingAssets")
if (System.IO.File.Exists (sourcePath)) {
//copy file - alle systems except Android
System.IO.File.Copy (sourcePath, pathDB, true);
} else {
CanExQuery = false;
Debug.Log ("ERROR: the file DB named " + dbName + " doesn''t exist in the StreamingAssets Folder, please copy it there.");
}
}
}
}