【问题标题】:Instruments always launches iPad Simulator for Universal Apps with Automation, how can I force it to use the iPhone Simulator?Instruments 总是启动 iPad Simulator for Universal Apps with Automation,如何强制它使用 iPhone Simulator?
【发布时间】:2011-05-19 23:38:11
【问题描述】:

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

通用应用在模拟器中运行良好,适用于所有 3 种模拟设备(iPhone、iPhone (Retina) 和 iPad)。我可以通过 Xcode 管理 Active Executable,并且“构建和运行/调试”工作正常,正确使用指定的模拟器。当我启动 Instruments 时,我选择 iOS Simulator > All > Automation,然后选择我的 iPhone 自动化脚本,然后将目标设置为 project-name/build/Debug-iphonesimulator/project-name。

【问题讨论】:

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


    【解决方案1】:

    完全无需为您的应用搞乱:Instruments 允许您选择是使用 iPhone 还是 iPad 模拟器。假设您已经选择了您的应用:

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

    【讨论】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        我可以通过将“目标设备系列”设置更改为 iPhone/iPad 来修复它,因为它以某种方式被设置为 iPad。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-22
          • 2011-02-19
          • 1970-01-01
          • 1970-01-01
          • 2018-07-15
          • 1970-01-01
          • 2010-10-30
          • 2015-05-17
          相关资源
          最近更新 更多