Xcode 6 - कमांड लाइन से सिम्युलेटर लॉन्च करें


102

मैं कमांड लाइन से iPhone सिम्युलेटर लॉन्च करना चाहता हूं।

अब तक मैं नीचे दिए गए आदेश का उपयोग कर रहा हूं

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone सिम्युलेटर -SimulateDevice

-SimulateDevice का उपयोग किसी विशिष्ट डिवाइस प्रकार को लॉन्च करने के लिए किया जाता है

अब Xcode 6 के साथ पथ और ऐप को बदल दिया गया है

/Applications/Xcode.app/Contents/Developer/Applications/iOS Simulator.app/Contents/MacOS/iOS सिम्युलेटर

लेकिन दुख की बात है -SimulateDevice विकल्प अब काम नहीं कर रहा है। मैं सिम्युलेटर लॉन्च कर सकता हूं, लेकिन आपके पास यह निर्दिष्ट करने का विकल्प नहीं है कि किसे लॉन्च किया जाए

किसी को भी Xcode 6 के साथ इसके लिए कोई विकल्प मिला?

जवाबों:


210

मुझे जो चाहिए था, उसे हासिल करने का एक रास्ता मिल गया।

Apple ने Xcode 6 के साथ एक दिलचस्प टूल पेश किया है!

simctl

simclt आपको चल रहे सिम्युलेटर को नियंत्रित करने की अनुमति देता है।

xcrun simctlउपलब्ध उप-क्षेत्र की सूची प्राप्त करने के लिए चलाएं । नए विकल्पों के बहुत सारे के साथ खेलने के लिए।

अब मैं जो चाहता था, उसे करने के लिए यहाँ सिम्युलेटर लॉन्च करने की आज्ञा है:

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

-w एक डिवाइस प्रकार प्रदान करने और उपलब्ध उपकरणों की सूची प्राप्त करने के लिए है।

बस इसे निष्पादित करें:

xcrun instruments -s

सिम्युलेटर को लॉन्च करने के बाद आप इसका उपयोग करके नियंत्रित कर सकते हैं simctl

अपना ऐप इंस्टॉल करने के लिए:

xcrun simctl install booted <app path>

एप्लिकेशन लॉन्च करने के लिए:

xcrun simctl launch booted <app identifier>

उम्मीद है की यह मदद करेगा।


8
<ऐप आइडेंटिफायर> आपकी ऐप बंडल आईडी है
ह्यूगो

ऐसा नहीं है कि मैंने देखा, कुछ ज्ञात मुद्दों के अलावा , जैसा कि चल रहा xcrun simctlहै कमांडों को सूचीबद्ध करेगा। मेरी राय में वे बहुत आत्म व्याख्यात्मक हैं।
daniellmb

1
मैं xcrun simctl boot <device id>इसके बजाय काम करने में सक्षम नहीं थाxcrun instruments -w...
CambridgeMike

किसी भी तरह से मैं मिलता रहता हूँ: simctl [23846: 459252] *** अनकैप्ड अपवाद 'NSInvalidArgumentException' अपवाद के कारण ऐप को समाप्त करना, कारण: '*** - [__ [NSPlaceholder ढीलें initWithObjects: forKeys: count:]: ऑब्जेक्ट से nil ऑब्जेक्ट सम्मिलित करने का प्रयास। [०] सिमक्ट्ल पर बूट किए गए
पूजा शाह २ '

2
आपको वास्तविक डिवाइस UDID या नाम निर्दिष्ट करना चाहिए बजाय इसके bootedकि bootedबस मनमाने ढंग से सिम्युलेटर पर बूट किए गए उपकरणों में से एक को चुनना होगा।
devios1

63

Xcode 6 के साथ, यदि आप iOS सिमुलेटर को लॉन्च करना चाहते हैं, तो इसे लॉन्च करने के लिए एक विशिष्ट डिवाइस बूट करें। आप इसे कमांड कमांड से चला सकते हैं:

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

