Xcode 6 - Uruchom symulator z wiersza poleceń


103

Chcę uruchomić symulator iPhone'a z wiersza poleceń.

do tej pory korzystałem z poniższego polecenia

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator -SimulateDevice

-SimulateDevice służy do uruchamiania określonego typu urządzenia

Teraz z Xcode 6 ścieżka i aplikacja zostały zmienione na

/Applications/Xcode.app/Contents/Developer/Applications/iOS Simulator.app/Contents/MacOS/iOS Simulator

ale niestety opcja -SimulateDevice teraz nie działa. Mogę uruchomić symulator, ale nie mam opcji określania, który mam uruchomić

Czy ktoś znalazł alternatywę dla tego z Xcode 6?

Odpowiedzi:


210

Znalazłem sposób, aby osiągnąć to, czego chciałem.

Apple wprowadziło ciekawe narzędzie z Xcode 6!

simctl

simclt umożliwia sterowanie działającym symulatorem.

uruchom, xcrun simctlaby uzyskać listę dostępnych podkomend. Wiele nowych opcji do zabawy.

Teraz, aby zrobić to, co chciałem, oto polecenie uruchomienia symulatora:

xcrun instruments -w "iPhone 5 (8.0 Simulator)"

-w służy do podania typu urządzenia i pobrania listy dostępnych urządzeń.

Po prostu wykonaj to:

xcrun instruments -s

Po uruchomieniu symulatora można nim sterować za pomocą simctl

Aby zainstalować aplikację:

xcrun simctl install booted <app path>

Aby uruchomić aplikację:

xcrun simctl launch booted <app identifier>

Mam nadzieję że to pomoże.


8
<identyfikator aplikacji> to identyfikator pakietu aplikacji
— Hugo,

Nie widziałem, poza niektórymi znanymi problemami , jak wspomniano, uruchomienie xcrun simctlwyświetli listę poleceń. Moim zdaniem są one dość oczywiste.
— daniellmb

1
Nie byłem w stanie zmusić go do pracy, używając xcrun simctl boot <device id>zamiastxcrun instruments -w...
— CambridgeMike,

w jakiś sposób ciągle otrzymuję: simctl [23846: 459252] *** Zamykanie aplikacji z powodu nieprzechwyconego wyjątku „NSInvalidArgumentException”, powód: „*** - [__ NSPlaceholderDictionary initWithObjects: forKeys: count:]: próba wstawienia zerowego obiektu z obiektów [0] on simctl install booted
— Pooja Shah

2
Należy podać rzeczywiste urządzenie UDID lub nazwa raczej niż bootedjako bootedpo prostu dowolnie wybrać jedną z obutych urządzeń na symulatorze.
— devios1

63

W przypadku Xcode 6, jeśli chcesz, aby aplikacja iOS Simulator.app uruchamiała określone urządzenie po uruchomieniu, możesz uruchomić to z wiersza poleceń:

open -a "iOS Simulator" --args -CurrentDeviceUDID <DEVICE UDID>

gdzie możesz znaleźć UDID urządzenia, z którego chcesz dokonać rozruchu:

xcrun simctl list

W Xcode 7 nazwa aplikacji została przemianowana na Simulator.app, więc należy odpowiednio zaktualizować powyższe do:

open -a Simulator --args -CurrentDeviceUDID <DEVICE UDID>


W wersji 6.2 beta to polecenie już nie działa. Na przykład zamiast odpalać symulator iPhone'a 5s (podając jego identyfikator), otrzymuję symulator iPada Air.
— Michael Teper,

Hmm, mamy to niezawodnie nie działa na 3 różnych maszynach. Czy mogę podać inne informacje, które pomogą rozwiązać problem?
— Michael Teper

