Mempercepat Emulator Android di Arsitektur Intel


* Artikel ini dipersembahkan oleh Intel Developer Zone. Untuk Mengetahui lebih lanjut tentang membuat aplikasi Android di Arstitektur Intel, kunjungi Intel Developer Zone for Android. Artikel asli dari artikel ini dapat dilihat di link ini.

Jika kamu seorang pengembang aplikasi Android dan tidak senang dengan performa dari emulator Android, artikel ini cocok untuk kamu. Sudah sering terdapat keluhan dari pengembang aplikasi Android tentang lambat dan memusingkannya emulator Android saat ini. Seharusnya ini tidaklah terjadi.

Jika kamu menggunakan komputer generasi cukup baru yang berprosesor Intel dan dengan Intel Virtualization Technology yang aktif serta menggunakan Microsoft Windows atau Apple Mac OS, maka kamu dapat menggunakan Intel Hardware Accelerated Execution Manager (Intel HAXM) atau KVM untuk Linux untuk mempercepat emulator Android dengan mudah sehingga mempercepat pengetesan dan debugging aplikasi Android kamu.

Artikel ini menjelaskan semua langkah yang diperlukan untuk mempercepat emulator Android dan bagaimana dapat bekerja dengan Intel HAXM. Lalu akan dijelaskan juga tentang bagaimana cara menggunakan NDK untuk meng-compile kode x86 dan cara yang benar untuk mengajukan APK yang menggunakan library x86 ke Google Play.

Intel HAXM juga dapat digunakan untuk mempercepat emulator Tizen, namun ini di luar lingkup artikel ini. Untuk informasi lebih lanjut tentang itu, bisa mengunjungi bagian SDK di tizen.org.

[toc]

1. Pengenalan

Artikel ini akan membimbing kamu untuk menginstal Intel Hardware Execution Manager (Intel HAXM), sebuah hardware-assisted virtualization engine (hypervisor) yang menggunakan Intel Virtualization Technology (Intel VT) untuk mempercepat pengembangan aplikasi Android di Windows. Artikel ini juga akan menjelaskan tentang bagaimana caranya mengeset hardware-assisted KVM di Linux dan juga metode terbaik untuk meng-compile secara native dan mengajukan aplikasi x86 ke Google Play.

2. Instalasi

2.1. Prasyarat

  • Android SDK harus sudah terinstal.
  • Komputer kamu harus berprosesor Intel yang sudah mendukung fungsionalitas Intel VT-x, EM64T, dan Execute Disable (XD) Bit. Kesemua hal tersebut diaktifkan melalui BIOS.

2.2. Instalasi di Windows

Setelah kamu menginstal Android SDK, buka SDK Manager. Di bagian “extras”, kamu dapat melihat Intel HAXM. Centang boxnya dan klik tombol “Install packages…”. Setelah kamu menginstal paketnya, statusnya akan terbaca “Installed”, hal ini sebetulnya tidak benar karena bukan seperti itu kasusnya. SDK-nya hanya mengkopi file instalasi Intel HAXM ke komputer kamu dan terserah kamu untuk menginstalnya atau tidak.

Untuk menginstal Intel HAXM, cari IntelHAXM.exe di komputer kamu (atau IntelHAXM.dmg di Mac OS X). Jika kamu membiarkan semua konfigurasi secara default, file-nya seharusnya terletak di “C:\Program Files\Android\android-sdk\extras\Intel\Hardware_Accelerated_Execution_Manager\IntelHAXM.exe”.

Intel HAXM hanya dapat bekerja melalui kombinasi dengan salah satu system image prosesor Intel Atom x86 yang mana tersedia untuk Android 2.3.3 (API 10), 4.0.3 (API 15), 4.1.2 (API 16), 4.2.2 (API 17). System image Intel ini dapat diinstal dengan cara yang sama ketika menginstal image berbasis ARM melalui SDK Manager.

Ketika kamu menjalakan file instalasi IntelHaxm, akan muncul tampilan sambutan seperti di bawah ini:

Kamu dapat mengatur seberapa besar RAM yang dialokasikan untuk Intel HAXM. Setelah kamu melakukan itu, klik “Next”. Layar selanjutnya akan mengkonfirmasi alokasi memori. Jika semuanya sudah sesuai dengan yang kamu inginkan, klik “Install”.

Agar dapat menginstal Intel HAXM, kamu harus sudah mengaktifkan Intel VT-x di BIOS, jika tidak maka akan muncul eror seperti di bawah ini ketika sedang menginstal:

