我想将基于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;
    }
}


因此,在official CodePush guide之后,我不知道如何在同一个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。尽管尚待解决,但此场景的优先级可能不会太快,但是看起来似乎很难进行更改,因此,如果您想深入研究代码并自己进行更改,请随时发送请求请求。否则,您也可以在我们的仓库中提交一个增强问题,以便我们进行跟踪。感谢您的反馈!

关于android - 如何在一个应用程序中为CodePush使用多个ReactNativeHosts?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38529114/

10-09 01:33