You can use an android emulator to help you develop your GDSL tests. It is usefull if you do not have a real device or if you want to test on a device with the same resolution as a device on the Test Bench. Do not use emulator if you want measures, the metrics (energy, data …) are not available.
1. Prerequisite
1.1 Prerequisite to use an android emulator without Greenspector tools
16 GB of RAM memory
Available Disk storage > 10 GB
Install Android Studio
On Windows only, turn vulkan off to be able to load web pages (only if you want to test web pages) :
Open Windows start menu
Select Notepad
Add the following text :
Vulkan = off GLDirectMem = on
Click on File > Save as : go to
C:\Users\[username]\.android
and name the fileadvancedFeatures.ini
On Windows, turning vulkan off may display a black screen on the emulator.
If it is the case, during the emulator creation, you will have to select “Graphics: Software - GLES 2.0”
1.2. Prerequisite to use an android emulator with Greenspector tools
Follow the first part of the prerequisite (part 1.1)
Install Android SDK Tools:
Install Android Studio if you don’t have it
Open Android Studio
Click on More Actions > SDK Manager (or Tools > SDK Manager if a project is open)
Click on the SDK Tools tab, uncheck "Hide Obsolete Packages"
Check Android SDK Tools and install version 26.1.1
Add ADB (Android Debug Bridge) to your environment variables:
On Linux: add the line
export PATH=$HOME/Android/Sdk/platform-tools:$PATH
in the .bashrc file and run the command "source ~/.bashrc"On Mac: add the line
export PATH=$HOME/Library/Android/sdk/platform-tools:$PATH
in the .bash_profile file and run the command "source ~/.bash_profile"On Windows: Windows start menu > Settings > System > About > Advanced settings > Environment variables > Path > Modify > Add the path
C:\Users\[username]\AppData\Local\Android\Sdk\platform-tools
. Replace username by the name of the user.
Add AAPT (Android Asset Packaging Tool) to your environment variables:
On Linux: add the line
export PATH=$HOME/Android/Sdk/build-tools/[aapt_folder]:$PATH
in the .bashrc file and run the command "source ~/.bashrc". Replace aapt_folder by the name of the aapt folder.On Mac: add the line
export PATH=$HOME/Library/Android/sdk/build-tools/[aapt_folder]:$PATH
in the .bash_profile file and run the command "source ~/.bash_profile". Replace aapt_folder by the name of the aapt folder.On Windows: Windows start menu > Settings > System > About > Advanced settings > Environment variables > Path > Modify > Add the path
C:\Users\[username]\AppData\Local\Android\Sdk\build-tools/[aapt_folder]
. Replace aapt_folder by the name of the aapt folder.
Get the testrunner from https://app.greenspector.com/ in the Modules tab, and put it in a folder (for example “testrunner_files”)
Add in this folder the configuration files config.yml and job.yml, and a script with the testgb extension. An example of these files is available at the following location:
configuration files: https://app.greenspector.com/download > Test Runner: Download > “Config - Android” and “Job - Android”
testgb file: https://app.greenspector.com/download > GDSL Templates: Download (you can choose between a test file for an Android application, a website, or an iOS application)
Useful documentation :
Android GDSL functions: https://dsl.greenspector.com/
How to use uiautomatorviewer to get elements of a view (by id, text, class or description) to write GDSL test: How to get elements of a view (by id, text, class or description) to write GDSL test (Android)
2. Use an android emulator without Greenspector tools
2.1. Create an emulator
Open Android Studio
Click on the three dots button
Select Virtual Device Manager
If you already have a project open on Android Studio, click on Tools > Device Manager.
On the Device Manager window, click on “Create Device”
On the Virtual Device Configuration window, click on “New Hardware Profile”
Fill in the form with the properties of the device you want to create. In the example below, you can find the properties of the Samsung Galaxy S9. If you want to use an other device, see the next part “Emulators tested”.
Click on “Finish” then on “Next”.
Select a System Image, for example Android 10.0 (Google APIs). Click on “Next”.
Check the configuration and click on “Finish”. Be careful, the configuration might be different than the one you chose. Make sure to click on “Show Advanced Settings” and check each property.
Your device is now created. You can launch it by clicking on the triangle.
2.2. Emulators tested
Device Name | Screen Size (inches) | Resolution | RAM | System image | Version Chrome | Computer OS |
---|---|---|---|---|---|---|
Samsung Galaxy S9 | 5,8 | 1080 x 2220 | 4 GB | Android 10.0 Google APIs | x86 | 113 | Linux |
Samsung Galaxy Tab A7 | 10,4 | 2000 x 1200 | 3 GB | Android 10.0 Google APIs | x86 | 114 | Linux |
Samsung Galaxy Tab S7 FE | 12,4 | 2560 x 1600 | 4 GB | Android 10.0 Google APIs | x86_64 | 114 | Linux |
Samsung Galaxy S10 | 6,1 | 1080 x 2280 | 8 GB | Android 11.0 Google APIs | x86 | ||
Google Pixel C | 10,2 | 2560 x 1800 | 3 GB | Android 8.1 Google APIs | x86 |
If your computer is configured in English, you have to write the screen size with a dot (ex: 5.8).
Avoid using Android 13.0 system image. It takes for too many resources from your computer.
If you want to use a tablet emulator, you can uncheck the portrait mode to use only the landscape mode.
2.3. Add Google Play Store to a custom emulator
Open the configuration file of your emulator. Replace [device_id] by the id of your device.
On Linux and macOS:
$HOME/.android/avd/[device_id]/config.ini
On Windows:
C:\Users\[username]\.android\avd\[device_id]\config.ini
Make the following changes:
PlayStore.enabled: change from “false” to “true”
image.sysdir.1: change “google_apis” to “google_apis_playstore”
tag.display: change “Google APIs” to “Google Play”
tag.id: change “google_apis” to “google_apis_playstore”
Save your changes
On the Device Manager window, select the three dots button and click on “Wipe Data”. It will load the new configuration.
We expect the following error message:
In some old versions of Android Studio, you can have a direct download action instead of a warning missing system image. Please download. Then you do not need to do the following actions to download manually the system image.
Go back to the welcome window of Android Studio
Click on the three dots button
Select SDK Manager
If you already have a project open on Android Studio, click on Tools > SDK Manager.
Click on the SDK Platforms tab
Check the Show Package Details box
Choose the system image that you want and download it. If you want the system image with Android 10 and Google Play Store, select
Android 10.0 (Q) - Google Play Intel x86 Atom System Image
.
On the Device Manager window, select the three dots button and click on “Wipe Data”. It will load the new configuration. Then, you can launch the device with Google Play Store.
2.4. Update Google Play Store and Google Chrome
Start the emulator
In the settings android, please set the device language with English (United Kingdom) instead of English (United States)
Open Google Play Store
Sign in with your account
Click on your profile at the top right of the emulator screen
Click on Settings > About > Update Play Store
Wait for the update to complete. It takes several minutes.
If you want to test a website, search for the Google Chrome app and update it
2.5. Start an emulator from the command line (optional)
On Linux: Update ~/.bashrc or ~/.zshrc
# For newer version of Android SDK export PATH=$HOME/Android/Sdk/emulator:$PATH # For older version of Android SDK export PATH=$HOME/Android/Sdk/tools:$PATH
On macOS: Update ~/.bash_profile
export PATH=$HOME/Library/Android/Sdk/emulator:$PATH
On Windows:
Windows start menu > Settings > System > System Information > Advanced system settings
Add “C:\Users\[username]\AppData\Local\Android\Sdk\emulator” to your PATH environment variables
To see the list of emulators
emulator -list-avds
To start en emulator
emulator -avd [avd_name]
If an emulator crashes or is too slow, you can try one of the following commands:
emulator -avd [avd_name] -memory 8000
emulator -avd [avd_name] -gpu shiftshader_indirect
To get more logs, you can use the following command:
emulator -avd [avd_name] -logcat-output logcat.txt -debug all -verbose
3. Use an android emulator with Greenspector tools
3.1. Change the job.yml file
job: extras: config-skipsetupphone: true
To be able to run an application with the applicationStart gdsl function, there are 2 choices :
Install the app manually through the Play Store application
In the job.yml file, add an url field with the name of the application package. Example :
job: url: com.android.chrome
In the second case, it installs the app at the beginning of the test and uninstalls it at the end.
3.2. Change the config.yml file
target: connection: usb serial: xxxx
The target.serial field corresponds to the emulator id. You can find it by running “adb devices”.
3.3. Run the testrunner
Launch an android emulator
Option 1: open the Device Manager window of Android Studio and click on the triangle
Option 2: start an emulator from the command line (part 2.5)
If you run the testrunner for the first time, you have to run it once without the --no-update option:
On Linux and macOS:
./testrunner -jobFile job.yml -config config.yml
On Windows:
testrunner -jobFile job.yml -config config.yml
On macOS, you may have the following warning:
"testrunner" cannot be opened because the developer cannot be verified.
To fix that, you have to click on the Apple menu, and then on System Settings > Privacy & Security > Allow Anyway
On macOS with M1 chip, you may need to install Rosetta first:
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
Download the android-service executable in 32 bits and its version file : https://dl.greenspector.com/emulator/android-service-files.tar.gz
On macOS with M1 chip, you have to download the android-service executable with arm architecture: https://dl.greenspector.com/emulator/android-service-files-mac-m1.tar.gz
Go to your greenspector cache:
On Linux and macOS:
$HOME/.greenspector
On Windows:
C:\Users\[username]\.greenspector
Replace the android-service and android-service.version files with the downloaded files. You will have to decompress the tar.gz file.
You can now run the testrunner with the --no-update option:
On Linux and macOS:
./testrunner -jobFile job.yml -config config.yml --no-update
On Windows:
testrunner -jobFile job.yml -config config.yml --no-update
If you forget the --no-update option, you have to replace the android-service and android-service.version files again.