从命令行设置iOS模拟器的版本

时间:2013-04-19 16:55:03

标签: ios-simulator ios-ui-automation

上下文:使用Xcode的UIAutomation和模拟器6.1和5.1运行自动脚本 Xcode版本是4.6.1

问题:当从终端运行shell脚本时,即使我已将应用程序路径设置为5.1,UIAutomation也会打开6.1。

我已经尝试在5.1上构建和运行,如果我从Instruments运行测试,我可以选择5.1的目标并且它工作正常。问题出在我从命令行运行时。

我检查了iphonesimulator.plist,当前SDKRoot指向5.1路径,但是一旦shell脚本运行,它就会变为6.1。无论如何我可以强迫它使用5.1?

经过几个小时的搜索(包括最合适的一个 - Launch a specific Hardware version of iOS simulator using instruments command line utility),似乎没有解决方案。

有一种方法可以使用默认设置来设置设备com.apple.iphonesimulator \“SimulateDevice”'“iPad”' 我需要像默认的那样写com.apple.iphonesimulator \“Version”'“5.1”' 虽然显然不起作用。

任何指针都将非常感激。谢谢!

编辑:我希望这可以通过XCode 5来解决,但我仍然有同样的问题,iOS7模拟器总是打开!顺便问一下,有没有办法绕过这个问题 - 我确信有很多人在运行多个模拟器版本。

2 个答案:

答案 0 :(得分:1)

这不是很优雅,但是我们已经能够开始自动化设置工作了:

从App Store安装Xcode 5 安装Xcode 4.6.3或从开发人员门户网站的“旧版Xcode页面”
重复使用旧版本的Xcode,其中max sim版本==您想要运行的版本 使用“sudo xcode-select -switch /path/to/Xcode.app ”来选择Xcode的版本

希望有所帮助!

答案 1 :(得分:1)

我在Jenkins盒子上运行自动化测试时遇到了这个问题,我做了以下操作,用ver 6.1模拟器而不是7.0模拟器测试我的应用程序:

使用Jenkins:

步骤1 =我创建了一个使用6.1 sdk版本构建ios应用程序的作业。

===========================================

第2步=我使用bash脚本创建第二个作业,该脚本位于第一个作业的下游,执行以下操作:

[进入Xcode应用程序位置进入iphone模拟器sdk目录]

cd'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs /'

[将'iPhoneSimulator7.0.sdk'目录移动到另一个位置(我选择桌面)]

echo [ENTER ADMIN PASSWORD HERE] | sudo -S mv iPhoneSimulator7.0.sdk / $ {HOME} / Desktop

[将'iPhoneSimulator6.1.sdk'重命名为'iPhoneSimulator7.0.sdk']

echo [ENTER ADMIN PASSWORD HERE] | sudo -S mv iPhoneSimulator6.1.sdk / iPhoneSimulator7.0.sdk /

===========================================

第3步=我创建第3个执行测试的作业。我第二份工作下游的第三份工作。

===========================================

步骤4 =我创建了第3个工作下游的第4个工作。第四个作业使用bash脚本执行以下操作:

[进入Xcode应用程序位置进入iphone模拟器sdk目录]

cd'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs /'

[将'iPhoneSimulator7.0.sdk'重命名为'iPhoneSimulator6.1.sdk']

echo [ENTER ADMIN PASSWORD HERE] | sudo -S mv iPhoneSimulator7.0.sdk / iPhoneSimulator6.1.sdk /

[转到您移动'iPhoneSimulator7.0.sdk'的目录(在我的情况下,我将'iPhoneSimulator7.0.sdk'移动到桌面)]

cd $ {HOME} /桌面

[将'iPhoneSimulator7.0.sdk'目录移回Xcode app sdk目录]

echo [ENTER ADMIN PASSWORD HERE] | sudo -S mv iPhoneSimulator7.0.sdk /'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs /'

[我杀死了与自动化相关的任何延迟过程]

ps ax | grep [b] ash | awk'{print $ 1}'| xargs kill -9

ps ax | grep [i] nstruments | awk'{print $ 1}'| xargs kill -9

===========================================

我可能需要让这个过程更加万无一失,但我认为它比在自动化机器上拥有多个xcode实例更好。