如何在一个应用程序中为CodePush使用多个ReactNativeHosts?

时间:2016-07-22 14:34:54

标签: android react-native react-native-android code-push

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

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

目前,这样的React Native模块(作为片段实现)的工作原理如下:

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;
    }
}

所以关注official CodePush guide我不知道如何在同一个Android应用程序中使用多个CodePush项目。但是我认为我的onCreateView中必须有一些内容允许我注入CodePush包或至少是自定义ReactNativeHost

1 个答案:

答案 0 :(得分:4)

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