默认开发环境:node: v4.2.1 npm: 2.14.7 Xcode:7.1
给大众一个链接,这个适合刚初始化的新项目
http://react-native.cn/bbs/post/35
但是,如果是加入已经建好的老项目呢?ReactNative官方是推荐我们用pod React的,但是这个有时也难免会抽风。例如:我昨天在家pod的时候是没问题的,但是早上回公司pod一个新项目又不行,这个很令人沮丧,这个我就想到不如自己手动加入ReactNative的组件,不用pod了
1、新建一个ReactNativeDemo项目,默认是一个老项目
可以下载以下链接(其实就是我上面介绍各位下载免init初始化的ReactNative包),将里面这3个文件复制出来到自己项目根目录上一层处,放在上一层纯粹是为了方便以后Android的拓展,参考官方存放路径而已,各位自行参考
http://react-native.cn/bbs/post/35
2、在node_modules/react-native/React/Base/和node_modules/react-native/React/Libraries/导入这三个工程文件
3、在General中添加依赖
4、在Build Settings中搜索header search,在里面添加以下2段:
$(SRCROOT)/../node_modules/react-native/React
$(SRCROOT)/../node_modules/react-native/React/Base
5、最重要一步!!!在Build Settings搜索other linker,看到Other Linker Flags,添加以下一句话
$(OTHER_LDFLAGS) -ObjC
为什么要这样做呢?
不加这句话RCTBridge会奔溃报错,具体原因找到一个外国大神的合理解释:
具体地址:
相关链接:https://developer.apple.com/library/mac/qa/qa1490/_index.html
各位自行查看吧
6、在ViewController里面引入头文件
#import
在viewDidLoad中写入:
NSURL*jsCodeLocation = [NSURLURLWithString:@"http://localhost/index.ios.bundle?platform=ios&dev=true"];
RCTRootView*rootView = [[RCTRootViewalloc]initWithBundleURL:jsCodeLocationmoduleName:@"MyProject"initialProperties:nillaunchOptions:nil];
rootView.frame=self.view.frame;
[self.viewaddSubview:rootView];
7、因为Xcode7默认是没有开启http的,自己打开设置,这里不详细说明
做到这里我们就大功告成,我们可以尽情用js写原生iOS APP了
8、之前我们不是导入一个叫index.ios.js的文件嘛,这里随意写js就可以了
这里MyProject是OC端注册的名字,Ace是js端注册的组件
效果:
网友评论