trabado support solucion restaurar restauracion resetear queda puedo español como cerrar apple aplicaciones ios workflow simulator

support - ¿Cómo puedo reiniciar el simulador de iOS desde la línea de comando?



support.apple.com/iphone/restore en español (17)

Necesito resetear mucho el simulador de iPhone, y no he encontrado la forma de hacerlo sin usar el mouse. Es algo pequeño, pero estoy realmente harto de hacerlo y me encantaría tener una forma de hacerlo usando un atajo de teclado.

Aún mejor sería una forma de restablecerlo desde la línea de comandos, así que podría construir un reinicio en una secuencia de comandos de implementación.

No estoy muy familiarizado con iOS o MacOS.


Al instalar Xcode, siempre creo un atajo de teclado para "Restablecer contenido y configuración" en el simulador. Un ahorro de tiempo extremadamente útil.

System Preferences > Keyboard > Shortcuts > App Shortcuts > "+"

En el selector de aplicaciones, seleccione "Otro ..." para abrir el cuadro de diálogo del selector de aplicaciones.

En este cuadro de diálogo, no puede "Mostrar contenido del paquete" para explorar un .app, por lo que deberá usar Go to Folder través de Cmd - Shift - G. (Primero abra la aplicación desplegable y seleccione Other )

En la versión actual de Xcode, ve a la ruta:

/Applications/Xcode/Contents/Developer/Applications

Seleccione Simulator.app y presione "Agregar"

Para el Menu Title , ingrese Reset Content and Settings...

Para Keyboard Shortcut , presione CMD - Shift - R


Aquí hay una tarea de Rakefile para reiniciar un simulador específico. Esto funciona con Xcode 7 ya que las herramientas de línea de comandos de Xcode 7 rompieron el comando xcrun simctl uninstall. Tengo un pequeño método runC personalizado porque me gusta ver el comando de terminal real así como su salida.

desc "Resets the iPhone Simulator state" task :reset_simulator => [] do deviceDestinationName = ''iPhone 6'' #for efficiency since we only target one device for our unit tests puts "...starting simulator reset" runC(''killall "iOS Simulator"'') runC(''killall "Simulator"'') runC(''xcrun simctl list > deviceList.txt'') lines = File.open(''deviceList.txt'').readlines lines.each do |line| lineStripped = line.strip if (lineStripped=~/[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}/) if (lineStripped !~ /unavailable/ && lineStripped.include?("#{deviceDestinationName} (")) puts "Inspecting simulator: #{lineStripped} by making sure it is shut down, then erasing it." needsShutdown = !lineStripped.include?(''Shutdown'') aDeviceId = lineStripped[/[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}/] if (needsShutdown) runC("xcrun simctl shutdown #{aDeviceId}") end runC("xcrun simctl erase #{aDeviceId}") #does not work to just uninstall the app with Xcode 7, do just rely on resetting the device above #`xcrun simctl uninstall #{aDeviceId} com.animoto.AppServiceClientTester` end end end runC(''rm deviceList.txt'') end #Runs a command and prints out both the command that will be run and the results def runC(command) puts ''$ '' + command puts `#{command}` end


COPY-PASTE ANSWER - nota: restablecerá el contenido y la configuración de todos los simuladores disponibles.

Gracias @ Alpine por la inspiración y el conocimiento. Si ejecuta esto en su línea de comando, debería poder restablecer todos los sims disponibles. Esto funciona con Xcode 6.

# Get the sim list with the UUIDs OUTPUT="$(xcrun simctl list)" # Parse out the UUIDs and saves them to file echo $OUTPUT | awk -F "[()]" ''{ for (i=2; i<NF; i+=2) print $i }'' | grep ''^[-A-Z0-9]*$'' > output.txt # Iterate through file and reset sim for UUID in `awk ''{ print $1 }'' output.txt` do xcrun simctl erase $UUID done


Como una ventaja añadida al uso de los comandos xcrun, puede iniciar un dispositivo después de haberlo enumerado con

xcrun simctl list

Una vez que tenga la lista que se muestra, ejecute:

xcrun instruments -w "iPhone 5s (8.1 Simulator) [31E5EF01-084B-471B-8AC6-C1EA3167DA9E]"


Eliminar el contenido de

~/Library/Application Support/iPhone Simulator/<sdk revision>

Y estás listo para ir.


En Xcode 6, NO SOLO ELIMINE LA CARPETA PARA EL SIMULADOR. PODRÁ estropear las cosas y le causará dolor de cabeza.

En Xcode 6, en realidad hay una herramienta para controlar el simulador desde la línea de comandos.

Asegúrate de que la configuración de tu línea de comando esté configurada en Xcode 6

xcrun simctl

En Xcode 6, cada dispositivo tiene un GUID / UUID asociado, para restablecer un dispositivo específico, necesita el GUID para ello.

El comando

xcrun simctl list

le mostrará todos los dispositivos que ha configurado. La salida se verá así:

== Devices == -- iOS 7.0 -- iPhone 4s (F77DC0AE-6A6D-4D99-9936-F9DB07BBAA82) (Shutdown) iPhone 5 (5B78FC0D-0034-4134-8B1F-19FD0EC9D581) (Shutdown) iPhone 5s (569E5910-E32D-40E2-811F-D2E8F04EA4EF) (Shutdown) iPad 2 (451DBBD8-A387-4E77-89BF-2B3CD45B4772) (Shutdown) iPad Retina (2C58366B-5B60-4687-8031-6C67383D793F) (Shutdown) iPad Air (50E03D3B-3456-4C49-85AD-60B3AFE4918B) (Shutdown) -- iOS 7.1 -- -- iOS 8.0 -- iPhone 4s (27818821-A0BB-496E-A956-EF876FB514C2) (Shutdown) iPhone 5 (6FBAA7E2-857C-432A-BD03-980D762DA9D2) (Shutdown) iPhone 5s (7675C82B-DE49-45EB-A28D-1175376AEEE9) (Shutdown) iPad 2 (836E7C89-B9D6-4CC5-86DE-B18BA8600E7B) (Shutdown) iPad Retina (EFDD043D-2725-47DC-A3FF-C984F839A631) (Shutdown) iPad Air (9079AD6C-E74D-4D5F-9A0F-4933498B852E) (Shutdown) Resizable iPhone (943CFEDE-A03C-4298-93E3-40D0713652CB) (Shutdown) Resizable iPad (DBA71CA5-6426-484B-8E9B-13FCB3B27DEB) (Shutdown)

Solo copie el GUID desde dentro de los paréntesis y ejecute xcrun simctl erase

por ejemplo,

xcrun simctl erase 5B78FC0D-0034-4134-8B1F-19FD0EC9D581

borraría el dispositivo iOS 7.0, iPhone 5


Escribí un script que restablecerá el contenido y la configuración de todas las versiones y dispositivos para iOS Simulator. Toma los nombres de los dispositivos y los números de versión del menú, por lo que incluirá todos los dispositivos nuevos o versiones de iOS para los que Apple lanza simuladores.

Es fácil de ejecutar manualmente o usar en un script de construcción. Sugiero agregarlo como una secuencia de comandos de ejecución previa a la ejecución antes de la compilación.

Se basa en gran medida en el guión de Stian anterior, pero no se queda obsoleto con las nuevas versiones de iOS, y elimina el cuadro de diálogo (mejor para las secuencias de comandos de compilación de automatización y desde la línea de comandos).

https://github.com/michaelpatzer/ResetAllSimulators



He encontrado esta herramienta muy útil llamada "SimulatorManager": http://tue-savvy.github.io Se restablecerán todos los simuladores por medio de un widget de barra de menú (no estoy seguro de que así se llame) pero además de eso le dará acceso rápido a todos sus datos de aplicación. Realmente ya no puedo vivir sin eso. ¡Difundir la palabra!


