首页 > react native 怎么修改入口文件?

react native 怎么修改入口文件?

如题,怎么让iOS和android共用一个js入口文件?


表示这个需求有点奇怪,为什么需要让 iOS 和 Android 公用同一个入口文件呢?即便重复的东西很多,也可以建一个公用的 js 然后在 index.ios.js 和 index.android.js 里都引入它。

如果非要更改这个入口文件的话,你可以在项目里全局的搜索一下 index.ios 和 index.android, 看看它们的加载流程,比如说 index.ios 就在 AppDelegate.m 里用到了:

jsCodeLocation = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@:8081/index.ios.bundle?platform=ios&dev=true", ip]];

你可以尝试去改一改,让它从别的地方加载。 但是总体上还是建议不要这样折腾,以后版本升级之类的时候,给自己填堵。


RN 本来就是一次开发两个平台,合并入口文件很正常。
以最新的0.31为例
直接上正确答案:

IOS

[[RCTBundleURLProvider sharedSettings] setDefaults];
  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"/rn/app" fallbackResource:nil];

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"Demo"
                                               initialProperties:nil
                                                   launchOptions:launchOptions];
                                                   

其中@"/rn/app"就是相对 RN 根目录的入口文件,@"Demo"是你注册的应用名。

android:
复写getJSMainModuleName方法就行

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    protected boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }
    @Override
    protected String getJSMainModuleName() {
      return "rn/app";
    }
};

_rnRoot_/rn/app.js 就是你的入口文件,如上例随便你改


看图:


楼主解决了吗?

【热门文章】
【热门文章】