3

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

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

目前这样的 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.

4

1 回答 1

5

这是一个有趣的场景,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。虽然它在我们的积压工作中,但这个场景可能不会很快得到优先级,但看起来它可能不太难做出改变,所以如果你想深入研究代码并自己做出改变,请随意发出拉取请求。否则,您也可以在我们的 repo 上提交增强问题,以便我们对其进行跟踪。感谢您的反馈!

于 2016-07-23T12:36:51.763 回答