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.

  1. Clone salah satu repo GitHub yang menyediakan libhoudini.
    git clone https://github.com/rrrfff/libhoudini
    
  2. Jalankan Genymotion.
  3. 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 pustaka libhoudini ke dalamnya. Jadi pastikan kita login sebagai root, jika tidak, jalankan perintah su agar kita login ke root shell.
  4. Partisi /system di sistem Android biasa dikaitkan sebagai "hanya-baca" (read-only). Agar bisa menambahkan libhoudini ke partisi ini maka kita perlu mengaitkannya ulang menjadi "baca-tulis" (read-write).
    mount -o rw,remount /system
    
  5. Keluar dari shell. Karena tadi kita login sebagai root, keluar dahulu dari root.
    exit
    
    Baru kemudian keluar dari shell.
    exit
    
  6. 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
    
  7. Salin berkas-berkas libhoudini ke dalam sistem Android Genymotion.
    adb push system /
    
  8. 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.
  9. Keluar dari shell.
    exit
    exit
    
  10. 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:

  1. Jalankan Genymotion dan buat sebuah perangkat.
  2. Unduh ARM Translation sesuai perangkat Android yang tadi dibuat. Misal, jika tadi membuat perangkat Android 8 maka unduh ARM_Translation_Oreo.zip.
  3. Buka Settings Genymotion dan klik bilah ADB.
  4. Pilih Use Genymotion Android tools (default).
  5. Jalankan perangkat Android yang dibuat pada langkah 1.
  6. Seret dan jatuhkan (drag and drop) berkas ARM_Translation_Oreo.zip ke jendela Android 8 Genymotion dan ikuti wisaya selanjutnya.
  7. Reboot perangkat Android.

That's it.