Zrozumiałem, co się dzieje. Zainstalowaliśmy Xcode 6.2 beta, ale nie ustawiliśmy go jako domyślnego Xcode. Tak więc /usr/bin/xcrun simctl listwyświetla listę symulatorów dostępnych dla zwykłego Xcode. Jednak open -a "iOS Simulator"uruchamia symulator wersji beta 6.2, który oczekuje identyfikatorów urządzeń z symulatora wersji beta. Jak mogę określić, który symulator mam uruchomić (zwykły czy beta)?
— Michael Teper

1
open /path/to/Xcode.app/Contents/Developer/Applications/iOS \ Simulator.app
— Jeremy Huddleston Sequoia

2
@chrisco Brak dokumentacji. Możesz sprawdzić ustawienia domyślne za pomocą defaults read com.apple.iphonesimulatori zastąpić dowolne z nich w wierszu poleceń. Simulator.app używa tylko identyfikatorów UDID do jednoznacznej identyfikacji urządzeń. Nie możesz użyć nazwy.
— Jeremy Huddleston Sequoia

17

Dla xcode 7:

open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app --args -CurrentDeviceUDID <DeviceUDID>

Pobierz swój symulator udid's od xcrun simctl list


13

Aby uruchomić symulator z uruchomionym określonym urządzeniem Używam podkomendy Lista urządzeń, aby uzyskać listę wszystkich dostępnych urządzeń

$ xcrun simctl list devices
== Devices ==
-- iOS 11.2 --
iPhone 5s (E3B6EA43-C805-49C2-9502-A44A465D8DF2) (Shutdown)
iPhone 6 (801E9E11-CA86-473A-9879-4B0742B827FB) (Shutdown)
iPhone 6 Plus (24013349-1A6F-489C-9A68-ABB00EBB4BBF) (Shutdown)
iPhone 6s (1A594D75-146C-4BEA-A250-1FADE7886114) (Shutdown)
iPhone 6s Plus (C2730FA0-11CB-49C9-A087-CB3C1BF1CC3D) (Shutdown)
iPhone 7 (F58B3749-3276-49E5-81C8-EBA1AEA7B242) (Shutdown)
iPhone 7 Plus (98167D8C-8F27-404C-AB02-588D9AAFD071) (Shutdown)
iPhone 8 (96322368-F763-4E0A-8576-ADE9F678211F) (Shutdown)
iPhone 8 Plus (E916D1EE-B67B-4C01-B3F5-C5C80CC4CDF8) (Shutdown)
iPhone SE (ABEFEDDF-7A7C-4B94-9E91-E065170FA47F) (Shutdown)
iPhone X (84DAB7AB-3CA2-4F5B-8C4E-A5B54CA15C31) (Shutdown)
iPad Air (DCD8CF4B-2C9F-4BA1-952A-ACB9CAD0A84D) (Shutdown)
iPad Air 2 (A47C9A05-233F-450F-9A39-318258E9ADEA) (Shutdown)
iPad (5th generation) (819C058E-64AC-4E73-8F41-2C0F919F8B56) (Booted)

to polecenie wyświetli listę dostępnych urządzeń wraz z identyfikatorami UDID i statusami

Następnie uruchamiam aplikację symulatora, określając urządzenie z opcją -CurrentDeviceUDID

/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator -CurrentDeviceUDID <DEVICE-UDID>

UWAGA: zastąp poprawnym UDID z listy.

Na przykład, jeśli chcemy uruchomić symulator z iPadem (uruchomiona% generacji):

/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator -CurrentDeviceUDID 84DAB7AB-3CA2-4F5B-8C4E-A5B54CA15C31

AKTUALIZACJA 23.05.2018

Z Xcode 9.3 CurrentDevice UDID opcja nie działa dla mnie, jako obejście, muszę użyć simctl do uruchomienia urządzenia w symulatorze przed jego otwarciem.

xcrun simctl boot 2BF01FC0-7E29-4AF1-ADD1-886DF129A9A9
open -a Simulator 

Możesz tworzyć, usuwać, usuwać, uruchamiać, wyłączać i aktualizować symulatory za pomocą simctl.

$ xcrun simctl create
Usage: simctl create <name> <device type id> <runtime id>

