Memasang ARM Translation di Genymotion
Pertama kali mengenal Genymotion adalah kala saya ingin menjalankan WhatsApp di komputer. Genymotion adalah emulator Android yang mengambil dasar dari proyek android-x86 dengan beberapa perbaikan. Meski ditujukan bagi para pengembang aplikasi Android yang ingin secara cepat menguji aplikasi tanpa harus memiliki banyak perangkat Android, namun kalangan awam bisa mencobanya secara gratis dengan pengurangan beberapa fitur.
Umumnya perangkat Android menggunakan prosesor ARM, sementara mayoritas komputer pribadi menggunakan arsitektur x86_64. Untuk menjembatani kesenjangan arsitektur ini, pada masa-masa awal rilisnya Genymotion menyediakan sebuah pustaka penerjemah agar instruksi aplikasi Android yang umumnya hanya mengerti arsitektur ARM dapat dimengerti dan dijalankan dalam sistem berarsitektur x86. Nama pustaka ini kalau tidak salah adalah ARM translation. Namun sayangnya, ARM translation ini tidak berumur lama karena sepertinya terbentur masalah lisensi, atau mungkin hanya dijadikan kelengkapan pada Genymotion versi berbayar. Entahlah.
Dengan absennya pustaka ARM translation ini, mengakibatkan beberapa aplikasi Android tidak lagi bisa dipasang di Genymotion.
Beruntung, seiring kian maraknya perangkat Android yang berprosesor x86 dari Intel, jumlah aplikasi yang hanya bisa berjalan di ARM kian menyusut. Namun tetap saja ada beberapa yang tetap menolak dipasang di x86, misalnya aplikasi myIM3 yang bagi pengguna layanan Indosat seperti saya, mau tidak mau mesti dipasang jika ingin mendapatkan layanan Indosat sepenuhnya.
Tanpa sengaja, saya menemukan proyek yang menjadi dasar dari ARM translation untuk x86; libhoudini
. Rupanya libhoudini
ini adalah produk dari proyek android-x86 yang adalah upstream Genymotion.
Tidak lagi berpanjang lebar, berikut adalah cara memasang libhoudini
ke dalam Genymotion agar kita bisa menjalankan aplikasi Android yang dikhususkan untuk arsitektur ARM.
Clone salah satu repo GitHub yang menyediakan
libhoudini
.git clone https://github.com/rrrfff/libhoudini
Jalankan Genymotion.
Buka terminal di komputer dan jalankan perintah berikut untuk masuk ke dalam shell Android Genymotion.
adb shell
Tujuan masuk ke
adb shell
ini adalah untuk mengaitkan ulang partisi/system
agar bisa menyimpan berkas-berkas pustakalibhoudini
ke dalamnya. Jadi pastikan kita login sebagai root, jika tidak, jalankan perintahsu
agar kita login ke root shell.Partisi
/system
di sistem Android biasa dikaitkan sebagai “hanya-baca” (read-only). Agar bisa menambahkanlibhoudini
ke partisi ini maka kita perlu mengaitkannya ulang menjadi “baca-tulis” (read-write).mount -o rw,remount /system
Keluar dari shell. Karena tadi kita login sebagai root, keluar dahulu dari root.
exit
Baru kemudian keluar dari shell.
exit
Dalam folder hasil clone di atas terdapat dua buah folder yang sepertinya adalah versi
libhoudini
. Kita pilih versi paling tinggi saja dan berpindah ke dalamnya.cd libhoudini/4.0.8.45720
Salin berkas-berkas
libhoudini
ke dalam sistem Android Genymotion.adb push system /
Setelah proses penyalinan selesai, kita kembali masuk ke shell Android genymotion untuk mengaktifkan
libhoudini
.adb shell su enable_houdini
Mestinya kini ARM translation telah bisa bekerja.
Keluar dari shell.
exit exit
Reboot Android Genymotion.
adb reboot
That’s it. Pustaka libhoudini
telah terpasang dan mestinya kita telah bisa memasang aplikasi Android yang dikhususkan arsitektur ARM.
Jika ternyata ada aplikasi tertentu yang membandel enggan dipasang, atau memang selalu crash ketika dijalankan, coba pasang pustaka libhoudini
lain masih dari repo yang sama.
Pada repo https://github.com/rrrfff/libhoudini, selain berkas-berkas yang telah disinggung di atas, juga terdaftar beberapa berkas berbentuk squash filesystem yang isinya adalah libhoudini
juga.
Jika ingin memasang libhoudini
dari berkas-berkas squashfs tersebut, ikuti petunjuk berikut:
- Unduh berkas sfs yang dibutuhkan. Karena Genymotion adalah sistem x86, unduh berkas versi x. Sesuaikan juga dengan versi Androidnya, apakah 6, 7 atau 8. Misal hendak mengunduh berkas houdini untuk Nougat, maka berkas yang harus diunduh adalah http://dl.android-x86.org/houdini/7_x/houdini.sfs.
- Kaitkan berkas
houdini.sfs
pada sebuah titik kait, misalnya/tmp/houdini
.sudo mount houdini.sfs /tmp/houdini
- Ikuti langkah 1 sampai 4 dari proses memasang
libhoudini
di atas. - Buat sebuah folder untuk menampung berkas-berkas
libhoudini
.mkdir /system/lib/arm
- Ikuti langkah 5 dan 6 dari proses memasang
libhoudini
di atas. - Salin folder
bin
ke Android Genymotion.adb push system/bin /system
- Salin isi
houdini.sfs
yang telah dikaitkan tadi.adb push /tmp/houdini/* /system/lib/arm
- Ikuti langkah 8 hingga 10 dari proses memasang
libhoudini
di atas.
What a labourish task isn’t it?
Kalau memang karena sesuatu hal akan sering melakukan langkah di atas, akan lebih baik untuk membuat sebuah skrip otomasi. Atau buat saja sebuah snapshot pada VirtualBox Android Genymotion-nya.
Addendum 20181012: ARM Translation
Tautan libghoudini
untuk Android Oreo x86 pada repo di atas ternyata 404, alias tidak ditemukan. Setelah beberapa lama mengubek-ubek internet, akhirnya terantuk laman http://23pin.logdown.com/archives, khususnya artikel Genymotion Tool Collections.
Dari artikel tersebut kita akan mendapati sebuah folder di MEGA yang berisi ARM Translation untuk Android 5, 6 dan 8. Use at your own risks!
Cara pemasangan ARM Translation ini mudah saja. Berikut salah satu caranya:
- Jalankan Genymotion dan buat sebuah perangkat.
- Unduh ARM Translation sesuai perangkat Android yang tadi dibuat. Misal, jika tadi membuat perangkat Android 8 maka unduh
ARM_Translation_Oreo.zip
. - Buka Settings Genymotion dan klik bilah ADB.
- Pilih Use Genymotion Android tools (default).
- Jalankan perangkat Android yang dibuat pada langkah 1.
- Seret dan jatuhkan (drag and drop) berkas
ARM_Translation_Oreo.zip
ke jendela Android 8 Genymotion dan ikuti wisaya selanjutnya. - Reboot perangkat Android.
That’s it.