Xcode 6 - Luncurkan simulator dari baris perintah

102

Saya ingin meluncurkan simulator iPhone dari baris perintah.

sampai sekarang saya telah menggunakan perintah di bawah ini

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

-SimulateDevice digunakan untuk meluncurkan jenis perangkat tertentu

Sekarang dengan Xcode 6 jalur dan aplikasi telah diubah menjadi

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

tapi sayangnya opsi -SimulateDevice tidak berfungsi sekarang. Saya dapat meluncurkan simulator, tetapi tidak memiliki opsi untuk menentukan mana yang akan diluncurkan

Adakah yang menemukan alternatif untuk ini dengan Xcode 6?

Balaji Sekar
sumber

Jawaban:

210

Menemukan cara untuk mencapai apa yang saya inginkan.

Apple telah memperkenalkan alat yang menarik dengan Xcode 6!

simctl

simclt memungkinkan Anda untuk mengontrol simulator yang sedang berjalan.

jalankan xcrun simctluntuk mendapatkan daftar subperintah yang tersedia. Banyak opsi baru untuk dimainkan.

Sekarang untuk melakukan apa yang saya inginkan, berikut adalah perintah untuk meluncurkan simulator:

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

-w adalah untuk memberikan tipe perangkat dan untuk mendapatkan daftar perangkat yang tersedia.

Jalankan saja ini:

xcrun instruments -s

Setelah meluncurkan simulator, Anda dapat mengontrolnya menggunakan simctl

Untuk memasang aplikasi Anda:

xcrun simctl install booted <app path>

Untuk meluncurkan aplikasi:

xcrun simctl launch booted <app identifier>

Semoga ini membantu.

Balaji Sekar
sumber
8
<pengenal aplikasi> adalah id paket aplikasi Anda
Hugo
Bukan yang saya lihat, selain beberapa masalah yang diketahui , seperti yang disebutkan menjalankan xcrun simctlakan mencantumkan perintah. Menurut pendapat saya, mereka cukup jelas.
daniellmb
1
Saya tidak bisa membuatnya bekerja menggunakan xcrun simctl boot <device id> bukannyaxcrun instruments -w...
CambridgeMike
entah bagaimana saya terus mendapatkan: simctl [23846: 459252] *** Menghentikan aplikasi karena pengecualian yang tidak tertangkap 'NSInvalidArgumentException', alasan: '*** - [__ NSPlaceholderDictionary initWithObjects: forKeys: count:]: mencoba memasukkan objek nihil dari objek [0] pada simctl install boot
Pooja Shah
2
Anda harus menentukan UDID atau nama perangkat sebenarnya daripada bootedsebagaibooted sembarang memilih salah satu perangkat yang di-boot pada simulator.
devios1
63

Dengan Xcode 6, jika Anda ingin iOS Simulator.app mem-boot perangkat tertentu saat diluncurkan, Anda dapat menjalankan ini dari baris perintah:

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

di mana Anda dapat mengetahui UDID perangkat yang ingin Anda boot:

xcrun simctl list

Dengan Xcode 7, aplikasi berganti nama menjadi Simulator.app, jadi Anda harus memperbarui yang di atas sesuai dengan:

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

Jeremy Huddleston Sequoia
sumber
Dalam versi 6.2 beta, perintah itu tidak lagi berfungsi. Misalnya, alih-alih meluncurkan simulator iPhone 5s (diberikan ID-nya), saya mendapatkan simulator iPad Air.
Michael Teper
Hmm, kami yakin tidak berfungsi di 3 mesin berbeda. Ada info lain yang dapat saya berikan untuk membantu memecahkan masalah?
Michael Teper
Saya sudah tahu apa yang terjadi. Kami menginstal Xcode 6.2 beta, tetapi tidak menjadikannya Xcode default. Jadi, /usr/bin/xcrun simctl listdaftarkan simulator yang tersedia untuk Xcode biasa. Namun, open -a "iOS Simulator"meluncurkan simulator beta 6.2, yang mengharapkan ID perangkat dari simulator beta. Bagaimana cara menentukan simulator yang saya luncurkan (reguler vs. beta)?
Michael Teper
1
buka /path/to/Xcode.app/Contents/Developer/Applications/iOS \ Simulator.app
Jeremy Huddleston Sequoia
2
@chrisco Tidak ada dokumentasi. Anda dapat memeriksa default melalui defaults read com.apple.iphonesimulatordan dapat menimpa salah satu dari yang ada di baris perintah. Simulator.app hanya menggunakan UDID untuk mengidentifikasi perangkat secara unik. Anda tidak dapat menggunakan nama itu.
Jeremy Huddleston Sequoia
17

