Instruments总是为具有自动化功能的通用应用程序启动iPad模拟器,我如何强制它使用iPhone模拟器?
我使用iOS 4.2和Xcode 3.2.5创建了一个通用二进制文件。我正在尝试对应用程序进行一些自动化测试,由于iPad和iPhone版本的界面略有不同,我有单独的UIAutomation脚本。不幸的是,无论我做什么,当我点击Instruments中的record按钮时,它总是使用iPad模拟器启动应用程序。如何强制Instruments启动iPhone模拟器Instruments总是为具有自动化功能的通用应用程序启动iPad模拟器,我如何强制它使用iPhone模拟器?,iphone,ios-simulator,instruments,ios-ui-automation,Iphone,Ios Simulator,Instruments,Ios Ui Automation,我使用iOS 4.2和Xcode 3.2.5创建了一个通用二进制文件。我正在尝试对应用程序进行一些自动化测试,由于iPad和iPhone版本的界面略有不同,我有单独的UIAutomation脚本。不幸的是,无论我做什么,当我点击Instruments中的record按钮时,它总是使用iPad模拟器启动应用程序。如何强制Instruments启动iPhone模拟器 通用应用程序在所有3个模拟设备(iPhone、iPhone(视网膜)和iPad)的模拟器中运行良好。我可以通过Xcode控制活动的可执
通用应用程序在所有3个模拟设备(iPhone、iPhone(视网膜)和iPad)的模拟器中运行良好。我可以通过Xcode控制活动的可执行文件,“构建并运行/调试”可以正常工作,正确使用指定的模拟器。当我启动Instruments时,我选择iOS Simulator>All>Automation,然后为iPhone选择我的自动化脚本,然后将目标设置为project name/build/Debug iphonesimulator/project name。我在这方面也遇到了问题,我注意到了这一点,因为无论我使用哪种运行设置,XCode显示的是Simulator-3.2,而iPhone模拟器上的SDK版本应该显示4.0或4.1
我可以通过将“目标设备系列”设置改为iPhone/iPad来解决这个问题,因为它不知何故只设置为iPad 在从命令行运行自动化之前,仅通过将以下内容传递给xcodebuild来创建通用应用程序的iPhone版本: 目标设备\u系列=1 然后使用仪器运行自动化 如果你想测试iPad,在没有该构建选项的情况下进行另一个构建,然后仪器/模拟器将默认返回到iPad 如需参考,请在此处查看目标\u设备\u系列的文档:
一个非常简单的解决方案是在启动自动化之前修改应用程序的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
根本不需要乱动你的应用程序:Instruments允许你选择是使用iPhone还是iPad模拟器。假设您已经选择了应用程序:
这就是我一直在寻找的解决方案。您将看到所有可用模拟器的列表,并选择正确的模拟器。完成。这是正确的答案。我想补充一点,更直接的方法是:目标菜单(显示应用程序名称)>选项,并选择所需的模拟器配置,而无需打开任何对话框。