[React Native]錯(cuò)誤: 'config.h' file not found / ":CFBundleIdentifier", Does Not Exist

自從 Xcode 更新到 10, 還沒有運(yùn)行過 RN 項(xiàng)目, 一打開項(xiàng)目運(yùn)行, 報(bào)各種莫名其妙的錯(cuò)誤. 國(guó)內(nèi)的網(wǎng)站各種答案混淆視聽, 反正我是沒找到解決方法, 在 RN 官方Github 中, 找了好久, 才解決, 在這里做一下記錄.

1. 問題怎么出現(xiàn)的?

在 Terminal 新建一個(gè)測(cè)試項(xiàng)目.

react-native init DemoObject

在 Terminal 中運(yùn)行, 或者直接點(diǎn)擊 Xcode項(xiàng)目入口文件 DemoObject.xcodeproj, 運(yùn)行程序.

react-native run-ios

在默認(rèn)情況下(啥也不改), 程序會(huì)直接報(bào)錯(cuò), 如果你是在 Terminal 中運(yùn)行, 會(huì)直接看到下面這兩個(gè)錯(cuò)誤.

'config.h' file not found 

 ":CFBundleIdentifier", Does Not Exist

2. 問題怎么解決的?

這兩個(gè)問題其實(shí)挺莫名其妙的. 在官方的 issue 中, 很容易找到類似的解答. 但能完美解決問題的, 沒有. 主要是我覺得信息太雜了, 所以以此篇文章做一下記錄.
大致的解決思路如下:

  • 我們需要切換 Xcode10 的默認(rèn)編譯系統(tǒng). 默認(rèn)是 New Build System, 我們需要切換為 Legacy Build System, 為什么最新版的 RN (0.57) 不支持 Xcode10 的新編譯系統(tǒng), 目前還不知道.

    image.png

  • 手動(dòng)安裝第三方腳本.

  1. 刪除 rncache, 清理緩存文件
$ rm -rf node_modules/ && yarn cache clean && yarn install and rm -rf ~/.rncache
  1. 在 rncache 文件夾中 安裝第三方文件
$ cd node_modules/react-native/scripts
$ ./ios-install-third-party.sh

上面這個(gè)腳本文件會(huì)直接把第三方文件安裝到 .rncache 文件夾中.
如果網(wǎng)速差, 可以按照下面手動(dòng)下載安裝.

folly-2016.10.31.00
double-conversion-1.1.5
glog-0.3.5
boost_1_63_0

  1. Xcode Build
    一開始 third-party 這個(gè)文件夾是沒有的, 切換完 Xcode10 的編譯系統(tǒng)后, 再次編譯項(xiàng)目, 程序會(huì)自動(dòng)創(chuàng)建 third-party 文件夾, 從 .rncache 文件夾中把所有需要的文件解壓拷貝到 third-party 文件夾中.

  2. 配置 glob 文件.

$ cd <Your-Project-Folder>/node_modules/react-native/third-party/glog-0.3.5

$ ../../scripts/ios-configure-glog.sh
  1. Xcode Build.

經(jīng)過上面的步驟, 目前應(yīng)該能解決問題.

注意

  • 在解決上面的問題之前, 最好把 node.js 升級(jí)到最新.
$ brew upgrade node
  • Xcode10 一定注意要切換到 Legacy Build System, 才編譯項(xiàng)目. 這個(gè)直接涉及到從 rncache 拷貝過來的文件. 我嘗試過用默認(rèn)的 system 編譯項(xiàng)目, 會(huì)報(bào)錯(cuò).
  • 如果你編譯項(xiàng)目 third-party 文件夾沒有自動(dòng)生成, 建議你手動(dòng)把當(dāng)前項(xiàng)目中的 node_modules 文件夾刪掉, 重新加載第三方庫. 此方法我屢試不爽.
$ yarn install 
  • 如果下次你再需要?jiǎng)?chuàng)建新項(xiàng)目, 你不需要頻繁更新 .rncache, 目前這個(gè)文件沒什么變化. 你需要做的最重要的是:
    配置 glob 文件
    配置 glob 文件
    配置 glob 文件
    重要的事說三遍.

參考

'config.h' file not found when I upgraded xcode10

When new Xcode build system is used, Xcode build fails to download third-party dependencies

Supporting Xcode 10 and the new Xcode build system

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容