जहाँ आप उस डिवाइस के यूडीआईडी ​​का पता लगा सकते हैं जिसे आप बूट करना चाहते हैं:

xcrun simctl list

Xcode 7 के साथ, एप्लिकेशन का नाम Simulator.app रखा गया था, इसलिए आपको निम्न अपडेट करना चाहिए:

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


6.2 बीटा में, वह कमांड अब काम नहीं करता है। उदाहरण के लिए, आईफोन 5 एस सिम्युलेटर (इसकी आईडी को देखते हुए) लॉन्च करने के बजाय, मुझे आईपैड एयर सिम्युलेटर मिलता है।
माइकल टेपर

हम्म, हमारे पास मज़बूती से 3 विभिन्न मशीनों पर काम नहीं कर रहा है। किसी भी अन्य जानकारी मैं समस्या निवारण में मदद करने के लिए आपूर्ति कर सकते हैं?
माइकल टेपर

मुझे पता चल गया है कि क्या हो रहा है। हमने Xcode 6.2 बीटा इंस्टॉल किया, लेकिन इसे डिफ़ॉल्ट Xcode नहीं बनाया। तो, /usr/bin/xcrun simctl listनियमित Xcode के लिए उपलब्ध सिमुलेटरों को सूचीबद्ध करता है। हालांकि, open -a "iOS Simulator"6.2 बीटा सिम्युलेटर लॉन्च करता है, जो बीटा सिम्युलेटर से डिवाइस आईडी की उम्मीद कर रहा है। मैं किस सिम्युलेटर को लॉन्च कर सकता हूं (नियमित बनाम बीटा) कैसे निर्दिष्ट कर सकता हूं?
माइकल टेपर

1
खुला /path/to/Xcode.app/Contents/Developer/Applications/iOS \ Simulator.app
जेरेमी हडलस्टन सिकोइया

2
@chrisco कोई प्रलेखन नहीं है। आप के माध्यम से चूक को जांच defaults read com.apple.iphonesimulatorसकते हैं और कमांड लाइन पर उनमें से किसी को भी ओवरराइड कर सकते हैं। Simulator.app उपकरणों की विशिष्ट पहचान करने के लिए केवल UDID का उपयोग करता है। आप नाम का उपयोग नहीं कर सकते।
जेरेमी हडल्टन सीक्विया

17

Xcode 7 के लिए:

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

अपने सिम्युलेटर udid से प्राप्त करें xcrun simctl list


12

उपलब्ध उपकरणों की सूची प्राप्त करने के लिए सूची उपकरणों उपकमांड का उपयोग करके एक विशिष्ट डिवाइस के साथ एक सिम्युलेटर लॉन्च करने के लिए I Im को बूट किया जाता है

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

यह कमांड अपने यूडीआईडी ​​और स्टेटस के साथ उपलब्ध उपकरणों की एक सूची तैयार करेगा

फिर मैं -CurrentDeviceUDID विकल्प के साथ एक उपकरण निर्दिष्ट करने वाला सिम्युलेटर ऐप लॉन्च करता हूं

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

नोट: सूची से एक वैध यूडीआईडी ​​के साथ बदलें।

उदाहरण के लिए, यदि हम आईपैड (% जनरेशन बूटेड) के साथ सिम्युलेटर लॉन्च करना चाहते हैं:

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

UPDATE 23/05/2018

Xcode 9.3 के साथ CurrentDevice UDID विकल्प मेरे लिए काम नहीं कर रहा है, वर्कअराउंड के रूप में, मुझे इसे खोलने से पहले सिम्युलेटर में डिवाइस को बूट करने के लिए simctl का उपयोग करना होगा।

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

आप simctl का उपयोग कर सिम बना सकते हैं, मिटा सकते हैं, हटा सकते हैं, बूट कर सकते हैं, और अपग्रेड कर सकते हैं।

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

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

मान्य डिवाइस प्रकारों और रनटाइम की सूची प्राप्त करने के लिए

xcrun simctl list devicetypes

xcrun simctl list runtimes

10

एक सिम्युलेटर बूट करने के लिए:

xcrun simctl boot "iPhone X"

यह एक हेडलेस मोड के रूप में बूट होगा। सिम्युलेटर को दिखाई देने के लिए:

open -a Simulator

xcrun simctl bootसे सरल है xcrun instruments -winstrumentsपूर्ण डिवाइस नाम की आवश्यकता है।


8

आप -w ध्वज के साथ हार्डवेयर और iOS संस्करण निर्दिष्ट कर सकते हैं। प्रारूप है

instruments -w "simulator-version"

उदाहरण के लिए:

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

instruments -w help कमांड का उपयोग करके आपको उपलब्ध हार्डवेअर-आईओएस संयोजन मिलेंगे ।


2
instruments -s devicesउपकरणों की एक सूची प्राप्त करने के लिए उपयोग करें । हालाँकि, आपके पास डिवाइस का नाम होने के बाद, बस कॉल करने instruments -w <device>से एक त्रुटि उत्पन्न होगी क्योंकि उपकरण आपके ड्राइव के रूट पर एक ट्रेस लिखने का प्रयास करता है। आप ट्रेस के लिए एक पथ निर्दिष्ट करना चाह सकते हैं जिसे वह सफलतापूर्वक लिख देगा।
माइकल टेपर

@ माइकलपर की टिप्पणी पर विस्तार से जानने के -Dलिए, .trace दस्तावेज़ों के लिए आउटपुट निर्देशिका निर्दिष्ट करने के लिए उपयोग करें।
devios1

3

Xcode 9.4.1 में सत्यापित

वास्तव में नीस प्रारूप में डिवाइस सूची: ~/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

फिर आप अपने सिम्युलेटर ऐप को चलाना (खोलना) करना चाहते हैं और सुनिश्चित करें कि ऐप का एक नया उदाहरण लॉन्च किया गया है।

एप्लिकेशन यहाँ है: /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

और आपके द्वारा उपयोग किया जाने वाला प्रारूप इस प्रकार है:

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

इसलिए, यदि मैं ऊपर दिए गए सिम्युलेटर को लॉन्च करना चाहता था, तो मैं यह करूँगा।

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

बहुत गरम! मैंने अभी इसका परीक्षण किया है और यह मैक ओएस 10.11.6 पर काम करता है। अब अगली ट्रिक सिम्युलेटर को हमारे इंस्टॉल किए गए ऐप को खोलने के लिए कह रही है। मैं अभी वहाँ नहीं हूँ। उम्मीद है की यह मदद करेगा। इसकी विस्तृत व्याख्या के लिए https://stackoverflow.com/users/726106/jeremy-huddleston-fteroia को धन्यवाद ।


"ऐप के नए उदाहरण" जैसी कोई चीज नहीं है। Macintosh पर, एक एप्लिकेशन के पास लॉग-इन उपयोगकर्ता के अनुसार एक उदाहरण है। यह एकल-आवृत्ति ऐप, जिसे एकल प्रक्रिया के रूप में होस्ट किया गया है - स्वयं कई "दस्तावेजों" (इस मामले में - सिमुलेटर) की मेजबानी कर सकता है।
मोति श्नोर

1

यह आदेश चलाएँ। परिवर्तन के बाद ऐप को फिर से शुरू किया जाएगा। इसे फिर से बनाने की जरूरत नहीं है।

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

डेविसेटाइपिड सूची के लिए:

ios-sim showdevicetypes

इसके लिए iOS-सिम (कूबड़ वाला नोड सहित) स्थापित किया जाना चाहिए, और यह देशी कमांड लाइन 'स्क्रब सिमक्टल' की तुलना में दुखद रूप से सीमित है।
मोतिन शोर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.