对于我的Android应用程序,我需要能够在运行时动态更新Bundle并使用我的Assets中预先保存的bundle作为后退。我未能在Official Documentation.
中找到有关此内容的任何信息在本机的iOS版本中,有一种方法可以指定加载JS包的URL,但我还没有看到Android的等效选项。这对Android有什么影响?
更新 看起来RN团队一直在研究这个功能,并将成为下一个版本的一部分: https://github.com/facebook/react-native/commit/3a743ef228a14e07c77c5488b080413643ec9c4b
答案 0 :(得分:5)
1.下载捆绑文件并管理路径。
2.在你的应用程序中更新一个ReactNativeHost:
public String mBundleFilePath = "";
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
protected boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(new MainReactPackage(), new MyReactPackage());
}
@Override
protected String getJSBundleFile() {
return mBundleFilePath;
}
};
3.在启动ReactActivity之前,将ur bundle文件的路径分配给变量:mBundleFilePath。
public class ReactNativeActivity extends ReactActivity {
public static void launchSelf(...) {
MyApplication.getInstance().mBundleFilePath = path;
COMPONENT_NAME = ...;
Intent intent = new Intent(activity,ReactNativeActivity.class);
activity.startActivity(..);
}
...
}
源代码:
com.facebook.react.ReactNativeHost#createReactInstanceManager
com.facebook.react.ReactInstanceManager.Builder#setJSBundleFile
com.facebook.react.cxxbridge.JSBundleLoader#createFileLoader
...
它可以帮助你:)
答案 1 :(得分:3)
是的,这是可能的。你可以尝试Code Push(但他们的Android版本还不稳定),或者在他们的代码中找到如何做到这一点。