首页 文章

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

提问于
浏览
7

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

通用应用程序在所有3个模拟设备(iPhone,iPhone(Retina)和iPad)的模拟器中运行良好 . 我可以通过Xcode控制Active Executable并使用指定的模拟器正确地“构建并运行/调试”工作正常 . 当我启动Instruments时,我选择iOS模拟器>全部>自动化,然后为iPhone选择我的自动化脚本,然后将目标设置为project-name / build / Debug-iphonesimulator / project-name .

4 回答

  • 5

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

    • 单击目标选择器(当前显示您的应用程序名称) .

    • 点击"Edit Active Target"

    • 在底部附近,单击"Options"下拉列表 .

    • 在列表底部,您可以选择"Simulator Configuration" .

  • 4

    在从命令行运行自动化之前,只需将以下内容传递给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

  • 9

    一个非常简单的解决方案是在启动自动化之前修改应用程序的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
    
  • 1

    我也遇到了这个问题,我注意到,因为无论我使用哪种运行设置,XCode都会显示模拟器 - 3.2,它应该在iPhone模拟器上为SDK版本显示4.0或4.1 .

    我能够通过将“目标设备系列”设置更改为iPhone / iPad来修复它,因为它设置为iPad .

相关问题