如何在一个应用程序中使用多个ReactNativeHosts进行CodePush



我想将基于React Native的模块集成到我现有的Android应用程序中。到目前为止,这工作得很好,但我也想集成CodePush来部署应用程序的更新。

重要的一点是,模块应该独立于特定的应用程序,因为我有多个不同的应用程序应该使用这些模块。因此,模块本身是独立的React Native包,因此它们必须是独立的代码推送应用程序(我想)。

目前,这样一个React Native模块(实现为Fragment)的工作方式如下:

public class ReactFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        ReactRootView mReactRootView = new ReactRootView(getContext());
        ReactInstanceManager mReactInstanceManager = ReactInstanceManager.builder()
                .setApplication(getActivity().getApplication())
                .setBundleAssetName("index.android.bundle")
                .setJSMainModuleName("index.android")
                .addPackage(new MainReactPackage())
                .setUseDeveloperSupport(false)
                .setInitialLifecycleState(LifecycleState.RESUMED)
                .build();
        mReactRootView.startReactApplication(mReactInstanceManager, "HelloWorld", null);
        return mReactRootView;
    }
}

因此,根据官方的CodePush指南,我不知道如何在同一个Android应用程序中使用多个CodePush项目。然而,我认为在我的onCreateView中一定有一些东西允许我注入CodePush包,或者至少是一个自定义的ReactNativeHost

这是一个有趣的场景,React Native CodePush SDK(还不支持)(没有自定义代码来修改它)。具体来说,我们需要一种方法将CodePush提供的lupdates保存在磁盘上每个ReactNativeHost的不同位置。现在,这是一个硬编码的位置https://github.com/Microsoft/react-native-code-push/blob/master/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateManager.java#L40.虽然它在我们的积压工作中,但这种情况可能不会很快被优先考虑,但看起来也不难做出太大的更改,所以如果你想深入研究代码并自己做出更改,可以随时发送拉取请求。否则,您也可以在我们的回购中提交增强问题,以便我们跟踪它。感谢您的反馈!

相关内容

  • 没有找到相关文章

最新更新