Jika kamu mendapatkan eror seperti di atas, masuk ke BIOS komputer kamu dan aktifkan fiturnya.

Opsi kedua untuk mengunduh Intel HAXM dan x86 Emulator system image adalah dengan langsung menuju ke halaman web: http://software.intel.com/en-us/android dan unduh komponen-komponen yang diperlukan dari situ.

2.3. Instalasi di Linux

Langkah-langkah untuk mempercepat emulator Android di Linux berbeda dengan di Windows maupun di Mac OS X. Karena Intel HAXM tidak kompatibel dengan Linux, maka kamu harus menggunakan KVM (Kernel-based Virtual Machine). Langkah-langkah di bawah ini dilakukan menggunakan Ubuntu 12.04 dan mungkin akan sedikit berbeda dibandingkan dengan distro Linux lainnya.

Seperti di Windows (dan Mac OS X), pertama kamu harus mengunduh Android SDK dari situs Android Developers. Kamu akan menemukan paket ADT (Android Development Tool) yang berisi Eclipse IDE dan Android SDK. Unduh file zip dan esktrak di komputer Linux kamu. Pastikan kamu memilih versi yang benar sesuai dengan distro Linux kamu, baik itu 32 atau 64 bit. Kamu dapat mengeceknya dengan mudah menggunakan perintah berikut:

file /sbin/init

Sebelum kamu mulai menginstal paket yang diperlukan oleh KVM, direkomendasikan untuk kamu agar memastikan bahwa kamu sudah memiliki repositori terbaru dan kamu dapat mengeceknya dengan mengetikkan perintah ini:

sudo apt-get update

2.3.1. Instalasi KVM

Untuk menginstal dan menjalankan KVM, yang mana merupakan solusi virtualisasi lengkap untuk Linux di perangkat x86 (contohnya Intel VT), kamu pertama-tama harus mengecek apakah komponen CPU kamu mendukung hardware virtualization. Kamu dapat mengeceknya dengan mengetikkan perintah berikut ini:

egrep –c ‘(vmx|svm)’ /proc/cpuinfo

Jika hasilnya 0, itu artinya CPU kamu tidak mendukung hardware virtualization yang mana diperlukan untuk menjalankan KVM. Jika kamu mendapatkan hasil 1 atau lebih, itu artinya kamu siap untuk lanjut, namun tetap pastikan hardware virtualization sudah diaktifkan di BIOS (liat bagian 2.2).

Selanjutnya, kamu perlu menginstal KVM kecuali jika kamu sudah menginstalnya sebelumnya. Kamu dapat mengecek apakah prosesor kamu mendukung KVM atau tidak dengan mengetikkan perintah di bawah ini:

kvm-ok

Jika kamu memiliki KVM, kamu akan melihat ini:

INFO: Your CPU supports KVM extensions
INFO: /dev/kvm exists
KVM acceleration can be used”

Jika tidak, maka kamu akan melihat seperti di bawah ini, kamu harus masuk ke BIOS dan mengaktifkan Intel VT:

INFO: KVM is disabled by your BIOS
HINT: Enter your BIOS setup and enable Virtualization Technology (VT),
and then hard poweroff/poweron your system
KVM acceleration can NOT be used

Langkah berikutnya adalah menginstal KVM dan beberapa paket lainnya yang diperlukan. Untuk melakukan hal ini, ketikkan perintah di bawah ini:

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Di layar selanjutnya, kamu dapat memilih “No configuration” jika kamu ingin konfigurasi kamu tidak diubah:

Selanjutnya, tambahkan username kamu ke grup KVM dan grup libvirtd. Untuk melakukan hal ini, ketikkan perintah di bawah ini:

sudo adduser your_user_name kvm
sudo adduser your_user_name libvirtd

Setelah proses instalasi, login ulang agar perubahannya diterapkan. Kamu dapat mengetes instalasinya dengan mengetikkan perintah berikut:

sudo virsh -c qemu:///system list

Kamu sekarang siap untuk ke tahap selanjutnya yaitu membuat dan menjalankan AVD (Android Virtual Device). Prosedur ini sama baik di Linux maupun di Windows.

2.4. Membuat AVD (Android Virtual Device)

