我们正在使用现有应用程序使用React Native。
由于各种原因,我们从服务器下载JavaScript包并将其存储在内部存储中。
现在我们希望React Native AAR从内部存储而不是资源文件夹引用我们的JavaScript包。为此,在某处我们需要设置一个JavaScript包目录路径,React Native引用。
请告诉我们如何才能实现这一目标。是否有某种属性可以设置此路径?
答案 0 :(得分:2)
在android上,捆绑文件由ReactNativeHost
提供。
要提供自定义文件,您应该:
ReactNativeHost
。默认的响应本机模板已在MainApplication中为您执行此操作(mReactNativeHost
成员是匿名子类)getJSBundleFile
getReactNativeHost
中的MainApplication
并返回自定义主机实施。示例:
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override protected List<ReactPackage> getPackages() {
return Arrays.asList(new MainReactPackage());
}
@Override protected String getJSMainModuleName() {
return "index";
}
@Nullable @Override protected String getJSBundleFile() {
return "uri://to/your/file"; // <----!!
}
};
@Override public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
答案 1 :(得分:0)
经过一番研究后,我找到了问题的答案。
在Android中,要启动反应应用程序,我们需要一个ReactInstanceManager
的实例。 ReactInstanceManagerBuilder
是ReactInstanceManager
的构建器类。 ReactInstanceManagerBuilder
具有设置JS包文件路径的方法。
请参阅下面的代码段。
ReactInstanceManagerBuilder builder = ReactInstanceManager.builder();
builder.setJSBundleFile("PATH TO YOUR JSBundleFile"); // ex: "assets://index.android.js" or "/sdcard/main.jsbundle"
.
.//other setter calls
.
mReactInstanceManager = builder.build();
mReactRootView.startReactApplication(mReactInstanceManager, appName, arguments);