Xcode 6 - Simülatörü komut satırından başlat


103

İPhone simülatörünü komut satırından başlatmak istiyorum.

şimdiye kadar aşağıdaki komutu kullanıyordum

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

-SimulateDevice, belirli bir cihaz türünü başlatmak için kullanılır

Şimdi Xcode 6 ile yol ve uygulama olarak değiştirildi

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

ama ne yazık ki -SimulateDevice seçeneği şu anda çalışmıyor. Simülatörü başlatabilirim, ancak hangisinin başlatılacağını belirleme seçeneğim yok

Xcode 6 ile bunun için herhangi bir alternatif bulan var mı?

Yanıtlar:


210

İstediğimi elde etmenin bir yolunu buldum.

Apple, Xcode 6 ile ilginç bir araç tanıttı!

simctl

simclt, çalışan simülatörü kontrol etmenizi sağlar.

xcrun simctlmevcut alt komutların listesini almak için çalıştırın . Oynamak için birçok yeni seçenek.

Şimdi istediğimi yapmak için simülatörü başlatma komutu:

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

-w, bir cihaz türü sağlamak ve mevcut cihazların listesini almaktır.

Sadece şunu yürütün:

xcrun instruments -s

Simülatörü başlattıktan sonra şu şekilde kontrol edebilirsiniz: simctl

Uygulamanızı yüklemek için:

xcrun simctl install booted <app path>

Uygulamayı başlatmak için:

xcrun simctl launch booted <app identifier>

Bu yardımcı olur umarım.


8
<uygulama tanımlayıcı> uygulama paketi kimliğinizdir
Hugo

Gördüğümden değil, bazı bilinen sorunlar dışında , belirtildiği gibi çalıştırma xcrun simctlkomutları listeleyecek. Bana göre oldukça açıklayıcılar.
daniellmb

1
Onun xcrun simctl boot <device id>yerinexcrun instruments -w...
CambridgeMike

bir şekilde şunu almaya devam ediyorum: simctl [23846: 459252] *** Yakalanmamış istisna 'NSInvalidArgumentException' nedeniyle uygulama sonlandırılıyor, neden: '*** - [__ NSPlaceholderDictionary initWithObjects: forKeys: count:]: nesnelerden sıfır nesne eklemeye çalış [0] simctl yüklemesinde başlatıldı
Pooja Shah

2
Sen gerçek bir cihaz UDID belirtin veya isim yerine gerektiği bootedkadar bootedsadece keyfi simülatörde başlattım cihazlardan birini seçecektir.
devios1

63

Xcode 6 ile, iOS Simulator.app'nin başlatıldığında belirli bir cihazı açmasını istiyorsanız, bunu komut satırından çalıştırabilirsiniz:

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

önyüklemek istediğiniz cihazın UDID'sini nerede bulabilirsiniz:

xcrun simctl list

Xcode 7 ile uygulama Simulator.app olarak yeniden adlandırıldı, bu nedenle yukarıdakileri şu şekilde güncellemelisiniz:

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


6.2 beta sürümünde, bu komut artık çalışmıyor. Örneğin, iPhone 5s simülatörünü başlatmak yerine (kimliği verilir), iPad Air simülatörünü alıyorum.
Michael Teper

Hmm, 3 farklı makinede güvenilir bir şekilde çalışmıyor. Sorun gidermeye yardımcı olmak için sağlayabileceğim başka bir bilgi var mı?
Michael Teper

Neler olduğunu anladım. Xcode 6.2 beta'yı yükledik, ancak onu varsayılan Xcode yapmadık. Bu nedenle, /usr/bin/xcrun simctl listnormal Xcode için kullanılabilen simülatörleri listeler. Ancak open -a "iOS Simulator"cihaz kimliklerini beta simülatöründen bekleyen 6.2 beta simülatörünü başlattı. Hangi simülatörü başlatacağımı nasıl belirleyebilirim (normal veya beta)?
Michael Teper

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

2
@chrisco Belge yok. Varsayılanları aracılığıyla kontrol defaults read com.apple.iphonesimulatoredebilir ve komut satırındakilerden herhangi birini geçersiz kılabilirsiniz. Simulator.app, aygıtları benzersiz şekilde tanımlamak için yalnızca UDID'leri kullanır. İsmi kullanamazsınız.
Jeremy Huddleston Sequoia

