VirtualBox - قم بتشغيل محاكي Android في بيئة افتراضية لاختبار مشروع Android

المقدمة

في هذه المقالة ، سأحاول وصف مثال على البنية التحتية للاختبارات التلقائية لتطبيقات Android (التشغيل الآلي للجوال) ، أي بيئة لإجراء الاختبارات التلقائية لواجهة المستخدم على محاكي جهاز Android في بيئة افتراضية.





المتطلبات:

يتطلب محاكي Android تقنية Intel Virtualization أو دعم AMD Virtualization . لذلك ، غالبًا ما يواجه المُختبِر الحاجة إلى تشغيل وحدات الاختبار فقط في بيئة كمبيوتر أصلية مع وصول مباشر إلى المعالج المركزي.





في هذه الحالة ، يكون المخطط كما يلي:









الصعوبات:

  1. لا توجد طريقة لإعادة إنشاء بيئة المحاكي بسهولة.





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





  3. يستغرق إصلاح البيئة وتكوينها وقتًا طويلاً.





الحل المقترح في هذه المقالة:

  1. قم بإنشاء جهاز افتراضي باستخدام إمكانات VirtualBox الافتراضية المتداخلة (وصف أكثر تفصيلاً للتقنية في هذه المقالة).





  2. إعادة توجيه دعم Intel-VT أو KVM داخل الجهاز الظاهري الذي تم إنشاؤه.





  3. VM Android .





  4. UI .





  5. VM.





:









:

  1. VM , . .





  2. , .





:

  • c: Intel i5-1035G1





  • : 12Gb





  • BIOS





  • OC: Ubuntu 20.4





1: OS

. VNC . , Linux, Windows, Mac ..





x11vnc

:





sudo apt-get update # 
sudo apt install x11vnc # x11vnc
sudo x11vnc -storepasswd <  > /etc/x11vnc.pass #   
sudo chmod ugo+r /etc/x11vnc.pass #    
      
      



:





x11vnc -nevershared -forever -dontdisconnect -many -noxfixes -rfbauth /etc/x11vnc.pass
      
      



VirtualBox

:





sudo apt-get update
sudo apt install gcc make linux-headers-$(uname -r) dkms
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list.d/virtualbox.list'
sudo apt update # 
sudo apt install virtualbox-6.1
      
      



VM

VM VirtualBox . VM code-first





  • CPU - ( )





  • - 4Gb













Nested Virtualization :





VBoxManage modifyvm < VM> --nested-hw-virt on
      
      



VM.





2: VM

. Packer, VM .





Ubuntu .





KVM

egrep -c '(vmx|svm)' /proc/cpuinfo #     0 -       ,  1   -     KVM   
sudo apt-get update # 
sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager # KVM   
sudo usermod -G libvirt -a ubuntu #  ubuntu   libvirt
sudo systemctl status libvirtd #   libvirt
sudo kvm-ok #  KVM
      
      



Android command line tools

sudo apt-get update # 
yes | sudo apt install android-sdk # Android SDK
sudo apt install unzip # unzip   
cd ~/Downloads #   Downloads
wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip #   command line tools    Google
sudo unzip commandlinetools-linux-6858069_latest.zip -d /usr/lib/android-sdk/cmdline-tools/ #
sudo mv /usr/lib/android-sdk/cmdline-tools/cmdline-tools /usr/lib/android-sdk/cmdline-tools/tools #   .   , Google     ,  SDK     
export ANDROID_SDK_ROOT=/usr/lib/android-sdk # 
export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin #  Path
export PATH=$PATH:$ANDROID_SDK_ROOT/emulator #  Path
      
      



, sdkmanager Android SDK :





sdkmanager --version
      
      



Android tools

yes | sdkmanager --licenses # 
sudo chown $USER:$USER $ANDROID_SDK_ROOT -R #         ANDROID_SDK_ROOT
yes | sdkmanager "cmdline-tools;latest" # cmdline-tools
sdkmanager "build-tools;30.0.3" # build-tools
sdkmanager "platform-tools" # platform-tools
sdkmanager "platforms;android-30"
sdkmanager "sources;android-30"
sdkmanager "emulator" # AVD manager
emulator -accel-check #,    
yes | sdkmanager "system-images;android-23;google_apis;x86_64" #   
sdkmanager --list #   .   CI .
no | avdmanager create avd -n android-23_google_apis_x86_64 -k "system-images;android-23;google_apis;x86_64" #   
emulator -list-avds #   
      
      



Git

Android . . .





sudo apt update # 
yes | sudo apt install git # Git
git --version # 
mkdir ~/workspace #   
cd ~/workspace #    
git clone https://github.com/panarik/AndroidClearApp.git #   
cd ~/workspace/AndroidClearApp #   
      
      



3: Android

./gradlew assembleDebug --no-daemon # APK
emulator -avd android-23_google_apis_x86_64 -no-audio -no-window -verbose -gpu off -accel off #    
sleep 240 # ,      
adb get-state #,   ADB  .  ,   
      
      



ADB :





:





./gradlew connectedAndroidTest --no-daemon
      
      



! !









, , VM.





:





  • VirtualBox ( )





sudo apt purge virtualbox-6.1
      
      



  • VM CPU:













  • VM :





    • VBoxClient





    • KVM





№2 . . , ADB :





! ! :





PackageManager, :









Android . Packer ( ) VirtualBox. CI Jenkins. , , .





سوف أنشر جميع النتائج كإضافات لهذه المقالة.





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





شكرا جزيلا لاهتمامك!









ملاحظة.





هل يمكنني أن أسألك في التعليقات لإعطاء مثال على بنيتك التحتية باستخدام محاكي Android؟ على سبيل المثال ، قد تحتوي المحاكيات في حاويات الرصيف ( https://github.com/budtmo/docker-android ) على بعض الأمثلة الأخرى المثيرة للاهتمام.








All Articles