Xcode安装多个版本并自动切换版本
2020-03-11 17:22 加个小鸡腿 阅读(10277) 评论(3) 编辑 收藏 举报因为业务需要,我们有时候需要安装多个xcode版本,新的版本,老的版本。新的版本我们以xcode11为例子,老的版本,我们以xcode10为例子,
下载老版本到: https://developer.apple.com/download/more/ 下载xcode10版本。
1.下载以后 我们看到是一个xcode10.xip文件,这是我第一次看到xip后缀的文件, 原来双击一下就可以了,会解压出一个xcode.app 的文件夹。
2.在/Applications目录下新建一个文件夹Xcode10,将刚才第一步中得到的xcode.app移动到/Applications/Xcode10/目录下。
3.显示当前使用的xcode : xcode-select -p ,显示如下:
4.切换版本:sudo xcode-select -s /Applications/Xcode10/Xcode.app/Contents/Developer
5.显示当前版本:
用几种方式,如下:
(1)查看生效路径: gcc --version ,如下(最后那条):
(2)xcode-select -p 如下:
(3)查看xcode版本号: xcodebuild -version
要再切回xcode11 也是一样的办法,这样就可以切来切去了。
但是,还有个问题,jenkins构建,我们基本都是要求自动化,最好直接调用脚本就可以切换,
上面这些步骤中需要输入密码的是:sudo xcode-select -s /Applications/Xcode10/Xcode.app/Contents/Developer 必须以root权限执行。那么怎么自动切换与检测版本呢?
可以使用expect来实现自动输入密码
即在切换xcode版本之前,执行export DEVELOPER_DIR切换环境变量,函数如下:
change_xcode_version() { [ "$1" != "11" -a "$1" != "13" ] && echo "input is $1,not 11 or 13" && exit 1 xcode_v=$1 echo "xcode version:" xcodebuild -version [ "$1" == "11" ] && export DEVELOPER_DIR=/Applications/Xcode11/Xcode.app/Contents/Developer [ "$1" == "13" ] && export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer ./expect_xcode $1 #该脚本用于切换xcode版本,执行后可以使用gcc --version验证DEVELOPER_DIR是否是对应xcode版本的路径 sleep 10 xcodebuild -version #检查是否切换成功,否则异常退出 xcode_ver=`xcodebuild -version |grep Xcode |awk -F " " '{print $2}'` [ "$1" == "11" ] && [ "$xcode_ver" != "11.4" ] && echo "xcode version $xcode_ver, not 11.4" && exit 1 [ "$1" == "13" ] && [ "$xcode_ver" != "13.1" ] && echo "xcode version $xcode_ver, not 13.1" && exit 1 echo "new xcode version:" xcodebuild -version }
其中expect_xcode脚本如下:
#!/usr/bin/expect set timeout 10 set version [lindex $argv 0] set password "12341234123" #开机密码 if {$version == "13" } { spawn sudo xcode-select -s /Applications/Xcode.app/Contents/Developer } if {$version == "11" } { spawn sudo xcode-select -s /Applications/Xcode11/Xcode.app/Contents/Developer } expect "*assword*" {send "$password\r"} interact
调用上面的 函数change_xcode_version 11就可以切换到xcode11 , 调用函数change_xcode_version 13就可以切换到xcode13
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix