Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Instruments总是为具有自动化功能的通用应用程序启动iPad模拟器,我如何强制它使用iPhone模拟器?_Iphone_Ios Simulator_Instruments_Ios Ui Automation - Fatal编程技术网

Instruments总是为具有自动化功能的通用应用程序启动iPad模拟器,我如何强制它使用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控制活动的可执

我使用iOS 4.2和Xcode 3.2.5创建了一个通用二进制文件。我正在尝试对应用程序进行一些自动化测试,由于iPad和iPhone版本的界面略有不同,我有单独的UIAutomation脚本。不幸的是,无论我做什么,当我点击Instruments中的record按钮时,它总是使用iPad模拟器启动应用程序。如何强制Instruments启动iPhone模拟器


通用应用程序在所有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模拟器。假设您已经选择了应用程序:

  • 单击目标选择器(当前显示您的应用程序名称)
  • 单击“编辑活动目标”
  • 在底部附近,单击“选项”下拉列表
  • 在列表底部,您可以选择“模拟器配置”

  • 这就是我一直在寻找的解决方案。您将看到所有可用模拟器的列表,并选择正确的模拟器。完成。这是正确的答案。我想补充一点,更直接的方法是:目标菜单(显示应用程序名称)>选项,并选择所需的模拟器配置,而无需打开任何对话框。