syamsu.dev

Gagal Menjalankan Emulator Android di Linux

2017-12-20

Android Emulator Malam ini, saya melakukan update development tools Android. Dan sebuah keanehan terjadi. Selesai melakukan update, emulator Android saya gagal jalan. Hmm, ini mengingatkan saya pada error yang pernah saya alami. Saya pernah menemukan penyebabnya dengan cara menjalankan emulator dari command-line. Sebagai programmer, pastinya hal ini menjadikan kita gelisah dan mengganggu pikiran untuk melanjutkan kegiatan pemrograman.

Tenang, sebenarnya solusinya sederhana, kok. Langkah pertama, kita perlu tahu terlebih dulu apa nama AVD (Android Virtual Device) yang akan kita jalankan.

Masuk ke direktori di mana Android SDK-mu berada.

1cd /path/to/android/sdk/emulator/

2./emulator -list-avds

Akan muncul daftar nama AVD yang kita miliki. Contohnya seperti ini

1Nexus_4_API_26

2Nexus_7_2012_API_21_2

3Samsung_J7_API_25

Nah, setelah itu kita coba jalankan emulator memakai salah satu nama AVD di atas.

./emulator @Samsung_J7_API_25

Jangan lupa ada karakter @ keongnya ya :D

Muncul pesan error kurang lebih seperti berikut

1libGL error: unable to load driver: i965_dri.so

2libGL error: driver pointer missing

3libGL error: failed to load driver: i965

4libGL error: unable to load driver: i965_dri.so

5libGL error: driver pointer missing

6libGL error: failed to load driver: i965

7libGL error: unable to load driver: swrast_dri.so

8libGL error: failed to load driver: swrast

9X Error of failed request: BadValue (integer parameter out of range for operation)

10Major opcode of failed request: 155 (GLX)

11Minor opcode of failed request: 24 (X_GLXCreateNewContext)

12Value in failed request: 0x0

13Serial number of failed request: 68

14Current serial number in output stream: 69

Kalau kita perhatikan, error ini bermula dari tidak ditemukannya driver i965_dri.so. Ini disebabkan oleh gagalnya emulator mengakses perangkat keras GPU (Graphical Processing Unit) kita karena menggunakan driver bawaan dari Android SDK.

Untuk mengakses GPU, kita perlu membuat supaya emulator menggunakan driver native dari sistem operasi. Hanya dengan mengubah nama berkas driver bawaan Android SDK akan membuat emulator mencari driver dari sistem.

Pada sistem berarsitektur 64bit

cd /path/to/android/sdk/emulator/lib64/libstdc++/

Pada sistem berarsitektur 32bit

cd /path/to/android/sdk/emulator/lib/libstdc++/

Kemudian ubah nama library-nya

mv libstdc++.so.6 libstdc++.so.6.bak

Jika ragu mana arsitektur sistemmu, ubah saja nama berkas di kedua direktori tersebut ¯\_(ツ)\_/¯

Dengan begini, emulator akan mencoba mencari driver native GPU yang terpasang di sistemmu :D . Seharusnya sampai sini sudah berhasil. Jika masih tidak bisa jalan. Coba periksa apakah library mesa sudah terpasang atau belum.

Selamat melanjutkan pengembangan aplikasi :D

android, android emulator, pemrograman