RN之[pod install]: Error installing DoubleConversion

為什么要寫這篇文章?

RN工程中枉圃,當我們使用cocoapods來安裝一些RN必須的第三方編譯庫(比如Folly芜壁、boost)礁凡,由于這些編譯庫是在國外高氮,并且無論翻墻與否,很多時候直接使用cocoapods來自動下載安裝基本都會失敗把篓,最近嘗試在原來的RN工程和新建的RN工程上面都做了嘗試纫溃,結果嘗試了3天,基本都是失敗的韧掩,報錯的原因都是一樣紊浩,這樣的話,項目根本沒法運行疗锐。因此坊谁,在這種自動安裝經(jīng)常失敗甚至一直失敗的情況下,了解手動下載安裝就必不可少了滑臊。

報錯:

?  ios pod install
Analyzing dependencies
Fetching podspec for `DoubleConversion` from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`
Fetching podspec for `Folly` from `../node_modules/react-native/third-party-podspecs/Folly.podspec`
Fetching podspec for `glog` from `../node_modules/react-native/third-party-podspecs/glog.podspec`
Downloading dependencies
Installing DoubleConversion (1.1.6)

[!] Error installing DoubleConversion
[!] /usr/local/bin/git clone https://github.com/google/double-conversion.git /var/folders/mn/7jdnkyy91_n0bxkrgjgjk17c0000gn/T/d20191212-36568-33nxni --template= --single-branch --depth 1 --branch v1.1.6

Cloning into '/var/folders/mn/7jdnkyy91_n0bxkrgjgjk17c0000gn/T/d20191212-36568-33nxni'...
error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: unpack-objects failed

報錯原因:

RPC(Remote Procedure Call)連接失敗口芍,基本可以判定是由于網(wǎng)絡原因,這種可能性很多雇卷,代理鬓椭、局域網(wǎng)等等,尤其是針對國外的一些資源关划,對于國內的開發(fā)者來說小染,很不友好。

環(huán)境

info Fetching system and libraries information...
System:
    OS: macOS Mojave 10.14.5
    CPU: (4) x64 Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz
    Memory: 221.88 MB / 8.00 GB
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 12.10.0 - /usr/local/bin/node
    Yarn: 1.17.3 - ~/.yarn/bin/yarn
    npm: 6.11.3 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
    Android SDK:
      API Levels: 23, 26, 27, 28
      Build Tools: 23.0.1, 26.0.1, 27.0.3, 28.0.2, 28.0.3
      System Images: android-23 | Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom, android-23 | Google APIs Intel x86 Atom_64, android-26 | Google APIs Intel x86 Atom, android-27 | Intel x86 Atom_64, android-27 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google Play Intel x86 Atom
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.5977832
    Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0
    react-native: 0.61.5 => 0.61.5
  npmGlobalPackages:
    react-native-cli: 2.0.1
    react-native-update-cli: 0.1.0

重現(xiàn)

我們就基于現(xiàn)有的環(huán)境新建一個項目來重現(xiàn)這個RPC錯誤贮折。

創(chuàng)建

使用CLI新建一個RN項目裤翩,運行如下命令:

react-native init demo

在這里,我使用的是默認新建最新版本调榄,目前RN的最新版本是 0.61.5踊赠,你也可以使用react-native init 工程名 --version 版本指定某一個具體的RN版本,比如要創(chuàng)建一個0.59.9的版本每庆,可以使用react-native init demo --version 0.59.9筐带。

安裝依賴

進入到該/demo/ios目錄下,運行如下命令:

pod install

注意:在RN版本大于0.6的情況下缤灵,iOS工程默認使用cocoapods來集成項目環(huán)境伦籍,因此,在運行項目之前凤价,必須先使用cocoapods安裝所需依賴,因此要運行pod install命令拔创。對于0.6以下的RN項目利诺,也可以進入到/ios目錄下運行pod init生成一個Podfile文件,在Podfile文件里面添加依賴剩燥,然后運行pod install安裝依賴慢逾,原理是一樣的立倍。

錯誤產(chǎn)生?

在運行pod install后,等待了大概十幾分鐘(特別慢)侣滩,報錯如下:

?  ios pod install
Analyzing dependencies
Fetching podspec for `DoubleConversion` from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`
Fetching podspec for `Folly` from `../node_modules/react-native/third-party-podspecs/Folly.podspec`
Fetching podspec for `glog` from `../node_modules/react-native/third-party-podspecs/glog.podspec`
Downloading dependencies
Installing DoubleConversion (1.1.6)

[!] Error installing DoubleConversion
[!] /usr/local/bin/git clone https://github.com/google/double-conversion.git /var/folders/mn/7jdnkyy91_n0bxkrgjgjk17c0000gn/T/d20191212-36568-33nxni --template= --single-branch --depth 1 --branch v1.1.6

Cloning into '/var/folders/mn/7jdnkyy91_n0bxkrgjgjk17c0000gn/T/d20191212-36568-33nxni'...
error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: unpack-objects failed

解決

為了能夠盡可能安裝成功口注,在自動安裝失敗的情況下,我們采用手動安裝來解決這個問題君珠。

首先寝志,進入Github: react-native官網(wǎng)的目錄react-native/scripts/ios-install-third-party.sh下,你將能夠看到:

shot.png

