默認開發環境: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端注冊的組件
效果: