我使用iOS 4.2和Xcode 3.2.5创建了一个通用二进制文件。我正在尝试对应用程序进行一些自动化测试,因为iPad和iPhone版本之间的界面略有不同,我有单独的UIAutomation脚本。不幸的是,无论我做什么,当我点击Instruments中的记录按钮时,它总是使用iPad模拟器启动应用程序。如何强制Instruments启动iPhone模拟器?
通用应用程序在所有3个模拟设备(iPhone,iPhone(Retina)和iPad)的模拟器中运行良好。我可以通过Xcode控制Active Executable并使用指定的模拟器正确地“构建并运行/调试”工作正常。当我启动仪器时,我选择iOS模拟器>全部>自动化,然后为iPhone选择我的自动化脚本,然后将目标设置为project-name / build / Debug-iphonesimulator / project-name。
答案 0 :(得分:9)
在从命令行运行自动化之前,只需将以下内容传递给xcodebuild,即可创建通用应用程序的构建版本,这只是iPhone的一部分:
TARGETED_DEVICE_FAMILY = 1
然后使用仪器运行自动化。
如果您想测试iPad,请在没有该构建选项的情况下进行另一次构建,然后将仪器/模拟器默认返回到iPad
如需参考,请查看TARGETED_DEVICE_FAMILY的文档:
答案 1 :(得分:5)
根本不需要乱用你的应用程序:乐器允许你选择是否使用iPhone或iPad模拟器。假设您已经选择了自己的应用:
答案 2 :(得分:4)
一个非常简单的解决方案是在启动自动化之前修改应用程序的Info.plist(无需重建应用程序)。使用PlistBuddy将UIDeviceFamily修改为iPhone或iPad。例如:
plistbuddy="/usr/libexec/PlistBuddy"
plistfile="$myapp/Info.plist"
if [ $device == "iphone" ]; then
uidevicefamily=1
else
uidevicefamily=2
fi
$plistbuddy -c "Delete :UIDeviceFamily" $plistfile
$plistbuddy -c "Add :UIDeviceFamily array" $plistfile
$plistbuddy -c "Add :UIDeviceFamily:0 integer $uidevicefamily" $plistfile
答案 3 :(得分:1)
我也遇到了这个问题,我注意到了,因为无论我使用哪种运行设置,XCode都会显示模拟器 - 3.2,它应该在iPhone模拟器上为SDK版本显示4.0或4.1。 / p>
我能够通过将“目标设备系列”设置更改为iPhone / iPad来修复它,因为它设置为iPad。