$ xcrun simctl delete
Usage: simctl delete <device> [... <device n>] | unavailable

Aby uzyskać listę prawidłowych typów urządzeń i środowisk wykonawczych

xcrun simctl list devicetypes

xcrun simctl list runtimes

10

Aby uruchomić symulator:

xcrun simctl boot "iPhone X"

Uruchomi się w trybie bezgłowym. Aby symulator był widoczny:

open -a Simulator

xcrun simctl bootjest prostsze niż xcrun instruments -w. instrumentswymaga pełnej nazwy urządzenia.


8

Możesz określić wersję sprzętu i iOS za pomocą opcji -w. Format to

instruments -w "simulator-version"

Na przykład:

instruments -w "iPhone Retina (3.5-inch) - Simulator - iOS 7.1".

Otrzymasz dostępne kombinacje hardvare-iOS za pomocą instruments -w help polecenia.


2
Użyj, instruments -s devicesaby uzyskać listę urządzeń. Jednak po uzyskaniu nazwy urządzenia samo wywołanie instruments -w <device>prawdopodobnie spowoduje błąd, ponieważ instrumenty będą próbowały zapisać ślad w katalogu głównym dysku. Możesz chcieć określić ścieżkę do śledzenia, do którego pomyślnie zapisze.
— Michael Teper

Aby rozwinąć komentarz @ MichaelTeper, użyj -Ddo określenia katalogu wyjściowego dla dokumentów .trace.
— devios1

3

Zweryfikowano w Xcode 9.4.1

Lista urządzeń w NAPRAWDĘ ŁADNYM FORMACIE: ~/Library/Developer/CoreSimulator/Devices/device_set.plist

Root
    DefaultDevices
        com.apple.CoreSimulator.SimRuntime.iOS-8-4
             com.apple.CoreSimulator.SimDeviceType.iPad-Retina : AB335FAF-E3E3-4AE9-A0AF-D1C6AEB5FBD4

Następnie chcesz uruchomić (otworzyć) aplikację Symulator i upewnić się, że została uruchomiona nowa instancja aplikacji.

Aplikacja jest tutaj: /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

A format, którego użyjesz, jest taki:

open -n -a <SimulatorPath> --args -CurrentDeviceUDID <SimDeviceTypeUDID>

Tak więc, gdybym chciał uruchomić powyższy Symulator, zrobiłbym to.

open -n -a /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app --args -CurrentDeviceUDID AB335FAF-E3E3-4AE9-A0AF-D1C6AEB5FBD4

Jasna cholera! Właśnie to przetestowałem i działa na Mac OS 10.11.6. Teraz kolejną sztuczką jest nakazanie symulatorowi otwarcia naszej zainstalowanej aplikacji. Jeszcze mnie tam nie ma. Mam nadzieję że to pomoże. Podziękowania dla https://stackoverflow.com/users/726106/jeremy-huddleston-sequoia za szczegółowe wyjaśnienie.


Nie ma czegoś takiego jak „nowa instancja aplikacji”. W systemie Macintosh aplikacja ma tylko jedną instancję na zalogowanego użytkownika. Ta aplikacja o pojedynczej instancji, hostowana jako pojedynczy proces - może sama obsługiwać wiele „dokumentów” (w tym przypadku - symulatorów).
— Motti Shneor

1

Uruchom to polecenie. Aplikacja zostanie ponownie uruchomiona, po czym nastąpią zmiany. Nie trzeba go ponownie odbudowywać.

ios-sim "launch" "/Library/WebServer/Documents/testapp/build/iphone/build/Debug-iphonesimulator/test.app" "--devicetypeid" "iPad-2" "--exit";

Dla listy devicetypeid:

ios-sim showdevicetypes

W tym celu należy zainstalować iOS-sim (w tym gigantyczny węzeł) i jest niestety ograniczony w porównaniu z natywnym wierszem poleceń „scrub simctl”.
— Motti Shneor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.