Saya sedang mengembangkan aplikasi seluler lintas platform menggunakan Cordova, dengan fokus utama pada iOS dalam tahap pengembangan.
Untuk proses pengembangan saya, akan ideal jika saya dapat memulai aplikasi Cordova saya langsung dari baris perintah dan memuatnya ke emulator yang ditentukan. Saya dapat melakukan ini dengan menjalankan yang berikut dari direktori root proyek:
$cordova run --debug --emulator iOS
Ini berfungsi dengan baik, dan menghasilkan simulator iOS yang menjalankan aplikasi saya di iPhone 4 Retina simulasi dengan iOS 7.0.3
Selain perangkat simulasi ini, saya juga ingin menguji (misalnya) iPad. Saya telah menginstal gambar emulasi ini, dan saya dapat memulai aplikasi saya di dalamnya secara manual di Xcode. Juga, perintah list-emulator-images
(terletak di project_dir/platforms/ios/cordova/lib
) memberikan keluaran berikut:
"iPhone Retina (3.5-inch)"
"iPhone Retina (4-inch)"
"iPhone Retina (4-inch 64-bit)"
"iPhone"
"iPad"
"iPad Retina"
Namun, masalahnya adalah: Saya tidak bisa menemukan cara untuk memulai emulator selain dari default (yang tampaknya adalah iPhone Retina (4-inch)
gambar emulasi). Keluaran yang relevan dari cordova help
memberikan informasi berikut:
run [--debug|--release]
[--device|--emulator|--target=FOO]
[PLATFORM] ............................ deploys app on specified platform devices / emulators
Saya sudah mencoba hal-hal seperti berikut ini:
cordova run --debug --emulator=iPad iOS
Dan banyak variasinya, tapi tidak berhasil. Setiap kali dimulai di emulator yang sama.
Dokumentasi untuk alat baris perintah tidak menawarkan informasi apa pun dalam hal ini, dan pencarian Google yang ekstensif juga gagal menemukan apa pun. Apakah saya melewatkan sesuatu yang sepele? Atau saya mencoba melakukan sesuatu yang aneh? Saya sangat berharap seseorang di sini memiliki pengalaman dengan ini, dan dapat memberikan jawaban.
Terima kasih banyak sebelumnya!
edit: lupa menyebutkan secara eksplisit; Saya melakukan semua ini di Mac. Seperti yang disebutkan sebelumnya, menjalankan aplikasi di emulator / simulator yang berbeda di Xcode berfungsi dengan baik.
"Error: Cannot read property 'name' of undefined"
ketika menentukan target dengan tanda kutip, saya hanya bisa membuatnya bekerja dengan menjalankannya seperti inicordova run ios --target=iPhone-6
. Semoga ini bisa menyelamatkan orang lain dari masalah!Seperti csantanapr Anda dapat menggunakan:
Namun, dalam hal ini proyek cordova (atau PhoneGap atau lainnya) akan diluncurkan pada simulator iPhone 4s dengan iOS versi 7.0.3 .
Jika Anda ingin meluncurkan proyek pada simulator yang sama, tetapi dengan versi lain iOS (7.1 atau 8.0, jika ada versi di sistem Anda)?
Tentu saja, Anda bisa melakukan seperti mengatakan cobberboy :
Tetapi Anda dapat meningkatkan
--target
opsirun
perintah cordova .Pertama-tama, Anda harus memastikan versi iOS target yang tersedia di sistem Anda.
Untuk itu gunakan jawaban cobberboy :
Maka Anda perlu membuka file
your_project_dir/platforms/ios/cordova/lib/run.js
dan menemukan baris kode seperti di bawah ini:Untuk digunakan
iPhone-4s, 7.1
(atau lainnya), tambahkan saja ke arrayvalidTargets
.Dan masuk
Anda
--target="iPhone-4s, 7.1"
akan valid.Dan fungsi
deployToSim
darirun.js
:konversikan
iPhone-4s, 7.1
ke argumen yang validcom.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
untukios-sim
.sumber
ionic run ios --target='iPhone-6, 9.0'
saat menggunakan Ionic Framework.validTargets
dan saya dapat menentukan platform lengkap, mis"--target="iPhone-6, 8.4""
. : . Akan sangat menyenangkan jika Cordova mendelegasikan validasi target keios-sim
.TL; DR
Anda dapat memulai emulator tertentu dan memilih versi ios Anda dengan langsung menggunakan ios-sim.
Detail
Ketika saya menjalankan ini:
dan melihat proses yang sedang berjalan, saya melihat ini (dalam satu baris):
Menyelidiki lebih jauh ke ios-sim , sepertinya ada beberapa opsi yang lebih spesifik, terutama:
Jadi saya melakukan seperti yang disarankan dan menjalankan ios-sim dengan argumen "showdevicetypes" dan mendapatkan ini:
sumber
Jangan sertakan nomor versi
sumber
Pada Xcode 8.3.2 ...
Utas lama, saya tahu, tetapi tampaknya, mungkin, jawabannya telah sedikit berubah. Petunjuk dari posting sebelumnya di utas ini membantu, tetapi begitu pula membaca dokumentasi yang disertakan dalam kode,
<cordova-project>/platforms/ios/cordova/lib/run.js
Jalankan
./platforms/ios/cordova/lib/list-emulator-images
untuk membuat daftar gambar emulator yang tersedia. Jangan menyertakan nomor versi di bagian akhir saat membuat panggilan cordova untuk dijalankan di emulator yang diinginkan.Lihat lebih banyak
sumber
cordova run ios --target=iPhone-6
Saya tidak dapat mengomentari jawaban di atas karena reputasi saya yang rendah, tetapi daftar target tersedia dari:
dibawah
Karena itu, saya tidak dapat membuat emulator retina ipad berfungsi ...
sumber
keluaran tercepat dari daftar perangkat:
$ instruments -s devices
Cukup gunakan nama perangkat tanpa versinya.
sumber
Menjalankan simulator iOS dengan permintaan web berdasarkan build untuk aplikasi cordova yang sudah dibuat. Jalankan permintaan ini dari browser membuka simulator di mac dengan iPhone 8Plus versi: http: // hostname: 3000 / cordova / build / [xxxx-buildnumber] / emulate? Target = iPhone-8-Plus
sumber
Simulator iphone dan ipad yang berbeda
cordova menjalankan ios --list
cordova meniru ios --target "iPhone-7"
sumber
@Birja jawaban sedang berfungsi sekarang tetapi perintah jalankan yang dia gunakan akhirnya masih salah jadi di sini jawaban yang benar:
Untuk mendaftar semua perangkat yang tersedia di simulator
cordova run ios --list
Ini akan menghasilkan sesuatu seperti ini:
cordova run ios --target "iPad-Pro, 12.2"
Gunakan target apapun dari atas. Untuk dijalankan di simulator.sumber