标签:
在我们要集成的项目中,进入到*.xcodeproj文件的上级目录,运行React Native初始化命令react-native init [Project Name]
会出现prompt, 输入yes,这样会在ios目录下生成一个同名工程。init过程会需要一点时间,耐心等待。
完成后项目文件目录会变成这样:
1
|
{ "private" : true , "scripts" : { "start" : "node node_modules/react-native/local-cli/cli.js start" }, "name" : "Project" , "dependencies" : { "react" : "^15.1.0" , "react-native" : "^0.27.2" }, "version" : "0.0.1" } |
接下来,我们可以先把Android相关的文件给干掉:
打开ios目录下的那个同名工程,可以看到这个工程引用的React Native库如下:
打开我们原有的项目,右键工程目录,选择New Group,新建一个名为Libraries的目录
然后把前面项目Libraries下的*.xcodeproj文件全部拖到这个项目的Libraries下,效果跟上图一样。
React Native的iOS项目在编译时会先运行一个shell脚本,其作用有两个:
具体添加方式:
到这一步,我们就可以干掉ios目录了,然后关闭原有的工程,再重新打开。
在工程的Build Phases界面的Link Binary With Libraries,点击
最下面的+号,可以看到在Workspace下多了很多.a文件,如下图,把它们全部添加进去。
我们先编译一下,会发现编译不通过,一堆报错。
原因是我们还没有导入JavaScriptCore库。因为React Native与原生的交互需要依赖于JavaScriptCore.framework。
再次编译,发现可以编译成功了。
在AppDelegate.m中的didFinishLaunchingWithOptions:方法中添加如下代码:
1
2
3
4
5
6
7
8
9
10
11
|
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@ "Project" initialProperties:nil launchOptions:launchOptions]; rootView.backgroundColor = [[UIColor alloc] initWithRed: 1 .0f green: 1 .0f blue: 1 .0f alpha: 1 ]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; UIViewController *rootViewController = [UIViewController new ]; rootViewController.view = rootView; self.window.rootViewController = rootViewController; [self.window makeKeyAndVisible]; |
CMD+R运行,会看到如下界面:
标签:
原文地址:http://www.cnblogs.com/qinxiaoguang/p/5779412.html