Setelah menginstal SDK dan Intel HAXM (atau KVM di Linux), kamu sekarang dapat membuat perangkat virtual yang memiliki hardware-accelerated emulation. Untuk melakukan ini, masuk ke AVD Manager dan buat perangkat baru. Pastikan kamu memilih Intel Atom (x86) sebagai CPU/ABI. Pilihannya hanya akan tampil di drop-down menu jika kamu sudah menginstal Intel x86 system image. Untuk semakin memperlancar grafis, ganti ke emulasi GPU ketika menciptakan AVD.

Klik di tombol “New” dan buat x86 AVD kamu. Pastikan kamu memilih API yang didukung oleh x86 system image, CPU/ABI diset ke x86, dan kamu mengaktifkan emulasi GPU (OpenGL ES). Setelah kamu melakukannya, klik tombol “Create AVD” untuk membuat AVD.

Kamu dapat menjalankan x86 AVD dengan mengklik tombol “Start”, lalu tombol “Launch”.

Jika kamu sukses dengan instalasinya, ketika emulator dimulai, kamu akan melihat dialog box yang menampilkan bahwa Intel HAXM sedang berjalan di mode fast virtual.

Jika kamu perlu meyakinkan lebih jauh mengenai apakah kamu sedang menggunakan x86 system image, kamu dapat mengecek detailnya di “About phone” di dalam emulatornya.

Kenaikan performa yang dapat kamu alami dengan Intel HAXM atau KVM bergantung pada PC, drive, memori, dan lainnya namun seharusnya kenaikan performa berkisar antara 5 atau 10 kali. Gambar di bawah ini akan memperlihatkan perbandingan masing-masing dari AVD yang menggunakan x86/HAXM dengan AVD yang berbasis ARM. x86 AVD masuk ke lock screen dalam waktu 15 detik sedangkan AVD non-Intel memerlukan 40 detik, perbedaan yang mencolok.

HAXM - 6

