هل هناك طريقة لمحاكاة أجهزة iPhone متعددة باستخدام Xcode / iPhone SIM؟

StackOverflow https://stackoverflow.com/questions/896487

  •  23-08-2019
  •  | 
  •  

سؤال

أخطط لإجراء لعبة تتطلب عدة مستخدمين وكنت أتساءل عما إذا كانت هناك طريقة لإطلاق حالات متعددة من محاكاة iPhone. لم أر أي شيء في القوائم أو في نتائج بحث Google، لكنني أردت فقط أن أتأكد من أنني لم أكن أفتقد أي شيء.

هل كانت مفيدة؟

المحلول

بقدر ما أستطيع أن أقول، لا يمكنك فقط عدم وجود مثيلات متعددة من تشغيل المحاكاة، ولكن عندما يأتي الوقت لاختبار الجهاز الفعلي، لا يمكنك الحصول على مثيلات متعددة من المصحح التي تعمل أيضا.

هذا يعني القيام بتطبيقات متعددة الأجهزة، ستحتاج إلى أن يكون لديك جهاز Mac واحد مخصص لجهاز iPhone / Touch (أو مثيل محاكي) واحد يعمل على تشغيل التطبيق الخاص بك.

لقد بدأت في النظر في ما إذا كانت VMware أو Parallels يمكن إحضارها بطريقة أو بأخرى، ولكن لا يوجد الكثير الذي يمكن القيام به دون اختراق نظام التشغيل.

أقترح تقديم طلب ميزة مع http://bugreporter.apple.com..

نصائح أخرى

من الممكن ولكن فقط مع عدة مستخدمين.

اقرا هذا: http://www.coderebel.com/20/0/31/Simulator.

على افتراض أن لديك مشروعين (P1، P2) الذي تريد تصحيحه في وقت واحد، فعل ما يلي.

خطوات الإعداد:

  1. قم بإنشاء مستخدم جديد (U2) على جهازك
  2. امنحها R / W الوصول إلى P2، خاصة إلى مجلد Build.
  3. قم بتنزيل تطبيق Launcher من الموقع أعلاه ونسخه إلى التطبيقات.

خطوات التصحيح:

  1. إغلاق Xcode والمحاكاة إذا كان يعمل
  2. قم بتشغيل iPhone Launcher.App مع U1.
  3. بدء تشغيل XCode مع U1، تحميل P1، بدء تصحيح الأخطاء.
  4. قم بتشغيل iPhone Launcher.App مع U2.
  5. بدء تشغيل XCode مع U2، تحميل P2، بدء تصحيح الأخطاء.

لسوء الحظ، فإنه يتعين على Pita تغيير المستخدمين بين الحين والآخر ولكن حتى الآن لم أجد أي حل أفضل. أتمنى أن يساعدك هذا.

هناك طريقة للقيام بذلك بسهولة دون استخدام عدة مستخدمين. ضع في اعتبارك أنك لن تكون متصلا بمصحح الأخطاء. ضع في اعتبارك التفسير أدناه XCode 6+.. وبعد يمكنك تخطي هذا التفسير وانتقل فقط إلى قسم التفاف عند التواجد أدناه.

من إجابة هنا يمكننا أن نرى أنه يمكنك تشغيل أي محاكي من سطر الأوامر:

Open -a "ios محاكاة" - الأعرق -CurrentDeviceudid

يمكنك العثور على Tibresid (بالإضافة إلى جميع محاكاة المحاكاة الخاصة بك) عن طريق تشغيل xcrun simctl list أمر في وحدة التحكم. سوف تولد قائمة مثل هذا. معرف الجهاز هو التعليمات البرمجية الموجودة في الأقواس:

== Runtimes ==
iOS 8.3 (8.3 - 12F69) (com.apple.CoreSimulator.SimRuntime.iOS-8-3)
== Devices ==
-- iOS 8.3 --
    iPhone 4s (99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8) (Shutdown)
    iPhone 5 (K262AF11-ADD2-4FDA-ACBA-8C80DD9D4AA1) (Shutdown)
    iPhone 5s (337KDC51-0A4B-47DB-8966-83562FD92C93) (Shutdown)
    iPhone 6 Plus (9GK714E2-F713-4F98-A96E-C72ACD6571A8) (Shutdown)
-- iOS 8.2 --
    etc continued....

لذلك لتشغيل جهاز محاكاة باستخدام أعلاه كمثال، قم بتشغيل هذا الأمر على وحدة التحكم:

open -n /Applications/Xcode.app/Contents/Developer/Applications/iOS\ Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'

نحن نستخدم ال -n العلم بدلا من ذلك لأن -a Flag يحدد التطبيق لاستخدامه لفتح الملف، في حين -n Flag يفتح مثيل جديد للتطبيق (التطبيقات) حتى لو كان أحد يعمل بالفعل. استخدم ال man open أمر لمعرفة كل هذه الأشياء.

تأكد أيضا من الحصول على المسار الصحيح للمحاكاة الخاصة بك.