注意:左邊的Branch選擇是對應你當前是所用的RN版本策添,比如你使用的是0.61.5材部,那對應的就是上圖中的0.61-stable,如果你使用的是0.59.9唯竹,那對應的就是0.59-stable乐导。但是,一般情況下浸颓,有部分連續(xù)的版本的ios-install-third-party.sh對應的編譯庫是一樣的物臂,這個可以自己去查看。為了保險起見产上,盡量保持和你當前所使用的RN版本一致棵磷。

進入到ios-install-third-party.sh文件后,滑到最底部蒂秘,你將會看到如下圖所示:

shot.png

注意:我們可以看到有4個對應的編譯庫文件就是相應的RN版本所需要的編譯庫泽本,這4個編譯庫都需要你下載。

接下來姻僧,我們有2種方式來下載4個編譯庫對應的壓縮包:

  • 第一種方式

依賴庫下載鏈接:RN中文網(wǎng)作者的第三方依賴庫百度網(wǎng)盤鏈接

  • 第二種方式

如果在第一種方式中沒有找到對應的依賴庫版本(有可能隨著版本更新规丽,RN中文網(wǎng)的作者沒來得及更新或者忘記了),那么你可以用另一種稍微麻煩一點但是100%正確的方式來下載你所需要的依賴庫撇贺,繼續(xù)往下看

在上面的圖片中赌莺,我們看到了4個依賴庫以及對應的鏈接,是的松嘶,沒錯艘狭,我們可以通過對應的鏈接找到相應的壓縮包版本,然后下載翠订。這里以第一個glog-0.3.5.tar.gz為例巢音,它對應所在的github鏈接地址是:https://github.com/google/glog(后面的一串串不需要,我們只需要它所在的github地址)尽超,打開之后如下:

shot.png

點擊上圖中的releases官撼,進入可以找到相應版本如下:

shot.png

然后點擊紅圈中的Source code(tar.gz)下載,完成似谁。(其他3個依賴庫類似)

下載完4個依賴壓縮包之后傲绣,不用解壓掠哥,我們直接放到相應的目錄當中:

  • RN版本在>=0.58

將壓縮包放到 ~/Library/Caches/com.facebook.ReactNativeBuild

?  ~ cd ~/Library/Caches/com.facebook.ReactNativeBuild
?  com.facebook.ReactNativeBuild pwd
/Users/langke/Library/Caches/com.facebook.ReactNativeBuild
?  com.facebook.ReactNativeBuild ls
boost_1_63_0.tar.gz  double-conversion-1.1.6.tar.gz folly-2018.10.22.00.tar.gz  glog-0.3.5.tar.gz

注意:或許在~/Library/Caches目錄下,你并沒有com.facebook.ReactNativeBuild文件夾秃诵,怎么辦续搀?進入到cd ~/Library/Caches目錄下,然后使用mkdir com.facebook.ReactNativeBuild創(chuàng)建一個就好了菠净。

  • RN版本在<0.58

將壓縮包放到 ~/.rncache目錄下禁舷,一般情況下.rncache文件夾也是有的,如果沒有嗤练,同理榛了,使用 mkdir .rncache創(chuàng)建一個就好。

注意:雖然我們可以使用環(huán)境變量的方式自定義路徑煞抬,但是我個人還是建議按照正常的這種全局方式去配置比較好霜大,畢竟,自定義路徑很可能因為個人疏忽而出錯革答,這個也因人而異战坤,如果想要使用具體環(huán)境變量自定義路徑,可前往:RN中文網(wǎng)作者的指導說明残拐,本文也主要來源于此的參考途茫。

完畢

運行 pod install:

shot.png

經(jīng)過上面的一番小折騰,到此為止溪食,基本告一段落囊卜,也應該可以稍微正常pod install了。還是會有點慢错沃,甚至也有可能會失敗栅组,但是多嘗試幾次應該會成功。

個人博客地址

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末枢析,一起剝皮案震驚了整個濱河市玉掸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌醒叁,老刑警劉巖司浪,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異把沼,居然都是意外死亡啊易,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門饮睬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來租谈,“玉大人,你說我怎么就攤上這事续捂】汛梗” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵牙瓢,是天一觀的道長劫拗。 經(jīng)常有香客問我,道長矾克,這世上最難降的妖魔是什么页慷? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮胁附,結果婚禮上酒繁,老公的妹妹穿的比我還像新娘。我一直安慰自己控妻,他們只是感情好州袒,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弓候,像睡著了一般郎哭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菇存,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天夸研,我揣著相機與錄音,去河邊找鬼依鸥。 笑死亥至,一個胖子當著我的面吹牛,可吹牛的內容都是我干的贱迟。 我是一名探鬼主播姐扮,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼关筒!你這毒婦竟也來了溶握?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蒸播,失蹤者是張志新(化名)和其女友劉穎睡榆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袍榆,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡胀屿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了包雀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宿崭。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖才写,靈堂內的尸體忽然破棺而出葡兑,到底是詐尸還是另有隱情奖蔓,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布讹堤,位于F島的核電站吆鹤,受9級特大地震影響,放射性物質發(fā)生泄漏洲守。R本人自食惡果不足惜疑务,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梗醇。 院中可真熱鬧知允,春花似錦、人聲如沸叙谨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽手负。三九已至嗤朴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虫溜,已是汗流浹背雹姊。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留衡楞,地道東北人吱雏。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像瘾境,于是被迫代替她去往敵國和親歧杏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容