並不是所有的APP都需要使用全部的原生功能,包含支持全部特性的代碼會增大應用的體積。但是仍然要根據自己的需求添加需要的特性。
React Native 發佈的所有庫都在倉庫中的Libraries文件夾下。其中有一些是純JavaScript代碼,只需要去require它們就可以使用了。另外有一些庫基於一些原生代碼實現,必須把這些文件添加到你的應用,否則應用會在你使用這些庫的時候產生報錯。
添加包含原生代碼的庫的方式有兩種:自動鏈接和手動鏈接
一、自動連接
- 安裝一個帶原生依賴的庫: $ yarn add 某個帶有原生依賴的庫
- 運行一下命令:
$ react-native link
它會根據Package.json文件中的dependencies和devDependencies記錄來鏈接所有需要鏈接的庫
二、手動鏈接
1.如果該庫包含原生代碼,那麼在它的文件夾下一定會有一個.xcodeproj文件,把這個文件拖到你的Xcode工程下(通常拖到Xcode的Libraries分組裏面)
- 點擊你的主工程文件,選擇Build Phases,然後把剛纔所添加進來的.xcodeproj下的Products文件夾中的靜態文件(.a文件),拖到Link Binary With Libraries組內。
3.不是所有的庫都需要進行這個步驟,你需要考慮的問題在於:
我需要在編譯的期間瞭解庫的內容嗎?
這個問題的意思是,你是需要在原生代碼中使用這個庫,還是只需要通過JavaScript訪問?如果你只需要通過JavaScript訪問這個庫,你就可以跳過這步了。
這一步驟對於我們隨React Native發佈的大部分庫來說都不是必要的,但有兩個例外是PushNotificationIOS和LinkingIOS。
以PushNotificationIOS爲例,你需要在AppDelegate每收到一條推送通知之後,調用庫中的一個方法。
這種情況下我們需要能夠訪問到庫的頭文件。爲了能夠順利打包,你需要打開你的工程文件,選擇Build Settings,然後搜索Header Search Paths,然後添加庫所在 的目錄(如果它還有像React這樣的子目錄需要包含,注意要選中recursive選項)