Android 使用ObjectBox 数据库报objectbox: (30 "Read-only file system") 解决方案

320 阅读1分钟

在模拟器中使用ObjectBox提供的 默认创建方式 创建数据库时,会报objectbox: (30 "Read-only file system") 错误

    store = openStore()  // objectbox: (30 "Read-only file system")

原因是在默认方式下,会在模拟器的 /system 目录下创建数据库文件,而system文件夹权限只读,因而导致数据库创建失败

解决方法:创建方法中,directory参数传入自定义的创建文件夹路径

// flutter 项目
Future<void> init() async {
  // getApplicationSupportDirectory() 方法需添加 path_provider
  final dbFolder = await getApplicationSupportDirectory().then((value) {
    if(value.path.contains('files')) {
      return value.path.replaceFirst('files', 'databases');
    } else {
      return value.path;
    }
  });
  store = openStore(directory: dbFolder);  // 自定义文件夹路径
}