2010-12-03 7 views
7

He creado un binario universal usando iOS 4.2 y Xcode 3.2.5. Estoy tratando de hacer algunas pruebas de automatización en la aplicación y dado que las interfaces son ligeramente diferentes entre las versiones de iPad y iPhone, tengo scripts de UIAutomation separados. Desafortunadamente, no importa lo que haga, cuando hago clic en el botón de grabación en Instrumentos, siempre comienza la aplicación usando el simulador de iPad. ¿Cómo puedo forzar a Instruments a iniciar el simulador de iPhone?Los instrumentos siempre lanzan el simulador de iPad para aplicaciones universales con automatización, ¿cómo puedo obligarlo a usar el simulador de iPhone?

La aplicación universal funciona bien en el simulador para los 3 dispositivos simulados (iPhone, iPhone (Retina) y iPad). Puedo gobernar Active Executable a través de Xcode y "Build and Run/Debug" funciona bien, usando correctamente el simulador especificado. Cuando lance Instrumentos, elijo iOS Simulator> Todo> Automatización, luego selecciono mi secuencia de comandos de automatización para el iPhone y luego establezco el objetivo como nombre-proyecto/compilación/Debug-iphonesimulator/nombre-proyecto.

Respuesta

4

No hay necesidad de perder el tiempo con su aplicación: Instruments le permite seleccionar si desea usar el simulador de iPhone o iPad. Suponiendo que ya ha seleccionado su aplicación:

  1. Haga clic en el selector de destino (que actualmente muestra el nombre de la aplicación).
  2. Haga clic en "Editar destino activo"
  3. Cerca de la parte inferior, haga clic en el menú desplegable "Opciones".
  4. En la parte inferior de la lista, puede seleccionar la "Configuración del simulador".
+1

ESTA es la solución que estaba buscando. Verá una lista de todos los simuladores disponibles y seleccionará la correcta. Hecho. – Nuthatch

+1

Esta es la respuesta correcta. Añadiría que un enfoque un poco más directo es: ** Menú objetivo (que muestra el nombre de la aplicación)> Opciones ** y elija la configuración del simulador deseada sin tener que abrir ningún cuadro de diálogo. – Stuart

1

También tuve problemas con esto, lo que noté porque no importaba qué configuración de ejecución estaba usando, XCode mostraba Simulator - 3.2, cuando debería haber mostrado 4.0 o 4.1 para la versión SDK en el simulador de iPhone.

Pude arreglarlo cambiando la configuración "Familia de dispositivos de destino" a iPhone/iPad, ya que de alguna manera estaba configurada solo para iPad.

9

Antes de ejecutar la automatización de la línea de comandos crear una versión de su aplicación universal que es iPhone solamente pasando a la siguiente a xcodebuild:

TARGETED_DEVICE_FAMILY = 1

A continuación, ejecute su automatización mediante instrumentos.

Si desea luego probar el iPad, hacer otra construcción, sin que la opción de compilación y luego instrumentos/simulador volverá por defecto a IPAD

Para la comprobación de referencia cabo la documentación para TARGETED_DEVICE_FAMILY aquí:

http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html

4

Una solución muy fácil es modificar el Info.plist de su aplicación antes de iniciar la automatización (no es necesario reconstruir la aplicación). Utilice PlistBuddy para modificar UIDeviceFamily para ser iPhone o iPad. Por ejemplo:

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 
Cuestiones relacionadas