使用react本机app捆绑预先填充的域

Luc*_*kas 2 realm android-emulator react-native android-device-monitor

我试图将一个预先填充的领域与一个本机应用程序捆绑在一起.

我已经按照这个,试图让这个为Android工作. https://github.com/realm/realm-js/issues/532

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

在此输入图像描述

但是,当我在我的基本组件的控制器中运行Realm.copyBundledRealmFiles()时,如下所示:

constructor(props) {
    super(props);
    Realm.copyBundledRealmFiles();
  }
Run Code Online (Sandbox Code Playgroud)

我得到了构建错误:

在此输入图像描述

任何帮助解决这个问题,以便我可以将预先填充的领域与应用程序捆绑在一起将非常有帮助.我现在已经工作了好几个小时了,似乎无法搞清楚!

Luc*_*kas 5

好的想到这个为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);
Run Code Online (Sandbox Code Playgroud)

然后关闭所有终端并运行react-native run-android重新绑定.

您可以使用命令行转到(在Mac上)来检查域是否正在被编译

library/android/sdk/tools

那么命令 monitor

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

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

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

为您提供文件系统的路径:

const path = `${RNFS.DocumentDirectoryPath}/{nameOfYourPrePackagedRealmFile}`
Run Code Online (Sandbox Code Playgroud)

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

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

希望这可以帮助任何有同样问题的人!