扫码关注官方订阅号
如题,怎么让iOS和android共用一个js入口文件?
ringa_lee
表示这个需求有点奇怪,为什么需要让 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"是你注册的应用名。
@"/rn/app"
@"Demo"
android: 复写getJSMainModuleName方法就行
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 就是你的入口文件,如上例随便你改
_rnRoot_/rn/app.js
楼主解决了吗?
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
表示这个需求有点奇怪,为什么需要让 iOS 和 Android 公用同一个入口文件呢?即便重复的东西很多,也可以建一个公用的 js 然后在 index.ios.js 和 index.android.js 里都引入它。
如果非要更改这个入口文件的话,你可以在项目里全局的搜索一下 index.ios 和 index.android, 看看它们的加载流程,比如说 index.ios 就在 AppDelegate.m 里用到了:
你可以尝试去改一改,让它从别的地方加载。 但是总体上还是建议不要这样折腾,以后版本升级之类的时候,给自己填堵。
看图:

RN 本来就是一次开发两个平台,合并入口文件很正常。
以最新的0.31为例
直接上正确答案:
IOS
其中
@"/rn/app"就是相对 RN 根目录的入口文件,@"Demo"是你注册的应用名。android:
复写
getJSMainModuleName方法就行_rnRoot_/rn/app.js就是你的入口文件,如上例随便你改楼主解决了吗?