[Cordova] 編譯 iOS 出現 ‘xcodebuild’ requires Xcode 的錯誤訊息
自己寫的「圖書館多重帳戶」app 一直都只有 Chrome 和 Android 版本,
今天想來編譯一下 Cordova 的 iOS 版本時,
又遇到了一些和先前遇過不同的問題…
這些是之前編譯與除錯 iOS 時曾遇到的問題:
- [Cordova] 增加 ios platform 時,出現 Failed to fetch platform cordova-ios 的問題
- [Cordova] 專案名稱裡有中文字時,Cordova 編譯會失敗
- [Cordova] 用 Safari 開發者工具找出 Cordova app 裡的 JavaScript 錯誤
- [Cordova] 在 iOS 模擬器上執行 Cordova app
來記錄一下這次遇到的問題吧~
1. Cordova 專案中缺少 iOS 平台支援
在執行 cordova build ios 之後,出現了錯誤訊息
The platform “ios” does not appear to have been added to this project:
testuser@localhost ~ $ cordova build --debug ios (node:16131) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: The platform "ios" does not appear to have been added to this project.
這是因為我之前移掉了 ios 的 platform~
執行 cordova platform 可以看到目前專案中只安裝了 android 平台支援:
testuser@localhost ~ $ cordova platform Installed platforms: android 6.2.3 Available platforms: browser ~5.0.1 ios ~4.5.4 osx ~4.0.1 windows ~5.0.0 www ^3.12.0
只要把 ios 平台支援加上就好了:
cordova platform add ios
2. 找不到完整的 Xcode
繼續執行 cordova build ios,又出現了另一個錯誤訊息
tool ‘xcodebuild’ requires Xcode, but active developer directory
‘/Library/Developer/CommandLineTools’ is a command line tools instance
這個還真的有點搞不懂是在做什麼:
testuser@localhost ~ $ cordova build --debug ios (node:16169) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
不過我這台 Mac 的確是還沒安裝 Xcode…
先到 Mac 的 App Store 搜尋 Xcode 來安裝~
裝好之後,記得要執行一次 Xcode,
它還會繼續安裝其他的元件:
註:如果裝好 Xcode 後沒有先執行一次,
執行 cordova build ios 可能會出現找不到模擬器的錯誤訊息,
執行過 Xcode 後就會消失了:
testuser@localhost ~ $ cordova build --debug ios (node:99278) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Command failed: xcrun simctl list --json dyld: Library not loaded: /Library/Developer/PrivateFrameworks/CoreSimulator.framework/Versions/A/CoreSimulator Referenced from: /Applications/Xcode.app/Contents/Developer/usr/bin/simctl Reason: image not found
但 Xcode 裝好之後,還是會出現 ‘xcodebuild’ requires Xcode 的錯誤訊息…
查了一下,是說預設的 /Library/Developer/CommandLineTools 目錄下,
並沒有完整的 Xcode,但 cordova build ios 需要的是完整的 Xcode。
因此要執行下面的指令,切換到剛裝好的 Xcode 路徑上:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
這時再執行 cordova build ios,就沒有問題了:
testuser@localhost ~ $ cordova build --debug ios Building for iPhone X Simulator ...... ** BUILD SUCCEEDED **
參考資料:
stackoverflow: xcode-select active developer directory error