簡體   English   中英

樂器總是推出用於通用自動化應用程序的iPad模擬器,如何強制它使用iPhone模擬器?

[英]Instruments always launches iPad Simulator for Universal Apps with Automation, how can I force it to use the iPhone Simulator?

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

在從命令行運行自動化之前,只需將以下內容傳遞給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

根本不需要亂用您的應用程序:儀器允許您選擇是否使用iPhone或iPad模擬器。 假設您已經選擇了自己的應用:

  1. 單擊目標選擇器(當前顯示您的應用程序名稱)。
  2. 點擊“編輯活動目標”
  3. 在底部附近,單擊“選項”下拉菜單。
  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

我也遇到了這個問題,我注意到,因為無論我使用哪種運行設置,XCode都會顯示模擬器 - 3.2,它應該在iPhone模擬器上為SDK版本顯示4.0或4.1。

我能夠通過將“目標設備系列”設置更改為iPhone / iPad來修復它,因為它設置為iPad。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM