कॉर्डोवा: विशिष्ट आईओएस एमुलेटर छवि शुरू करें


120

मैं कॉर्डोवा का उपयोग करके एक क्रॉस-प्लेटफ़ॉर्म मोबाइल ऐप विकसित कर रहा हूं, मुख्य रूप से आईओएस पर विकास चरण में फोकस कर रहा हूं।

मेरी विकास प्रक्रिया के लिए यह आदर्श होगा यदि मैं अपने कॉर्डोवा ऐप को सीधे कमांड लाइन से शुरू कर सकता हूं और इसे एक निर्दिष्ट एमुलेटर में लोड कर सकता हूं। मैं प्रोजेक्ट रूट डायरेक्टरी से निम्नलिखित चलाकर यह कर सकता हूं:

$cordova run --debug --emulator iOS

यह ठीक काम करता है, और iOS 7.0.3 के साथ एक नकली iPhone 4 रेटिना में मेरे ऐप को चलाने वाले iOS-सिम्युलेटर में परिणाम होता है

इस सिम्युलेटेड डिवाइस के अलावा, मैं iPad पर (उदाहरण के लिए) परीक्षण करना चाहूंगा। मेरे पास ये इम्यूलेशन इमेजेज इंस्टॉल हैं, और मैं अपना ऐप उन पर मैन्युअल रूप से Xcode में शुरू कर सकता हूं। साथ ही, कमांड list-emulator-images(स्थित project_dir/platforms/ios/cordova/lib) निम्नलिखित आउटपुट देता है:

"iPhone Retina (3.5-inch)"
"iPhone Retina (4-inch)"
"iPhone Retina (4-inch 64-bit)"
"iPhone"
"iPad"
"iPad Retina"

हालाँकि, बात यह है: मैं यह पता लगाने की कोशिश नहीं कर सकता कि एमुलेटर को डिफ़ॉल्ट के अलावा किसी और चीज़ में कैसे शुरू किया जाए (जो iPhone Retina (4-inch)इम्यूलेशन इमेज प्रतीत होता है )। cordova helpनिम्नलिखित जानकारी के प्रासंगिक उत्पादन :

run [--debug|--release]
    [--device|--emulator|--target=FOO]
    [PLATFORM] ............................ deploys app on specified platform devices / emulators

मैंने निम्नलिखित चीजों की कोशिश की है:

cordova run --debug --emulator=iPad iOS

और इसके कई रूप हैं, लेकिन कोई भाग्य नहीं। हर बार उसी एमुलेटर में शुरू होता है।

कमांड-लाइन टूल के लिए प्रलेखन इस संबंध में कोई जानकारी नहीं देता है, और एक व्यापक Google-खोज भी कुछ भी करने में विफल रहा है। क्या मुझे कुछ तुच्छ याद आ रही है? या मैं कुछ अजीब करने की कोशिश कर रहा हूं? मैं वास्तव में आशा करता हूं कि यहां किसी के पास इसका अनुभव है, और कुछ उत्तर दे सकता है।

अग्रिम में ही बहुत शुक्रिया!

संपादित करें: स्पष्ट रूप से उल्लेख करना भूल गया; मैं एक मैक पर यह सब कर रहा हूँ। जैसा कि पहले बताया गया है, Xcode में अलग-अलग एमुलेटर / सिमुलेटर में ऐप चलाना ठीक काम करता है।

जवाबों:


335

यह जानने के लिए कि सिम्युलेटर चित्र क्या उपलब्ध हैं, आप उन्हें सूचीबद्ध करने के लिए उपयोग कर सकते हैं

$ cordova emulate ios --list
Available iOS Virtual Devices:
    iPhone-4s, 9.3
    iPhone-5, 9.3
    iPhone-5s, 9.3
    iPhone-6, 9.3
    iPhone-6-Plus, 9.3
    iPhone-6s, 9.3
    iPhone-6s-Plus, 9.3
    iPad-2, 9.3
    iPad-Retina, 9.3
    iPad-Air, 9.3
    iPad-Air-2, 9.3
    iPad-Pro, 9.3

तब --target पैरामीटर में एक सिम्युलेटर नाम का उपयोग करें:

cordova emulate ios --target="iPhone-4s, 9.3"
cordova emulate ios --target="iPad-Air-2, 9.3"
cordova emulate ios --target="iPhone-6s, 9.3"
cordova emulate ios --target="iPhone-6-Plus, 9.3"

महत्वपूर्ण एक अलग लक्ष्य सिम्युलेटर शुरू करने से पहले सिम्युलेटर को छोड़ें (मेनू बार चयन पर Simulator->Quit)

