隨著React Native發(fā)布的所有庫都在倉庫中的Libraries文件夾下。其中有一些是純Javascript代碼,你只需要去require它們就可以使用了。另外有一些庫基于一些原生代碼實現(xiàn),你必須把這些文件添加到你的應(yīng)用,否則應(yīng)用會在你使用這些庫的時候產(chǎn)生報錯。
(ps: 在用Xcode打開AwesomeProject.xcodeproj運行 報錯'React/RCTBundleURLProvider.h' file not found 請將頭文件<React/RCTBundleURLProvider.h> 和<React/RCTRootView.h>更換成"RCTBundleURLProvider.h" 和''RCTRootView.h'')
比如:
從github上面clone一個ReactNative項目,在運行的項目的時候發(fā)現(xiàn)RCTBundleURLProvider.h file not found。下面是解決方法:
添加包含原生代碼的庫需要幾個步驟:
一、自動鏈接
第一步、
首先安裝rnpm:
npm install rnpm -g
注意:rnpm需要node 4.1或更高版本。
第二步、
安裝一個帶原生依賴的庫:
npm install 某個帶有原生依賴的庫 --save
注意:這一步中–save或–save-dev參數(shù)是非常重要的。rnpm需要根據(jù)package.json文件中的dependencies和devDependencies記錄來鏈接庫。
第三步、
鏈接原生依賴:
rnpm link
完成了!現(xiàn)在所有的原生依賴都成功地鏈接到你的iOS/Android項目了。
二、手動鏈接
第一步、
如果該庫包含原生代碼,那么在它的文件夾下一定有一個.xcodeproj文件。 把這個文件拖到你的XCode工程下(通常拖到XCode的Libraries分組里)

第二步、
點擊你的主工程文件,選擇Build Phases,然后把剛才所添加進去的.xcodeproj下的Products
文件夾中的靜態(tài)庫文件(.a文件),拖到Link Binary With Libraries組內(nèi)。

第三步、
不是所有的庫都需要進行這個步驟,你需要考慮的問題在于:
我需要在編譯的期間了解庫的內(nèi)容嗎?
這個問題的意思是,你是需要在原生代碼中使用這個庫,還是只需要通過JavaScript訪問?如果你只需要通過JavaScript訪問這個庫,你就可以跳過這步了。
這一步驟對于我們隨React Native發(fā)布的大部分庫來說都不是必要的,但有兩個例外是PushNotificationIOS
和LinkingIOS。以PushNotificationIOS為例,你需要在AppDelegate每收到一條推送通知之后,調(diào)用庫中的一個方法。
這種情況下我們需要能夠訪問到庫的頭文件。為了能夠順利打包,你需要打開你的工程文件,選擇Build Settings,然后搜索Header Search Paths,然后添加庫所在的目錄(如果它還有像React這樣的子目錄需要包含,注意要選中recursive選項)