شيء آخر يلاحظ، إذا قمت بتشغيل محاكاة مثل هذا، فحسب، فستكون لديك محاكاة محدودة. وبما أنها محدودة، فقد ترغب في إطلاقها دون مقاطعة واحدة بالفعل على الشاشة. يمكننا حل هذا من هذه الإجابة هنا حيث يظهر لك كيفية create a new simulator and delete one.

حتى التفاف كل شيء، إليك ما تفعله لإطلاقها.

أ) أولا إنشاء محاكاة قبل إطلاقه.

الاستعمال: SIMCTL إنشاء "اسم" "معرف نوع الجهاز" "معرف وقت التشغيل"

xcrun simctl create "mynewsimulator" "iPhone 6" "com.apple.CoreSimulator.SimRuntime.iOS-8-3"

ستجد معرف وقت التشغيل من الأمر xcrun simctl list أمر ركض أعلاه. بعد تشغيل الأمر أعلاه، سيتم طباعة TijoreDID على شاشة وحدة التحكم. اذكر علما به عندما تحتاج إلى الحجة الأخيرة لإطلاق المحاكاة الموضحة أدناه. دعونا نفترض أن هذا المعرف كان 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8

ب) إطلاقه

open -n /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'

ج) حذفها بمجرد الانتهاء من محاكاة الخاص بك

xcrun simctl delete 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8

كل هذا يمكن وضعه في ملف .sh واحد لسهولة التشغيل. يرجى ملاحظة أن تضع wait أو sleep الأوامر بعد كل أمر إذا قررت وضع كل هذا في ملف sh.

تحرير 2017أرى أن Xcode 9 سيدعم الآن محاكاة متعددة. في انتظار أن نرى كيف ستعمل جميعها.

خيار آخر (وإن كانت مبالغة) إذا كان لديك ترخيص خادم Mac OS X هو الافتراضي مثيل خادم Mac OS X، وتشغيل جهاز محاكي ثان في VM.

حسنا ... لا أعتقد أنك تفتقد أي شيء هنا. بقدر ما أعرف أنه لا توجد تقنية داخل SDK القادرة على محاكاة أجهزة متعددة - رغم أنها ستكون ميزة مفيدة لها. أعتقد أن الخيارات الوحيدة الخاصة بك ستكون للحصول على جهاز ثاني لجهاز OS ثاني، أو احصل على صديق لديه أيضا جهاز iPhone OS للسماح لك باستخدامه للاختبار.

في Xcode 4، يمكنك تشغيل مثيلات متعددة مع وجود كلاهما في وضع التصحيح.

ما فعلته هو إنشاء مكررة من هدفي وركض كل من الأصل والاستجمال. إذا كنت تستخدم نافذة الإخراج، فيمكنك تبديل الإخراج الذي تبحث عنه.

اتبع هذه الخطوات لاختبار التطبيق الخاص بك.

عليك القيام بشيء واحد للعملية بأكملها أولا: انتقل إلى المشروع -> تحرير إعدادات المشروع -> ضع علامة على الخيار - بناء أهداف مستقلة بالتوازي.

  1. رمز التصحيح الذي سيخلق تطبيقك في محاكي على سبيل المثال اسم التطبيق الخاص بك هو - مثيل
  2. محاكاة إغلاق
  3. انتقل إلى Project-> هدف جديد -> المثبت 2 إضافة "حزمة عرض الحزمة: instance2.Info.plist مجموعة الملفات القابلة للتنفيذ الاسم: تحديد الهدف المثبت 2 -> الذهاب إلى المشروع -> تعيين الهدف النشط -> Instance2 بناء مع مثيل

ملاحظة: هل لديك بعناية وإلا يجب عليك إعادة تعيين جهاز محاكي الخاص بك لإعادة تعيين محاكي -> تشغيل محاكي -> iPhone Simulator -> إعادة تعيين المحتوى والإعدادات ...

الآن لديك تطبيقان في محاكي ويمكنك اختبار التطبيق على كل مثيل.

أتمنى أنها تساعدك :)

تمكنت من الحصول عليها للعمل الجمع بين الإجابة من قبل Ivsty. مع هذا.

في الأساس، ما تفعله هو إنشاء اثنين من المستخدمين (A و B)، وتشغيل المحاكاة في كل منها، وتشغيل خادم VNC على المستخدم B، ثم الاتصال من المستخدم A للوصول إلى شاشة B دون الحاجة إلى تبديل المستخدمين.

مدعومة من XCode 9 ON.

(المصدر: WWDC 2017)

نعم، أصبح من الممكن الآن وهو سهل جدا. الشيء الوحيد الذي تحتاجه هو xctool, وأدوات البناء من Facebook و Ruby Gem. يساعد GEM Ruby على إنشاء / تدمير المحاكاة اللازمة أثناء الاختبار.

يمكنك قراءة الوثائق الكاملة على هذا الرابط:

https://github.com/plu/parallel_ios_tests.

أنا أستخدم هذا النهج وجرى الاختبار الخاص بي على 4 محاكي iOS في نفس الوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top