【问题标题】:How to load react native JS bundle from network in Android?如何在 Android 中从网络加载反应原生 JS 包?
【发布时间】:2015-11-04 00:44:55
【问题描述】:

对于我的 Android 应用,我需要能够在运行时动态更新 Bundle,并使用我的资产中预先保存的包作为后备。我在Official Documentation.中没有找到任何相关信息

在 iOS 版本的 react native 中,有一个方法可以让你指定一个 URL 来加载 JS 包,但我还没有看到 Android 的等效选项。 Android 怎么可能?

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

【问题讨论】:

    标签: android react-native


    【解决方案1】:

    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之前,将你的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
    

    ...

    对你有帮助吗:)

    【讨论】:

    • 能够下载并设置捆绑包,但没有显示任何图像,如果我从资产文件夹设置捆绑包,则同样工作正常
    • 我面临同样的问题图像未加载我知道这是个老问题,但任何关于如何显示图像的提示都非常感谢。我的 RN 版本是 0.51
    • 可能是因为您应该使用自己的图像加载器或使用外部图像(即来自云端)。
    【解决方案2】:

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

    【讨论】:

    • 代码推送是非常好的动态加载js并发布更新的工具
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    相关资源
    最近更新 更多