ध्यान रखें कि आपको 3.5 से 4 इंच iPhone से स्विच करने के लिए मेनू के माध्यम से iOS सिम्युलेटर को छोड़ने की आवश्यकता हो सकती है।

में गतिशील सूची उपलब्ध है platforms/ios/cordova/lib/list-emulator-images


3
धन्यवाद, इससे मदद मिली। इसके लिए आपका स्रोत क्या था? बस सोच रहा था कि मैं इसे कैसे समझ सकता हूं ... इस सवाल का जवाब भी बहुत मदद करता है: stackoverflow.com/questions/13877840/… जाहिर तौर पर 'कॉर्डोवा इम्यूलेट' एक रैपर वूर आयोस-सिम है, जिससे आप भी बात कर सकते हैं सीधे करने के लिए। यह वही है जो मैंने करना समाप्त कर दिया है, इसलिए मैं अपनी पसंद के आईडीई से सीधे अपना कोड बना और लॉन्च कर सकता हूं।
एगमेिस्टर

मैंने अभी-अभी इस कमांड को चलाया और 4.7 और 5.5 इंच के एमुलेटर सूचीबद्ध नहीं हैं, यहां तक ​​कि Xcode 6 के साथ भी सूचीबद्ध नहीं हैं :-(
बेन क्लेटन

नमस्ते, मैंने इस कमांड की कोशिश की "।/platforms/ios/cordova/lib/list-emulator-images" लेकिन मुझे सभी विकल्प दिखाई नहीं दिए, - NO iPhone 6, NO iPhone 6-Plus, NO iPad-Air क्या होगा समस्या? धन्यवाद
user2120121

10
मैं वास्तव में नहीं जानता कि क्यों लेकिन मेरे लिए कॉर्डोवा सीएलआई "Error: Cannot read property 'name' of undefined"उद्धरण के साथ लक्ष्य को निर्दिष्ट करते समय फेंक देगा , मैं केवल इसे इस तरह से चलाकर काम कर सकता हूं cordova run ios --target=iPhone-6। आशा है कि यह किसी और को कुछ मुसीबत बचाता है!
गिफर्ड एन

1
मैं उसी समस्यात्मक परिणाम के रूप में रहा हूँ जैसे Gifford N। मैं कॉर्डोवा 7.0.0 का उपयोग कर रहा हूँ
टेरी विल्किंसन

18

जैसा कि csantanapr आप कह सकते हैं:

cordova emulate ios --target="iPhone-4s"

लेकिन, इस मामले में कॉर्डोवा (या फोनगैप या अन्य) प्रोजेक्ट को आईओएस 4 के संस्करण 7.0.3 के साथ आईफोन 4 के सिम्युलेटर पर लॉन्च किया जाएगा ।

यदि आप एक ही सिम्युलेटर पर लॉन्च प्रोजेक्ट चाहते हैं, लेकिन अन्य संस्करण iOS (7.1 या 8.0, अगर यह आपके सिस्टम में मौजूद हैं) के साथ?

शव के बारे में , आप कह सकते हैं कि कोबराबॉय कह सकते हैं :

एक विशिष्ट एमुलेटर शुरू करें और सीधे आईओएस-सिम का उपयोग करके अपना आईओएस संस्करण चुनें।

लेकिन आप --targetकॉर्डोवा runकमांड के विकल्प में सुधार कर सकते हैं ।

सबसे पहले आपको यह सुनिश्चित करना होगा कि आपके सिस्टम पर उपलब्ध iOS संस्करण किस लक्ष्य के लिए है।

इसके लिए कोबराबॉय के उत्तर का उपयोग करें :

$ ios-sim showdevicetypes

फिर आपको फ़ाइल खोलने your_project_dir/platforms/ios/cordova/lib/run.jsऔर नीचे की तरह कोड की लाइनें ढूंढने की आवश्यकता है :

// validate target device for ios-sim
// Valid values for "--target" (case sensitive):
var validTargets = ['iPhone-4s', 'iPhone-5', 'iPhone-5s', 'iPhone-6-Plus', 'iPhone-6',
    'iPad-2', 'iPad-Retina', 'iPad-Air', 'Resizable-iPhone', 'Resizable-iPad'];

उपयोग के लिए iPhone-4s, 7.1(या कुछ अन्य) सरल इसे सरणी में जोड़ें validTargets

var validTargets = ['iPhone-4s', 'iPhone-4s, 7.1', 'iPhone-5', 'iPhone-5s', 'iPhone-6-Plus', 'iPhone-6',
    'iPad-2', 'iPad-Retina', 'iPad-Air', 'Resizable-iPhone', 'Resizable-iPad'];

और में

cordova emulate ios --target="iPhone-4s, 7.1"

आपका --target="iPhone-4s, 7.1"मान्य होगा।

और समारोह deployToSimकी run.js:

function deployToSim(appPath, target) {
// Select target device for emulator. Default is 'iPhone-6'
if (!target) {
    target = 'iPhone-6';
    console.log('No target specified for emulator. Deploying to ' + target + ' simulator');
}
var logPath = path.join(cordovaPath, 'console.log');
var simArgs = ['launch', appPath,
    '--devicetypeid', 'com.apple.CoreSimulator.SimDeviceType.' + target,
    // We need to redirect simulator output here to use cordova/log command
    // TODO: Is there any other way to get emulator's output to use in log command?
    '--stderr', logPath, '--stdout', logPath,
    '--exit'];
return spawn('ios-sim', simArgs);
}

कन्वर्ट iPhone-4s, 7.1वैध तर्क के लिए com.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1के लिए ios-sim


यह पूरी तरह से काम करता है और मुझे ionic run ios --target='iPhone-6, 9.0'आयोनिक फ्रेमवर्क का उपयोग करते समय उपयोग करने की अनुमति देता है ।
जॉरिसव

अच्छा लगता है 👍 मैंने केवल उस ब्लॉक को टिप्पणी की है जो मान्य करता है validTargetsऔर मैं पूर्ण प्लेटफ़ॉर्म निर्दिष्ट करने में सक्षम था, उदा "--target="iPhone-6, 8.4"":। वास्तव में अच्छा होगा अगर कॉर्डोवा ने लक्ष्य सत्यापन को सौंप दिया ios-sim
काइल फॉक्स

यह मेरे लिए काम नहीं करता है। मैंने run.js में कचरा टाइप किया और इसे नजरअंदाज कर दिया गया। Npm यह या कुछ और कैश करता है? मैं एनपीएम के कैश को कैसे ताज़ा कर सकता हूं?
Randgalt

आप "आयनिक प्लेटफ़ॉर्म अपडेट आईओएस" भी चला सकते हैं और आप हाल ही में स्थापित एमुलेटर चलाने में सक्षम होंगे
बेंजामिन पीटर

10

टी एल; डॉ

आप एक विशिष्ट एमुलेटर शुरू कर सकते हैं और सीधे आईओएस-सिम का उपयोग करके अपना आईओएस संस्करण चुन सकते हैं।

export appname="./platforms/ios/build/emulator/Hello World.app"
ios-sim launch "$appname" --devicetypeid "com.apple.CoreSimulator.SimDeviceType.iPad-2, 8.0" --stderr ./platforms/ios/cordova/console.log --stdout ./platforms/ios/cordova/console.log

विवरण

जब मैंने इसे चलाया:

cordova emulate ios --target="iPad"

और चल रही प्रक्रियाओं को देखा, मैंने इसे (एक पंक्ति में) देखा:

ios-sim launch ./platforms/ios/build/emulator/HelloWorld.app 
        --stderr ./platforms/ios/cordova/console.log 
        --stdout ./platforms/ios/cordova/console.log 
        --family ipad 
        --exit

आईओएस-सिम में आगे की जांच , ऐसा लगता है कि कुछ और विशिष्ट विकल्प हैं, विशेष रूप से:

--devicetypeid <device type>    The id of the device type that should be simulated (Xcode6+). Use 'showdevicetypes' to list devices.
  e.g "com.apple.CoreSimulator.SimDeviceType.Resizable-iPhone6, 8.0"

इसलिए मैंने जैसा कि यह सुझाव दिया था और "शोदेविसिपेटेस" तर्क के साथ आईओएस-सिम चलाया और यह मिला:

$ ios-sim showdevicetypes
com.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
com.apple.CoreSimulator.SimDeviceType.iPhone-5, 7.1
com.apple.CoreSimulator.SimDeviceType.iPhone-5s, 7.1
com.apple.CoreSimulator.SimDeviceType.iPad-2, 7.1
com.apple.CoreSimulator.SimDeviceType.iPad-Retina, 7.1
com.apple.CoreSimulator.SimDeviceType.iPad-Air, 7.1
com.apple.CoreSimulator.SimDeviceType.iPhone-4s, 8.0
com.apple.CoreSimulator.SimDeviceType.iPhone-5, 8.0
com.apple.CoreSimulator.SimDeviceType.iPhone-5s, 8.0
com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus, 8.0
com.apple.CoreSimulator.SimDeviceType.iPhone-6, 8.0
com.apple.CoreSimulator.SimDeviceType.iPad-2, 8.0
com.apple.CoreSimulator.SimDeviceType.iPad-Retina, 8.0
com.apple.CoreSimulator.SimDeviceType.iPad-Air, 8.0
com.apple.CoreSimulator.SimDeviceType.Resizable-iPhone, 8.0
com.apple.CoreSimulator.SimDeviceType.Resizable-iPad, 8.0

डिफ़ॉल्ट सिम्युलेटर को बदलने के लिए यह कैसे काम करता है? आप यहाँ कॉर्डोवा बिट को दरकिनार कर रहे हैं और बस सीधे लॉन्च कर रहे हैं, है ना?
मिश्रण 3 डी


4

Xcode 8.3.2 के रूप में ...

पुराना धागा, मुझे पता है, लेकिन ऐसा लगता है, शायद, इसका जवाब थोड़ा बदल गया है। इस सूत्र में पहले के पदों से मिले संकेतों ने मदद की, लेकिन इसलिए कोड में शामिल प्रलेखन को पढ़ना,<cordova-project>/platforms/ios/cordova/lib/run.js

./platforms/ios/cordova/lib/list-emulator-imagesउपलब्ध एमुलेटर छवियों को सूचीबद्ध करने के लिए निष्पादित करें। वांछित एमुलेटर में चलने के लिए कॉर्डोवा कॉल करते समय अंत में संस्करण संख्या को शामिल न करें।

cordova run ios --emulator --target="iPad-Air"

और देखें


आपकी टिप्पणी के लिए भगवान का शुक्र है! यह नवीनतम अद्यतन के बाद काम नहीं किया और कोई जानकारी नहीं मिल सकी। बस त्रुटि संदेश मिला: "त्रुटि: अपरिभाषित की संपत्ति 'नाम नहीं पढ़ सकता है" जो आईओएस संस्करण को शामिल नहीं करने के बाद तय किया गया था।
मार्को रिन्क

@MarcoRinck जवाब पर टिप्पणी की जाँच करें, टाइपिंग से जल्दी ठीक है:cordova run ios --target=iPhone-6
किरा हाओ

3

मैं अपनी कम प्रतिष्ठा के कारण उपरोक्त उत्तर पर टिप्पणी नहीं कर सकता, लेकिन लक्ष्यों की सूची निम्न से उपलब्ध है:

start-emulator 

के अंतर्गत

your platform/ios/cordova/lib/

होने के बाद, मैं ipad रेटिना एमुलेटर काम नहीं कर सकता ...


3

उपकरणों की सूची का सबसे तेज़ उत्पादन: $ instruments -s devices

बस संस्करण के बिना डिवाइस नाम का उपयोग करें।


0

वेब अनुरोध के साथ iOS सिम्युलेटर चलाता है जो कॉर्डोवा एप्लिकेशन के लिए पहले से ही निर्मित बिल्ड पर आधारित है। ब्राउज़र के इस अनुरोध को iPhone 8Plus संस्करण के साथ मैक पर सिम्युलेटर खोलता है: http: // hostname: 3000 / cordova / build / [xxxx-buildnumber] / emulate? Target = iPhone-8-plus


0

विभिन्न iPhone और iPad सिम्युलेटर

  1. कॉरडोवा रन आईओएस - लिस्ट

  2. कॉर्डोवा ने आईओएस - लिवरेट "iPhone-7" का अनुकरण किया


0

@ बिरजा का जवाब अभी काम कर रहा है लेकिन रन कमांड का इस्तेमाल उन्होंने अभी भी गलत किया है इसलिए यहाँ सही जवाब है:

सिम्युलेटर में उपलब्ध सभी उपकरणों को सूचीबद्ध करने के लिए cordova run ios --list

इसका परिणाम कुछ इस तरह होगा:

Available ios devices:
Available ios virtual devices:
Apple-TV-1080p, tvOS 12.2
Apple-Watch-Series-2-38mm, watchOS 5.2
iPhone-5s, 12.2
iPhone-6, 12.2
iPad-Air-2, 12.2
iPad--5th-generation-, 12.2
iPad-Pro--9-7-inch-, 12.2
iPad-Pro, 12.2
iPad-Pro--12-9-inch---2nd-generation-, 12.2
iPad-Pro--10-5-inch-, 12.2
iPad--6th-generation-, 12.2
iPad-Pro--11-inch-, 12.2
iPad-Pro--12-9-inch---3rd-generation-, 12.2

cordova run ios --target "iPad-Pro, 12.2"ऊपर से किसी भी लक्ष्य का उपयोग करें। सिम्युलेटर में चलाने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.