La solución de atajo de teclado ya no es relevante y lamentablemente la solución de @Cameron tampoco me funcionó (intenté depurarla sin suerte)

Esto es lo que funciona para mí:

#!/bin/bash # `menu_click`, by Jacob Rus, September 2006 # # Accepts a list of form: `{"Finder", "View", "Arrange By", "Date"}` # Execute the specified menu item. In this case, assuming the Finder # is the active application, arranging the frontmost folder by date. osascript <<SCRIPT on menu_click(mList) local appName, topMenu, r -- Validate our input if mList''s length < 3 then error "Menu list is not long enough" -- Set these variables for clarity and brevity later on set {appName, topMenu} to (items 1 through 2 of mList) set r to (items 3 through (mList''s length) of mList) -- This overly-long line calls the menu_recurse function with -- two arguments: r, and a reference to the top-level menu tell application "System Events" to my menu_click_recurse(r, ((process appName)''s ¬ (menu bar 1)''s (menu bar item topMenu)''s (menu topMenu))) end menu_click on menu_click_recurse(mList, parentObject) local f, r -- `f` = first item, `r` = rest of items set f to item 1 of mList if mList''s length > 1 then set r to (items 2 through (mList''s length) of mList) -- either actually click the menu item, or recurse again tell application "System Events" if mList''s length is 1 then click parentObject''s menu item f else my menu_click_recurse(r, (parentObject''s (menu item f)''s (menu f))) end if end tell end menu_click_recurse application "iPhone Simulator" activate menu_click({"iPhone Simulator", "iOS Simulator", "Reset Content and Settings…"}) tell application "System Events" tell process "iPhone Simulator" tell window 1 click button "Reset" end tell end tell end tell SCRIPT


Lo comprobé con XCode 9. Para cerrar todos los simuladores activos, ejecuta:

xcrun simctl shutdown all

Para restablecer todos los simuladores, ejecuta:

xcrun simctl erase all

Puede filtrar qué simulador cerrar / restablecer de esta manera:

xcrun simctl shutdown F36B238F-3ED6-4E10-BB5A-0726151916FA xcrun simctl erase F36B238F-3ED6-4E10-BB5A-0726151916FA

Encuentre todos los simuladores accesibles (y su GUID) en su máquina de esta manera:

xcrun instruments -s

Para ejecutar cualquier simulador por GUID:

xcrun instruments -w F36B238F-3ED6-4E10-BB5A-0726151916FA -t Blank

Para instalar la aplicación en el simulador arrancado:

xcrun simctl install booted /path/to/your.app

Para eliminar la aplicación del simulador arrancado:

xcrun simctl uninstall booted /path/to/your.app

Para iniciar la aplicación en el simulador de arranque:

xcrun simctl launch booted "com.app.bundleIdentifier"

"com.app.bundleIdentifier" es su CFBundleIdentifier en Info.plist


Pensé que publicaría esto para cualquiera que se encuentre con la misma necesidad. Alguien en reddit me dio esta solución (que probé y funciona muy bien). Tenga en cuenta que esta vez necesita una elipsis después de "Configuración", no tres períodos (raro).

Este es un AppleScript que se puede invocar desde la línea de comando para reiniciar el simulador:

tell application "iPhone Simulator" activate end tell tell application "System Events" tell process "iPhone Simulator" tell menu bar 1 tell menu bar item "iOs Simulator" tell menu "iOs Simulator" click menu item "Reset Content and Settings…" end tell end tell end tell tell window 1 click button "Reset" end tell end tell end tell

Guardar como /path/to/script e invocar con:

osascript /path/to/script


Quiero agregar algo a la respuesta de Cameron Brown . Para asegurarme de que se restablece la versión correcta (por ejemplo, iPad, versión 6.1), inicio el simulador de iOS a través de ios-sim :

