Я стараюсь использовать большой db-файл. И, следовательно, мой код копирует этот файл из папки Assets в папку Application-Documents-Folder, как видно из примера кода ниже.
Для небольших файлов мой код работает отлично, и я могу отлично работать с моей БД.
Однако, если я попробую сделать это с большим db-файлом (> 665 МБ), все пойдет не так, как в моей Android-части приложения Flutter. (На самом деле, iOS работает отлично, независимо от того, насколько велик размер DB-файла ....). Только для Android большой db-файл ломает вещи.
Следующий код Dart не работает для большого файла (> 665 МБ) внутри Android - (однако он работает для небольших файлов):
Future<Database> initializeDatabase() async {
Directory directory = await getApplicationDocumentsDirectory();
var dbPath = join(directory.path, "ch_departures.db");
// copy db file from Assets folder to Documents folder (only if not already there...)
if (FileSystemEntity.typeSync(dbPath) == FileSystemEntityType.notFound) {
ByteData data = await rootBundle.load("assets/ch_departures.db");
writeToFile(data, dbPath);
}
// Open/create the database at a given path
var departuresDatabase = await openDatabase(dbPath);
return departuresDatabase;
}
// HERE IS WHERE THE CODE CRASHES (WHEN TRYING TO WRITE THE LOADED BYTES)
void writeToFile(ByteData data, String path) {
final buffer = data.buffer;
return new File(path).writeAsBytesSync(
buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
}
Я пытался поиграться с gradle.properties
файлом Android-части моего приложения Flutter.
Внутри gradle.properties, я попробовал:
org.gradle.jvmargs=-Xmx3g -XX:MaxPermSize=2048m
Но, к сожалению, безуспешно.
Есть ли у вас какие-либо идеи о том, как заставить все это работать с большим (> 665 МБ) файлом ????