Thông thường cách đơn giản để sử dụng Android Emulator là cài đặt Android Studio và tạo thiết bị từ đó. Tuy nhiên Android Studio rất nặng trong khi ta chỉ muốn dùng mỗi Android Emulator thì làm thế nào?
Sau đây là các bước đơn giản để cài đặt Android Emulator mà không cần cài đặt Android Studio.
Mục lục
Tải về bộ công cụ dòng lệnh Android
Tải về file .zip
tương ứng với hệ điều hành đang dùng tại mục Command line tools only trên website Android Studio. Ở đây tôi tải về cho Linux vào thư mục ~/Downloads
.
wget -P ~/Downloads https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
Ta tạo một thư mục chứa bộ công cụ dòng lệnh tại ~/android/cmdline-tools
(trong đó thư mục cuối cmdline-tools là bắt buộc, còn bạn có thể thay ~/android bằng gì cũng được). Giải nén file .zip nói trên vào thư mục này và đổi tên thành latest
.
mkdir -p ~/android/cmdline-tools cd $_ unzip ~/Downloads/commandlinetools-linux-*_latest.zip mv cmdline-tools latest
Cấu trúc thư mục cuối cùng trông như sau:
~ └─ android └─ cmdline-tools └─ latest └─ bin └─ lib └─ NOTICE.txt └─ source.properties
Tiếp theo ta sẽ thiết lập biến môi trường dành cho Android SDK là ANDROID_HOME
trong file .bashrc
. Biến này trỏ vào thư mục chứa thư mục cmdline-tools
(ví dụ ở đây là ~/android
). Ngoài ra ta cũng thiết lập biến PATH trỏ vào thư mục bin
là nơi chứa các lệnh như sau:
~/.bashrc
export ANDROID_HOME=~/android export PATH=${ANDROID_HOME}/cmdline-tools/latest/bin:${PATH}
Đại khái như vậy là cài đặt xong bộ công cụ dòng lệnh. Tuy nhiên để sử dụng được bộ công cụ này thì ta cần có Java Development Kit.
Tải Java Development Kit (JDK)
Với Android command line tools cũ (version 8 trở xuống), ta hay sử dụng JDK 8. Tuy nhiên từ phiên bản 9, nếu tiếp tục dùng phiên bản JDK này sẽ dính lỗi:
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/prefs/AndroidLocationsProvider has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
Vì vậy, ta hãy tải về phiên bản JDK mới nhất, ví dụ JDK 19, và giải nén vào thư mục nào đó ví dụ ~/jdk
.
wget -P ~/Downloads https://download.oracle.com/java/19/archive/jdk-19.0.2_linux-x64_bin.tar.gz mkdir -p ~/jdk cd $_ tar xf ~/Downloads/jdk-*_linux-x64_bin.tar.gz
Ta sẽ thiết lập biến môi trường dành cho JDK là JAVA_HOME
trong file .bashrc
. Biến này trỏ vào thư mục chứa thư mục JDK vừa giải nén. Ngoài ra ta cũng thiết lập biến PATH trỏ vào thư mục bin
là nơi chứa các lệnh java như sau:
~/.bashrc
export JAVA_HOME=~/jdk/jdk-19.0.2 export PATH=${JAVA_HOME}/bin:${PATH}
Lưu lại .bashrc
rồi mở một terminal mới. Hãy thử kiểm tra phiên bản java đang sử dụng:
$ java -version java version "19.0.2" 2023-01-17 Java(TM) SE Runtime Environment (build 19.0.2+7-44) Java HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)
Tải về các package cần thiết
Sử dụng lệnh sdkmanager
để hiển thị danh sách các package có thể tải về:
sdkmanager --list
Từ danh sách trên, ta cần tải về các package cần thiết, bao gồm:
- Bộ công cụ Android SDK
platform-tools
. - Bộ thư viện phát triển
platforms;android-*
. - Hệ điều hành Android trên emulator
system-images;android-*;...
Trong đó *
là API level. Bạn có thể chọn những package khác nếu muốn nhưng nhớ gõ đúng tên package nhé.
Ví dụ sau đây tôi tải về API level 33 (tương ứng Android 13) với system image có chứa Google Play Store dành cho CPU x86 64-bit.
sdkmanager "platforms;android-33" "system-images;android-33;google_apis_playstore;x86_64" "platform-tools"
Khi gọi lệnh này, trước tiên ta sẽ cần Đồng ý một loạt các license (cứ OK thôi đừng ngại ngần, cái này chỉ gặp lần đầu tiên).
Sau quá trình tải về và cài đặt, cấu trúc thư mục có sự thay đổi như sau:
~ └─ android └─ cmdline-tools └─ latest └─ bin └─ lib └─ NOTICE.txt └─ source.properties └─ emulator └─ licenses └─ patcher └─ platforms └─ platform-tools └─ sdk └─ system-images
Đã xuất hiện thêm 2 thư mục chứa dòng lệnh nữa là emulator
và platform-tools
. Vì thế tôi lại điều chỉnh biến môi trường PATH trỏ đến 2 thư mục này trong .bashrc
:
~/.bashrc
export PATH=${ANDROID_HOME}/emulator:${ANDROID_HOME}/platform-tools:${PATH}
Mở lại terminal mới để cập nhật lại biến môi trường.
Tạo Android Virtual Device (AVD)
Ta sẽ tạo một “thiết bị ảo” Android sử dụng system image ta vừa tải bằng sdkmanager
ở trên. Ở đây tên AVD mới ta sẽ đặt là test_avd_33
.
Mở terminal bằng dòng lệnh như sau:
$ avdmanager create avd -n test_avd_33 -k "system-images;android-33;google_apis_playstore;x86_64"
Sau khi tạo xong, ta có thể kiểm tra danh sách các AVD bằng lệnh
$ avdmanager list avd Available Android Virtual Devices: Name: test_avd_33 Path: /home/icreativ/.android/avd/test_avd_33.avd Target: Google Play (Google Inc.) Based on: Android 13.0 (Tiramisu) Tag/ABI: google_apis_playstore/x86_64 Sdcard: 512 MB
Thư mục chứa các AVD mặc định đặt tại ~/.android/avd
.
Cuối cùng ta khởi chạy AVD vừa tạo:
emulator -avd test_avd_33
Sẽ mất chút thời gian cho lần khởi động đầu tiên nhé.
Lưu ý
Tùy biến Android Emulator
Lệnh emulator
có rất nhiều tham số tùy biến cho máy ảo Android như số nhân CPU, dung lượng RAM, thẻ nhớ, hiển thị và kết nối tới các thiết bị ngoại vi. Ta có thể gõ lệnh với tham số --help
để tham khảo.
emulator --help
Ngoài ra ta có thể chỉnh sửa cấu hình của AVD trong file config.ini
đặt tại thư mục chứa AVD là $HOME/.android/avd/<AVD name>.avd
.
Sửa lỗi nút Back, Home, Overview không hoạt động
Mở file config.ini trong thư mục của AVD tương ứng. Như với AVD có tên test_avd_33
vừa tạo ở trên, file này đặt tại ~/.android/avd/test_avd_33.avd/config.ini
.
Tìm khai báo hw.keyboard
, đổi từ giá trị no
thành giá trị yes
. Lưu lại file config.ini
rồi khởi động lại emulator.
Hệ điều hành Windows
Bạn cần cài đặt thêm Intel Hardware Accelerated Execution Manager (HAXM), tắt tính năng Hyper-V và bật chức năng hỗ trợ Virtualization trong BIOS để có thể khởi chạy ổn được Emulator.
Hệ điều hành Linux
Do Android Emulator sử dụng KVM, nếu có một máy ảo khác (ví dụ VirtualBox) đang chạy sẽ gặp lỗi:
ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy qemu-system-x86_64: failed to initialize KVM: Device or resource busy
Bạn cần tắt máy ảo đó đi để sử dụng Android Emulator.