Untuk xcode 7:

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

Dapatkan simulator udid Anda dari xcrun simctl list

TinyTimZamboni
sumber
12

Untuk meluncurkan simulator dengan perangkat tertentu yang di-boot saya menggunakan subperintah perangkat daftar untuk mendapatkan daftar semua perangkat yang tersedia

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

perintah ini akan menampilkan daftar perangkat yang tersedia dengan UDID dan statusnya

Kemudian saya meluncurkan aplikasi simulator yang menentukan perangkat dengan opsi -CurrentDeviceUDID

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

CATATAN: ganti dengan UDID yang valid dari daftar.

Misalnya, jika kita ingin meluncurkan simulator dengan Ipad (% generasi yang di-boot):

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

UPDATE 23/05/2018

Dengan Xcode 9.3 opsi UDID Perangkat Saat Ini tidak berfungsi untuk saya, sebagai solusinya, saya harus menggunakan simctl untuk mem-boot perangkat di simulator sebelum membukanya.

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

Anda dapat membuat, menghapus, menghapus, mem-boot, mematikan, dan meningkatkan simulator menggunakan simctl.

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

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

Untuk mendapatkan daftar valid jenis perangkat dan runtimes

xcrun simctl list devicetypes

xcrun simctl list runtimes
Javier Rojano
sumber
10

Untuk mem-boot simulator:

xcrun simctl boot "iPhone X"

Ini akan boot sebagai mode tanpa kepala. Untuk membuat simulator terlihat:

open -a Simulator

xcrun simctl bootlebih sederhana dari xcrun instruments -w. instrumentsmembutuhkan nama perangkat lengkap.

Estevão Lucas
sumber
8

Anda dapat menentukan perangkat keras dan versi iOS dengan -w flag. Formatnya adalah

instruments -w "simulator-version"

Misalnya:

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

Anda akan mendapatkan kombinasi hardvare-iOS yang tersedia dengan menggunakan instruments -w help perintah.

Neenu
sumber
2
Gunakan instruments -s devicesuntuk mendapatkan daftar perangkat. Namun, setelah Anda memiliki nama perangkat, memanggil saja instruments -w <device>kemungkinan besar akan menghasilkan kesalahan karena instrumen mencoba menulis jejak ke root drive Anda. Anda mungkin ingin menentukan jalur untuk jejak yang akan berhasil ditulisi.
Michael Teper
Untuk menguraikan komentar @ MichaelTeper, gunakan -Duntuk menentukan direktori keluaran untuk dokumen .trace.
devios1
3

Diverifikasi di Xcode 9.4.1

Daftar perangkat dalam FORMAT BENAR-BENAR BAGUS: ~/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

Kemudian Anda ingin menjalankan (membuka) aplikasi Simulator Anda dan memastikan bahwa instance baru dari aplikasi tersebut diluncurkan.

Aplikasinya ada di sini: /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

Dan format yang Anda gunakan adalah seperti ini:

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

Jadi, jika saya ingin meluncurkan Simulator di atas, saya akan melakukan ini.

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

Sialan! Saya baru saja mengujinya dan berfungsi di Mac OS 10.11.6. Sekarang trik selanjutnya adalah memberi tahu Simulator untuk membuka aplikasi terinstal kami. Saya belum sampai di sana. Semoga ini membantu. Terima kasih kepada https://stackoverflow.com/users/726106/jeremy-huddleston-sequoia untuk penjelasan mendetailnya.

Alex Zavatone
sumber
Tidak ada yang namanya "aplikasi baru". Di Macintosh, sebuah aplikasi hanya memiliki satu contoh, per pengguna yang masuk. Aplikasi instance tunggal ini, dihosting sebagai proses tunggal - dapat dengan sendirinya menghosting banyak "dokumen" (dalam hal ini - simulator).
Motti Shneor
1

Jalankan perintah ini. Aplikasi akan dimulai ulang diikuti dengan perubahan. Tidak perlu membangunnya kembali.

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

Untuk daftar devicetypeid:

ios-sim showdevicetypes
Swapnil Mokashi
sumber
iOS-sim (termasuk Node humungous) harus diinstal untuk ini, dan sayangnya terbatas, dibandingkan dengan baris perintah asli 'scrub simctl'.
Motti Shneor