167 lines
4.3 KiB
Bash
Executable File
167 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
echo "🍎 完整的 Xcode 設定腳本"
|
|
echo "======================="
|
|
|
|
# Function to check if Xcode is installed
|
|
check_xcode_installation() {
|
|
if [ -d "/Applications/Xcode.app" ]; then
|
|
echo "✅ Xcode 已安裝"
|
|
return 0
|
|
else
|
|
echo "❌ Xcode 尚未安裝"
|
|
echo "請先從 Mac App Store 安裝 Xcode"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Function to configure Xcode developer tools
|
|
configure_xcode_tools() {
|
|
echo "🔧 設定 Xcode 開發者工具..."
|
|
|
|
# Set Xcode developer directory
|
|
echo "設定 Xcode 開發者路徑..."
|
|
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Xcode 開發者路徑設定成功"
|
|
else
|
|
echo "❌ Xcode 開發者路徑設定失敗"
|
|
return 1
|
|
fi
|
|
|
|
# Run first launch
|
|
echo "執行 Xcode 首次啟動設定..."
|
|
sudo xcodebuild -runFirstLaunch
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Xcode 首次啟動設定完成"
|
|
else
|
|
echo "❌ Xcode 首次啟動設定失敗"
|
|
return 1
|
|
fi
|
|
|
|
# Accept license
|
|
echo "接受 Xcode 授權條款..."
|
|
sudo xcodebuild -license accept
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Xcode 授權條款已接受"
|
|
else
|
|
echo "❌ Xcode 授權條款接受失敗"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Function to install CocoaPods if not present
|
|
install_cocoapods() {
|
|
if command -v pod &> /dev/null; then
|
|
echo "✅ CocoaPods 已存在"
|
|
else
|
|
echo "🔧 安裝 CocoaPods..."
|
|
sudo gem install cocoapods
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ CocoaPods 安裝成功"
|
|
else
|
|
echo "❌ CocoaPods 安裝失敗"
|
|
return 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Function to configure Flutter for iOS
|
|
configure_flutter_ios() {
|
|
echo "🐦 設定 Flutter iOS 開發環境..."
|
|
|
|
# Add Flutter to PATH for this session
|
|
export PATH="/Users/jettcheng1018/flutter/bin:$PATH"
|
|
|
|
# Run Flutter doctor to check iOS setup
|
|
flutter doctor --doctor-ios-only 2>/dev/null || flutter doctor
|
|
|
|
echo "✅ Flutter iOS 設定檢查完成"
|
|
}
|
|
|
|
# Function to verify the complete setup
|
|
verify_setup() {
|
|
echo "🔍 驗證完整設定..."
|
|
|
|
# Run the verification script
|
|
if [ -f "./tools/environment/xcode/xcode_verification.sh" ]; then
|
|
./tools/environment/xcode/xcode_verification.sh
|
|
else
|
|
echo "⚠️ 驗證腳本不存在,執行基本檢查..."
|
|
|
|
# Basic verification
|
|
if [ -d "/Applications/Xcode.app" ]; then
|
|
echo "✅ Xcode 已安裝"
|
|
|
|
XCODE_PATH=$(xcode-select --print-path)
|
|
if [[ "$XCODE_PATH" == "/Applications/Xcode.app/Contents/Developer" ]]; then
|
|
echo "✅ Xcode 開發者路徑正確"
|
|
else
|
|
echo "❌ Xcode 開發者路徑不正確: $XCODE_PATH"
|
|
fi
|
|
else
|
|
echo "❌ Xcode 未安裝"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Function to update project status
|
|
update_project_status() {
|
|
echo "📝 更新專案狀態..."
|
|
|
|
# Update PROJECTS.md
|
|
if [ -f "PROJECTS.md" ]; then
|
|
# Replace the status line for Xcode installation
|
|
if sed -i.bak 's/⏳ `ENV` Xcode 安裝配置 (iOS支援)/✅ `ENV` Xcode 安裝配置 (iOS支援) (2025-09-08)/' PROJECTS.md; then
|
|
echo "✅ 專案狀態已更新"
|
|
else
|
|
echo "⚠️ 專案狀態更新可能失敗"
|
|
fi
|
|
else
|
|
echo "⚠️ PROJECTS.md 檔案不存在"
|
|
fi
|
|
}
|
|
|
|
# Main execution flow
|
|
main() {
|
|
echo "開始 Xcode 完整設定流程..."
|
|
echo ""
|
|
|
|
# Check if Xcode is installed
|
|
if ! check_xcode_installation; then
|
|
echo "請先安裝 Xcode 然後再次執行此腳本"
|
|
exit 1
|
|
fi
|
|
|
|
# Configure Xcode tools
|
|
if ! configure_xcode_tools; then
|
|
echo "Xcode 工具設定失敗"
|
|
exit 1
|
|
fi
|
|
|
|
# Install CocoaPods
|
|
if ! install_cocoapods; then
|
|
echo "CocoaPods 安裝失敗"
|
|
exit 1
|
|
fi
|
|
|
|
# Configure Flutter for iOS
|
|
configure_flutter_ios
|
|
|
|
# Verify setup
|
|
verify_setup
|
|
|
|
# Update project status
|
|
update_project_status
|
|
|
|
echo ""
|
|
echo "🎉 Xcode 設定完成!"
|
|
echo "現在您可以開始 iOS 開發了"
|
|
}
|
|
|
|
# Run main function
|
|
main |