version=$(echo "$DESTINATION" | egrep -o "OS=[0-9.]{3}" | cut -d ''='' -f 2) simType=$(echo "$DESTINATION" | egrep -o "name=[a-zA-Z]*" | cut -d ''='' -f 2 | tr "[A-Z]" "[a-z]") IOS_SIM_BIN=$(which ios-sim) if [ -z $IOS_SIM_BIN ] then echo "ios-sim not installed, please use ''sudo npm install ios-sim -g''" fi echo "Resetting Simulator /"$simType/", version /"$version/"" $IOS_SIM_BIN start --family $simType --sdk $version --timeout 1 osascript /path/to/reset_simulator.applescript

$DESTINATION puede ser, por ejemplo, "OS=7.0,name=iPad" .

Para que funcione correctamente, adapté un reset_simulator.applescript un poco y eliminé la parte de activación:

tell application "iPhone Simulator" activate end tell


Sobre la base de la mayoría de las respuestas anteriores, estoy usando Keyboard Maestro e hice una pequeña macro para reiniciar el simulador en ejecución y reiniciarlo. Vuelve a centrar la atención en Xcode después de restablecer y reiniciar, por lo que puedo presionar Command+R nuevamente para volver a ejecutar la aplicación, lo que me parece muy conveniente.

El contenido del script de ruby ​​es:

#!/usr/bin/env ruby list = `xcrun simctl list`.split("/n") list.each do |line| if line =~ //(Booted/)$/ device = line.match(/([^(]*)/s+/(([^)]*)/)/s+/(([^)]*)/).*/)[1] uuid = line.match(/([^(]*)/s+/(([^)]*)/)/s+/(([^)]*)/).*/)[2] status = line.match(/([^(]*)/s+/(([^)]*)/)/s+/(([^)]*)/).*/)[3] puts uuid break end end


Usamos la siguiente secuencia de comandos python para restablecer el simulador en nuestro servidor de compilación.

#!/usr/bin/env python import subprocess import re import os def uninstall_app(): print ''Running %s'' % __file__ # Get (maybe read from argv) your bundle identifier e.g. com.mysite.app_name try: bundle_identifier = ''$'' + os.environ[''BUNDLE_IDENTIFIER''] except KeyError, e: print ''Environment variable %s not found. '' % e print ''Environment: '', os.environ exit(1) print ''Uninstalling app with Bundle identifier: '', bundle_identifier # We call xcrun, and strip the device GUIDs from the output process = subprocess.Popen([''xcrun'', ''simctl'', ''list''], stdout=subprocess.PIPE) # Read first line line = process.stdout.readline() while True: # Assume first match inside parenthesis is what we want m = re.search(''/((.*?)/)'', line) if not (m is None): # The regex found something, # group(1) will throw away the surrounding parenthesis device_GUID = m.group(1) # Brutely call uninstall on all listed devices. We know some of these will fail and output an error, but, well.. subprocess.call([''xcrun'', ''simctl'', ''uninstall'', device_GUID, bundle_identifier]) # Read next line line = process.stdout.readline() # Stop condition if line == '''': break if __name__ == ''__main__'': uninstall_app()

Supone que el identificador del paquete de su aplicación está configurado como una variable de entorno, por ejemplo

export BUNDLE_IDENTIFIER=com.example.app_name

tal vez quieras pasar el identificador del paquete de otra manera.


los nombres de destino y el nombre de la aplicación del simulador parecen haber cambiado un poco a xCode6 / iOS8. Aquí está una versión actualizada del osascript de Cameron Brown para xCode6 / iOS8:

tell application "iPhone Simulator" activate end tell tell application "System Events" tell process "iPhone Simulator" tell menu bar 1 tell menu bar item "iOs Simulator" tell menu "iOs Simulator" click menu item "Reset Content and Settings…" end tell end tell end tell tell window 1 click button "Reset" end tell end tell end tell


sencillo :

xcrun simctl erase all

mejora sugerida por @txulu, simplemente mata el simulador antes de ejecutar la limpieza:

killall "Simulator" 2> /dev/null; xcrun simctl erase all