将预填充领域与本机应用程序捆绑在一起

Bundle pre-populated realm with react native app

我正在尝试将预填充领域与 React 本机应用捆绑在一起。

我一直在关注这个,试图让它为 android 工作。 https://github.com/realm/realm-js/issues/532

建议将领域放在资产文件夹中:(android/app/src/main/assets)。我这样做了:

但是,当我 运行 Realm.copyBundledRealmFiles() 在我的基本组件的构造函数中像这样时:

constructor(props) {
    super(props);
    Realm.copyBundledRealmFiles();
  }

我收到构建错误:

任何帮助解决此问题以便我可以将预填充领域与应用程序捆绑在一起的帮助都将非常有帮助。我已经为此工作了好几个小时,但似乎无法弄明白!

好的 android:

1) 在 android/app/src/main/assets 文件夹中粘贴领域。

2) 在 index.android.js 中:使用 copyBundledRealmFiles() 将它们移动过来:

import { AppRegistry } from 'react-native';
import React from 'react';
import Realm from 'realm';
import App from './src/App';

const App2 = () => {
  Realm.copyBundledRealmFiles();
  return (
    <App />
  );
};

AppRegistry.registerComponent('SenecaV2', () => App2);

然后关闭所有终端和运行 react-native 运行-android重新捆绑。

您可以通过使用命令行转到(mac)

来检查领域是否正在被编译

library/android/sdk/tools

然后命令monitor

这将打开设备监视器。然后,在设备监视器中单击文件管理器并导航到 data/data/{packageName}/files,您应该会看到复制过来的领域。

如果您随后希望能够在您的应用中引用该路径,请使用包:

https://github.com/johanneslumpe/react-native-fs

给你文件系统的路径:

const path = `${RNFS.DocumentDirectoryPath}/{nameOfYourPrePackagedRealmFile}`

然后您可以在新的领域构造函数配置路径 属性 中使用它来访问领域。

https://realm.io/docs/javascript/1.0.0/api/Realm.html#path

希望这对遇到同样问题的人有所帮助!