乐器总是推出用于通用自动化应用程序的iPad模拟器,如何强制它使用iPhone模拟器?

时间:2010-12-03 20:53:58

标签: iphone ios-simulator instruments ios-ui-automation

我使用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。

4 个答案:

答案 0 :(得分:9)

在从命令行运行自动化之前,只需将以下内容传递给xcodebuild,即可创建通用应用程序的构建版本,这只是iPhone的一部分:

TARGETED_DEVICE_FAMILY = 1

然后使用仪器运行自动化。

如果您想测试iPad,请在没有该构建选项的情况下进行另一次构建,然后将仪器/模拟器默认返回到iPad

如需参考,请查看TARGETED_DEVICE_FAMILY的文档:

http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html

答案 1 :(得分:5)

根本不需要乱用你的应用程序:乐器允许你选择是否使用iPhone或iPad模拟器。假设您已经选择了自己的应用:

  1. 单击目标选择器(当前显示您的应用名称)。
  2. 点击“修改活动目标”
  3. 在底部附近,点击“选项”下拉列表。
  4. 在列表底部,您可以选择“模拟器配置”。

答案 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。