不是每個(gè)應(yīng)用程序都使用所有的 native 功能,也不是包含支持這些特性的代碼就會(huì)影響二進(jìn)制大小...但是我們?nèi)匀幌朐谀阈枰鼈兊臅r(shí)候添加這些特性變得容易。
記住我們把這些特性作為獨(dú)立的靜態(tài)庫(kù)公開。
對(duì)于大多數(shù)的 libs 來說,它就像拖兩個(gè)文件一樣簡(jiǎn)單,有時(shí)第三步將是必要的,但僅此而已。
我們用 React Native 推出的所有的庫(kù)存在在根倉(cāng)庫(kù)的 Libraries 文件夾中。它們中的一些是純粹的 JavaScript,您只需要 require 它。其他的 libraries 也依賴于一些 native 代碼,在這種情況下你需要將這些文件添加到你的應(yīng)用程序中,否則當(dāng)你嘗試使用 library 時(shí),程序?qū)伋鲆粋€(gè)錯(cuò)誤。
如果庫(kù)有 native 代碼,那么在它的文件夾必須有一個(gè) .xcodeproj 文件。拖動(dòng)這個(gè)文件到 Xcode 項(xiàng)目中(通常在 Xcode 的 Libraries 小組);
http://wiki.jikexueyuan.com/project/react-native/images/Libraries1.png" alt="linking-libraries" />
點(diǎn)擊你的主項(xiàng)目文件(代表 .xcodeproj 的文件)選擇 Build Phases,從你正在導(dǎo)入 Link Binary With Libraries 的庫(kù)中的 Products 文件夾中,拖動(dòng)靜態(tài)庫(kù)。
http://wiki.jikexueyuan.com/project/react-native/images/library2.png" alt="linking-libraries" />
不是每個(gè)庫(kù)都需要這一步,你需要考慮的是:
我在編譯時(shí)需要知道庫(kù)的內(nèi)容嗎?
這意味著,你是在 native 網(wǎng)站中使用庫(kù)還是只是在 JavaScript 中使用庫(kù)呢?如果你只是在 JavaScript 中使用它,這樣做很好!
對(duì)于我們用除了 PushNotificationIOS 和 LinkingIOS 的 React Native 推出的庫(kù)來說,這個(gè)步驟是不必要的。
以 PushNotificationIOS 為例,每次你收到一個(gè)新的 push notifiation,你必須從 AppDelegate 的庫(kù)中調(diào)用方法。
為此,我們需要知道庫(kù)的頭。為了實(shí)現(xiàn)這個(gè),你必須在你的項(xiàng)目文件中選擇 Build Settings,搜索 Header Search Paths。你應(yīng)該包括通往庫(kù)的路徑(如果有相關(guān)文件的子目錄,記得使它 recursive,如例子中的 React)。
http://wiki.jikexueyuan.com/project/react-native/images/library3.png" alt="linking-libraries" />