RN集成iOS问题
集成步骤:http://reactnative.cn/docs/0.41/getting-started.html,比android简单一万倍。。。还是我大iOS 666
如果出现xcrun: error: unable to find utility "instruments", not a developer tool or in PATH
在终端执行如下命令 sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/即可。
如果编译一直卡在build double conversion这里,是因为0.45后的RN项目,会依赖一些三方库,然而在国内这些库很难下载到,翻墙也很难下到。把http://pan.baidu.com/s/1kVDUAZ9这些压缩文件放到~/.rncache即可
因为我们项目只是部分界面用到了RN,所以开始的做法是,单独建一个控制器,在控制器中重写loadView
- (void)loadView
{
NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];//index.ios是存放ios端js代码的文件
YJAppDelegate *appDelegate = (YJAppDelegate *)UIAP.delegate;
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"App"
initialProperties:nil
launchOptions:nil];
self.view = rootView;//App是js中注册的模块名称AppRegistry.registerComponent('App', () => App);
}
找个地方初始化控制器,显示出来,没问题,打开远程调试,点一下屏幕,o,红屏了。。。咋办,查了半天,没有找到解释这个问题的,刚学RN也不是很懂,只能靠试+猜
看看没有设置的参数,initialProperties是传递参数,肯定不是,launchOptions,它要这个做什么,我也不知道,加上试一下,在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions里拿到这个参数,放到这里,跑起来,呵呵,好了。。。
其他问题,百度一下就能找到,暂时不总结了。。。
持续中。。。