[Kenaikan performa yang dapat kamu alami dengan Intel HAXM (atau KVM) seharusnya berada di antara 5 hingga 10 kali bergantung pada konfigurasi sistem. Software dan workload yang digunakan pada pengetesan performa mungkin sudah dioptimalisasi untuk mikroprosesor Intel. Pengetesan performa, seperti SYSmark dan MobileMark, diukur menggunakan sistem komputer, komponen, software, operasi, dan fungsi tertentu. Pengubahan apapun pada apapun faktor-faktor tersebut mungkin akan mengubah hasil. Disarankan kamu konsultasi informasi dan pengetesan performa untuk membantu kamu dalam mengevaluasi penuh produk kamu, termasuk performa dari produk tersebut dibandingkan dengan produk lainnya. Konfigurasi: Mac Book Pro digunakan untuk pengetesan ini. Untuk informasi lebih lanjut, kunjungi http://www.intel.com/performance]

3. Metode Terbaik

3.1. Mengetes aplikasi kamu menggunakan emulator dari Eclipse

Baik itu aplikasi berbasis NDK maupun aplikasi Dalvik, kamu dapat menggunakan Intel HAXM untuk mempercepat emulator di mana kamu melakukan pengetesan. Jika kamu mengembangkan aplikasinya menggunakan Eclipse, kamu dapat mengikuti langkah-langkah mudah di bawah ini untuk memastikan bahwa kamu menggunakan Intel HAXM ketika menjalankan emulator.

Pertama, pastikan kamu membuat AVD sesuai yang dijelaskan di langkah 2. Jika AVD kamu sudah siap, masuk ke Run As -> Run Config seperti yang diperlihatkan di bawah ini:

Kamu akan masuk ke layar seperti di bawah ini:

HAXM - 3

Di sini, kamu dapat memilih AVD yang kamu mau dengan mencentang di boksnya. Setelah kamu membuat AVD kamu dan mengeset kongifurasinya, mulai compile proyek kamu dan debug dengan menggunakan emulatornya melalui Run As -> Android Application. Ini akan secara otomatis meluncurkan hardware-accelerated AVD.

3.2. Mengajukan banyak APK untuk ABI yang berbeda vs. Mengajukan fat binaries ke Google Play

Dulu, biasanya ketika kita mengajukan fat binary untuk aplikasi kita, yang mana berisi semua file library dan NDK, tidak dapat dibedakan untuk tiap arsitektur. Itu artinya semua pengguna harus mengunduh APK secara keseluruhan yang berisi file yang tidak relevan dengan arsitektur tertentu, contoh pengguna x86 akan memiliki kode ARM dan juga sebaliknya. Kejelekan dari ini adalah kita akan memiliki fat binary di mana pengguna diharuskan untuk mengunduh data yang besar yang tidak dapat digunakan di perangkat mereka. Hal ini tidak masalah jika file APK-nya berukuran kurang dari 10 atau 20 MB.

Intel/Google sekarang telah mengimplementasikan mekanisme filtrasi CPU, yang artinya kamu dapat mengajukan banyak APK yang berisi library berbeda sesuai dengan tiap arsitektur dengan mengikuti kode versioning yang disarankan di bawah ini:

Angka pertama menunjukkan ABI, contoh 6 untuk x86; lalu level API yang ditargetkan, contoh 11; ukuran layar, 13; dan versi dari aplikasi kamu, 3.1.0.

Pastikan bahwa kamu memiliki minimal nomor versi 8 digit dan tetapkan digit pertama tertinggi untuk versi x86. Di contoh di atas, ditetapkan 6 untuk x86, 2 untuk ARMv7, dan 1 untuk ARMv5TE. Dengan melakukan hal itu akan membuat x86 sebagai versi yang dipilih untuk perangkat x86 dan versi ARM untuk perangkat ARM.

Dengan mengikuti pedoman ini, kamu dapat memastikan bahwa pengguna kamu mendapatkan performa terbaik melalui perangkat mereka. Tambahan lagi, kamu dapat mencegah pengguna menggunakan sebuah aplikasi di perangkat tertentu dikarenakan masalah translasi kode.

Untuk info lebih lanjut dapat dilihat di sini: http://software.intel.com/en-us/articles/google-play-supports-cpu-architecture-filtering-for-multiple-apk.

3.3. Compile NDK kamu untuk x86

Bagian ini akan menunjukkan bagaimana kamu dapat meng-compile aplikasi NDK kamu untuk x86.

Agar aplikasi berbasis NDK kamu dapat berjalan di x86 AVD, kamu harus meng-compile library NDK kamu untuk arsitektur x86. Untuk melakukan hal tersebut, ikuti langkah-langkah mudah berikut ini:

Buka command prompt dan navigasikan ke folder yang berisi file NDK kamu seperti di bawah ini:

HAXM - 4

Pastikan kamu sudah mengeset Environment Variable Path agar kamu dapat menggunakan skrip ndk-build dari mana saja.

3.3.1. Menambahkan lokasi NDK ke Environment Variable kamu

Agar dapat mengeset environment variable untuk NDK, kamu perlu mengklik kanan di Computer, dan pilih Properties. Masuk ke Advanced system settings dan cari Environment variables. Pilih Path dan klik Edit. Pada akhir teks “Variable Value”, tambahkan lokasi folder root dari NDK kamu yang berisi file ndk-build.cmd seperti yang diperlihatkan pada gambar di bawah ini:

HAXM - 5

3.3.2. Meng-compile dengan NDK

Setelah kamu bernavigasi dengan menggunakan command prompt ke folder NDK kamu, eksekusi perintah berikut:

ndk-build APP_ABI:=all

Untuk meng-compile untuk arsitektur tertentu, ganti “all” dengan arsitektur tujuan. Contoh:

ndk-build APP_ABI:=armeabi armeabi-v7a x86 mips

Pastikan kamu me-refresh proyek kamu di Eclipse agar mendapatkan kongifurasi terbaru, contoh folder terbaru yang dihasilkan oleh skrip ndk-build. Di folder “libs” proyek kamu, kamu seharusnya sudah dapat melihat empat folder, satu untuk setiap arsitektur.

Sekarang kamu sudah siap untuk menggunakan x86 AVD untuk aplikasi kamu.

3.3.3. Cara lain untuk meng-compile dengan NDK

Cara lain untuk men-compile kode native untuk semua arsitektur, termasuk x86, adalah dengan mengubah file Application.mk kamu yang dapat kamu lihat di folder jni. Jika kamu tidak memilki file Application.mk, kamu dapat membuatnya sendiri dan tambahkan instruksi di bawah ini:

APP_ABI:=armeabi armeabi-v7a x86 mips

Dengan ini, ketika kamu menjalankan file batch-nya, contoh skrip ndk-build, itu akan meng-compile library untuk semua arsitektur yang tersedia.

Untuk kemudahan penggunaan, daripada menulis seluruh arsitekturnya, kamu cukup dapat menulis “all”:

APP_ABI:=all

* Kunjungi Intel Developer Zone for Android untuk mengetahui lebih lanjut. Artikel asli dari artikel ini dapat dilihat di link ini.