17

Xcode 7 için:

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

Simülatör udid'lerinizi buradan alın xcrun simctl list


13

Belirli bir cihaz başlatılmış bir simülatörü başlatmak için, mevcut tüm cihazların listesini almak için list devices subcommand kullanıyorum

$ 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)

bu komut, UDID'leri ve durumlarıyla birlikte mevcut cihazların bir listesini çıkaracaktır

Ardından -CurrentDeviceUDID seçeneği ile bir cihaz belirterek simülatör uygulamasını başlatıyorum

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

NOT: listeden geçerli bir UDID ile değiştirin.

Örneğin, simülatörü bir Ipad ile başlatmak istiyorsak (% generation booted):

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

GÜNCELLEME 23/05/2018

Xcode 9.3 ile CurrentDevice UDID seçeneği benim için çalışmıyor, geçici çözüm olarak, cihazı açmadan önce simülatörde başlatmak için simctl kullanmam gerekiyor.

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

Simctl kullanarak simülatörleri oluşturabilir, silebilir, silebilir, önyükleyebilir, kapatabilir ve yükseltebilirsiniz.

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

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

Geçerli cihaz türleri ve çalışma zamanlarının listesini almak için

xcrun simctl list devicetypes

xcrun simctl list runtimes

10

Bir simülatörü başlatmak için:

xcrun simctl boot "iPhone X"

Başsız mod olarak açılacaktır. Simülatörü görünür kılmak için:

open -a Simulator

xcrun simctl bootdaha basittir xcrun instruments -w. instrumentstam cihaz adını gerektirir.


8

Donanım ve iOS sürümünü -w işaretiyle belirtebilirsiniz. Biçim

instruments -w "simulator-version"

Örneğin:

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

Mevcut hardvare-iOS kombinasyonlarını instruments -w help komutu kullanarak alacaksınız .


2
instruments -s devicesCihazların bir listesini almak için kullanın . Bununla birlikte, aygıt adını aldığınızda, aygıtlar instruments -w <device>sürücünüzün kök dizinine bir iz yazmaya çalışırken , basitçe aramak büyük olasılıkla bir hata verecektir. Başarıyla yazacağı izleme için bir yol belirtmek isteyebilirsiniz.
Michael Teper

@ MichaelTeper'in açıklamasını detaylandırmak -Diçin, .trace belgeleri için bir çıktı dizini belirtmek için kullanın .
devios1

3

Xcode 9.4.1'de doğrulandı

GERÇEKTEN GÜZEL BİR BİÇİMDE cihaz listesi: ~/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

Ardından Simulator uygulamanızı çalıştırmak (açmak) ve uygulamanın yeni bir örneğinin başlatıldığından emin olmak istiyorsunuz.

Uygulama burada: /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

Ve kullanacağınız format şu şekildedir:

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

Yani, Simülatörü yukarıda başlatmak isteseydim, bunu yapardım.

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

Lanet olsun! Sadece test ettim ve Mac OS 10.11.6'da çalışıyor. Şimdi bir sonraki numara Simülatör'e yüklü uygulamamızı açmasını söylemektir. Henüz orada değilim. Bu yardımcı olur umarım. Ayrıntılı açıklaması için https://stackoverflow.com/users/726106/jeremy-huddleston-sequoia'ya teşekkürler .


"Uygulamanın yeni örneği" diye bir şey yoktur. Macintosh'ta, bir uygulamanın oturum açmış her kullanıcı için yalnızca bir örneği vardır. Tek bir işlem olarak barındırılan bu tek örnekli uygulama kendi başına birçok "belgeyi" barındırabilir (bu durumda simülatörler).
Motti Shneor

1

Bu komutu çalıştırın. Uygulama yeniden başlatılacak ve ardından değişiklikler yapılacaktır. Yeniden inşa etmeye gerek yok.

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

Cihaz türü kimliği listesi için:

ios-sim showdevicetypes

Bunun için iOS-sim (muazzam Düğüm dahil) yüklenmelidir ve yerel komut satırı 'scrub simctl' ile karşılaştırıldığında ne yazık ki sınırlıdır.
Motti Shneor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.