Xcode安装多个版本并自动切换版本
2020-03-11 17:22 加个小鸡腿 阅读(9922) 评论(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