Android Emulation Setup [Link]
../ Android Emulation Setup
# Recently I had to re-install my android emulation setup. Since I had
saved notes on how to do it, it was not too hard. In this blog post
I want to show just how easy it is to configure an android emulation
setup from scratch by using only command line tools, with no GUI
applications.
I will be using an archlinux install, but it should not really
matter, as we will use just basic linux commands.
[leo@arch [Link]]$ uname -a
Linux arch 6.9.7-arch1-1 #1 SMP PREEMPT_DYNAMIC Fri, 28 Jun 2024 [Link] +0000 x86_6
Considering also that android requires a working java installation,
make sure you have a java environment in your machine.
[leo@arch [Link]]$ java --version
openjdk 22 2024-03-19
OpenJDK Runtime Environment (build 22)
OpenJDK 64-Bit Server VM (build 22, mixed mode, sharing)
# Downloading the tools
To start off, create an android folder in a custom directory.
cd /tmp
mkdir android
cd android
Let us then download the necessary tools. There are two things in
particular that you need to download:
• platform-tools
wget [Link]
1 of 6 12/7/24, 21:13
Android Emulation Setup [Link]
unzip [Link]
• commandline-tools
wget [Link]
unzip commandlinetools-linux-11076708_latest.zip
For reasons beyond my understanding, there are some specific tweaks
that we need to do before actually using them:
• First, we need to create a latest folder within cmdline-tools,
and we need to move all the files and directories previously
present in that directory within the newly created latest
directory.
cd cmdline-tools
mkdir latest
mv * latest
cd ..
• Then we need to create a platforms folder
mkdir platforms
• Finally, set the ANDROID_HOME environmental variable
export ANDROID_HOME=/tmp/android
Now that we have everything setup, let's use these tools.
Using the tools
First, we can list out all system images using sdkmanager with the
--list option.
[leo@arch android]$ ./cmdline-tools/latest/bin/sdkmanager --list
[=======================================] 100% Computing updates...
Installed packages:
Path | Version | Description | Location
2 of 6 12/7/24, 21:13
Android Emulation Setup [Link]
------- | ------- | ------- | -------
platform-tools | 35.0.1 | Android SDK Platform-Tools 35.0.1 | platform-tools
Available Packages:
Path
-------
add-ons;addon-google_apis-google-15
add-ons;addon-google_apis-google-16
add-ons;addon-google_apis-google-17
...
Notice how for each package we see the path , the version and a
description . Suppose we want to install the system image system-
images;android-34;google_apis;x86_64 . We can do it with the --install
option.
./cmdline-tools/latest/bin/sdkmanager --install "system-images;android-34;google_apis
When executing it for the first time we will have to accept the
terms of service.
[leo@arch android]$ ./cmdline-tools/latest/bin/sdkmanager --install "system-images;an
License android-sdk-license: ] 10% Computing updates...
---------------------------------------
Terms and Conditions
This is the Android Software Development Kit License Agreement
...
January 16, 2019
---------------------------------------
Accept? (y/N): y
[===== ] 13% Downloading x86_64-34_r13.zip...
After we have downloaded it, we can create an Android Virtual Device
(avd) with the avdmanager utility. Before doing that however we need
to download the emulator .
./cmdline-tools/latest/bin/sdkmanager --channel=0 emulator
3 of 6 12/7/24, 21:13
Android Emulation Setup [Link]
During the creation of the device we have to specify the system
image to use (the one we just download) and also a name to identify
the device.
./cmdline-tools/latest/bin/avdmanager create avd -k "system-images;android-34;google_
To make sure the device was properly created, you can list out all
available devices as follows
[leo@arch android]$ ./cmdline-tools/latest/bin/avdmanager list avd
Available Android Virtual Devices:
Name: google-34
Path: /home/leo/.config/.android/avd/[Link]
Target: Google APIs (Google Inc.)
Based on: Android 14.0 ("UpsideDownCake") Tag/ABI: google_apis/x86_64
Sdcard: 512 MB
In our case, specific data for the created device will be found
within $HOME/.config/.android/avd/
[leo@arch android]$ tree -L 2 $HOME/.config/.android/avd/
/home/leo/.config/.android/avd/
├── [Link]
│ ├── [Link]
│ └── [Link]
└── [Link]
2 directories, 3 files
By editing the [Link]/[Link] file, you can change various
things about the emulated environment. For example, to enable the
hardware keyboard, which is very useful, change the [Link]
value from no to yes .
...
[Link] = portrait
[Link] = yes
[Link] = qwerty2
[Link] = yes
...
4 of 6 12/7/24, 21:13
Android Emulation Setup [Link]
Starting the Emulator
To actually start the emulator you can use the emulator utility.
Before doing that however specify using the ANDROID_AVD_HOME env
variable where exactly the files defining your device are found.
export ANDROID_AVD_HOME=$HOME/.config/.android/avd/
In the actual command you have to specify the device within the -avd
attribute. Put the same label you used during device creation.
./emulator/emulator -avd google-34 -scale 0.6 -writable-system
And this is it, you have your emulator working!
5 of 6 12/7/24, 21:13
Android Emulation Setup [Link]
Hope it was useful and interesting, and if it was so, feel free to
subscribe to my english youtube channel!.
Youtube – Hexdump
References
The following references were useful in the creation of the article:
• 0xbro video
• android command line tools
• android platform tools
Go check out 0xbro , he makes useful videos regarding mobile pentest.
Extra - Build Tools
After publishing this post, I've noticed that sometiems build tools
such as zipalign and apksigner are needed. Therefore, you should
also download them:
wget [Link]
unzip build-tools_r34-[Link]
6 of 6 12/7/24, 21:13