testing تحميل - Android:محاكاة واي فاي في المحاكي؟



emulator for (6)

أرغب في التحقق من تطبيقي ما إذا كان الجهاز مزودًا باتصال WiFi ، ولكن من أجل القيام بذلك ، يجب أولاً العثور على طريقة للحصول على "WiFi" في المحاكي. كل ما عليك هو الانتقال إلى الإعدادات -> عناصر التحكم اللاسلكية -> يشير Wifi إلى تعذر تشغيل شبكة Wi-Fi ، بينما يقول logcat :

E/WifiService(  566): Failed to load Wi-Fi driver.
D/SettingsWifiEnabler(  695): Received wifi state changed from Unknown to Enabling
D/SettingsWifiEnabler(  695): Received wifi state changed from Enabling to Unknown

كيف يمكنني محاكاة اتصال WiFi في المحاكي؟


Answers

من الناحية النظرية ، لينكس (الروبوت الأساسي النواة) لديه سائق mac80211_hwsim ، الذي يحاكي واي فاي. يمكن استخدامه لإعداد العديد من أجهزة WiFi (نقطة القبول ، وجهاز WiFi آخر ، وما إلى ذلك) ، والتي ستشكل شبكة WiFi.

من المفيد اختبار برامج WiFi ضمن نظام التشغيل Linux. ربما ، حتى في ظل وضع المستخدم لينكس أو غيرها من "مربعات" افتراضية معزولة مع لينكس.

من الناحية النظرية ، يمكن استخدام برنامج التشغيل هذا للاختبارات في أنظمة Android حيث لا يتوفر لديك جهاز WiFi حقيقي (أو لا ترغب في استخدامه) ، وأيضًا في بعض أنواع محاكيات android. ربما ، يمكن للمرء أن يتمكن من استخدام برنامج التشغيل هذا في android-x86 ، أو - للاختبار - في android-x86 يعمل في VirtualBox.


بدءاً من المراجعة 26.1.3 ، يدعم محاكي Android الآن الاتصال بالواي فاي على صورة Nougat (API 25).

تمت إضافة دعم لشبكة Wi-Fi في بعض صور النظام (حاليا مستوى API فقط 25). تتوفر نقطة وصول تسمى "AndroidWifi" ويتصل بها نظام التشغيل Android تلقائيًا.

المصدر: https://developer.android.com/studio/releases/emulator.html#26-1-3

يمكنك التحقق من إصدار المحاكي بالانتقال إلى إعدادات المحاكي (ثلاث نقاط)> تعليمات> حول. لاحظ أيضًا أنه إذا تم إنشاء AVD قبل إصدار الإصدار 26.1.3 ، فسيتعين عليك إعادة إنشاء AVD الخاص بك. قرأت في مكان ما أن بيانات المسح قد تعمل أيضًا ، لكنني لم أحاول ذلك.


نظرًا لأن هذا يبدو سؤالًا شائعًا ، فسأذهب إلى الأمام وأضيف إجابة محدثة. لا يزال SDK لا يدعم محاكاة WiFi ، ولكن Genymotion يعمل بشكل افتراضي مع WiFi ، لذا يمكنك استخدام ذلك لتطوير / اختبار التطبيقات باستخدام وظيفة WiFi محددة.


ربما لا يوجد بديل عن الاختبار على جهاز حقيقي ، ولكن إذا كنت تبحث عن حالة اختبار جيدة بما فيه الكفاية في المحاكي ، فتجرب Fake Wifi Connection محاولة:

يجعل التطبيقات يعتقدون أنهم على واي فاي بغض النظر عن ما هو الاتصال الأساسي.

تنويه: كتبت هذه الأشياء.
وهو يعمل عن طريق اعتراض مكالمات ConnectivityManager / WifiManager (يستخدم Xposed ). لقد حاولت تغطية معظمهم حتى يقوم بعمل جيد ، ومع ذلك فمن الممكن دائما بعض المفقودين (إذا وجدت شيئا اسمحوا لي أن أعرف).


إذا لم يكن لديك جهاز حقيقي ، أعتقد أن أفضل طريقة هي تثبيت android-x86 أو استخدامه على USB مباشر. ليس هناك أي اختلافات بين android و android-x86.

و android-x86 يدعم wi-fi. حتى تتمكن من تثبيت تطبيقك وتشغيله.


استخدم Intel X 86 Emulator Accelerator

أولاً ، قم بتثبيت Intel X 86 Emulator Accelerator (HAXM). يمكن تنزيل هذا مباشرة من Intel أو باستخدام Android SDK Manager. في مدير SDK ، يقع ضمن "إضافات".

في إصدار Android Studio I المستخدم (0.8.9) ، يعمل Android SDK Manager على تنزيل HAXM ، ولكن لا يتم تشغيل المثبّت فعلاً (أفترض أن ذلك سيتم إصلاحه في الإصدارات الأحدث). لتشغيل التثبيت ، كان عليّ الذهاب إلى C: \ Program Files (x86) \ Android \ android-studio \ sdk \ extras \ intel \ Hardware_Accelerated_Execution_Manager وإطلاق intelhaxm.exe يدويًا.

يعمل HAXM مع أجهزة Intel ، لذلك قام بإنشاء محاكي جديد باستخدام وحدة المعالجة المركزية Intel.

إنشاء AVD جديد باستخدام Intel Atom x 86

هذا تحسن الأشياء إلى حد كبير ، ولكن المحاكي لا يزال يشعر بطيئا بعض الشيء. كانت الخطوة الأخيرة هي اختيار استخدام GPU Host في Android Virtual Device Manager (AVD).

بعد هذه التغييرات ، تم إطلاق Android Emulator في غضون 5-10 ثوانٍ وتشغيله دون أي تأخير ملحوظ. يجب أن تدرك أن هذه الميزات تعتمد على الأجهزة (CPU / GPU) وقد لا تعمل على بعض الأنظمة.





android testing android-emulator wifi device-emulation