如何从Android中的网络加载反应原生JS包?

对于我的Android应用程序,我需要能够在运行时动态更新Bundle,并在我的Assets中使用预先保存的bundle作为后备。 我在官方文档中未能find任何相关信息。

在本机的iOS版本中,有一种方法可以让你指定一个从中加载JS包的URL,但我还没有看到Android的等效选项。 这对Android有什么用?

更新看起来RN团队一直在研究这个function,并将成为下一个版本的一部分: https : //github.com/facebook/react-native/commit/3a743ef228a14e07c77c5488b080413643ec9c4b

是的,这是可能的。 你可以尝试Code Push (但他们的Android版本还不稳定),或者在他们的代码中find如何做到这一点。

1.下载捆绑文件并管理路径。

2.在你的应用程序中更新一个ReactNativeHost:

public String mBundleFilePath = ""; private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { @Override protected boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; } @Override protected List getPackages() { return Arrays.asList(new MainReactPackage(), new MyReactPackage()); } @Override protected String getJSBundleFile() { return mBundleFilePath; } }; 

3.在启动ReactActivity之前,将ur bundle文件的路径分配给variables: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 

它可以帮助你:)