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

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

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

在 Terminal 新建一個測試項目.

react-native init DemoObject

在 Terminal 中運行, 或者直接點擊 Xcode項目入口文件 DemoObject.xcodeproj, 運行程序.

react-native run-ios

在默認情況下(啥也不改), 程序會直接報錯, 如果你是在 Terminal 中運行, 會直接看到下面這兩個錯誤.

'config.h' file not found 

 ":CFBundleIdentifier", Does Not Exist

2. 問題怎么解決的?

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

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

    image.png

  • 手動安裝第三方腳本.

  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

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

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

  1. Xcode Build
    一開始 third-party 這個文件夾是沒有的, 切換完 Xcode10 的編譯系統(tǒ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)過上面的步驟, 目前應該能解決問題.

注意

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

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

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

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