Please Add Preloader

Menurut saya, Android development adalah salah satu proses development yang berat: berat di pikiran dan perangkat. Paling tidak bagi saya, yang biasanya hanya develop aplikasi-aplikasi backend menggunakan bahasa pemrograman yang ringan seperti Golang/Typescript.

Banyak yang harus disiapkan bahkan sebelum proses development dimulai, seperti:

  • Install JDK
  • Install Android Studio
  • Install Android emulator
  • Install Flutter SDK

Sebelum mulai develop, laptopnya udah “engap” duluan. Laptop “engap” itu yang melatarbelakangi rasa penasaran saya dan akhirnya lahirlah artikel ini.

Akhirnya saya penasaran konsul ke AI (bukan Ahmad Imanudin), bisa tidak kalau misal instal program-program beratnya di server terus laptop saya cuma tinggal akses source code-nya. Kebetulan kan di markas juga ada server PVE yang spesifikasinya lumayan.

Ternyata bisa, dan gini caranya:

Kebutuhan

Sebelum mulai, pastikan server kamu memenuhi kriteria berikut:

  1. OS: Ubuntu 22.04 LTS atau distro Linux modern lainnya.
  2. KVM Support: Ini wajib. Karena kita akan menjalankan emulator, CPU server harus mendukung virtualisasi (VT-x atau AMD-V).
  3. RAM: Minimal 8GB (Android Emulator cukup makan memori).
  4. Akses SSH ke servernya.
  5. Akses Root/Sudo.

Langkah 1: Cek KVM

Langkah pertama adalah memastikan modul KVM aktif di server. Jalankan perintah:

kvm-ok

Jika belum ada, instal pendukungnya:

sudo apt update
sudo apt install -y cpu-checker qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

Tips Penting: Agar user kamu (non-root) bisa menjalankan emulator tanpa sudo, pastikan user kamu sudah masuk ke grup kvm dan libvirt dengan perintah ini:

sudo usermod -aG kvm $USER
sudo usermod -aG libvirt $USER

(Catatan: Kamu mungkin perlu logout dan login SSH kembali agar perubahan grup ini aktif).

Langkah 2: Instalasi Java (OpenJDK)

Android SDK membutuhkan Java. Install versi OpenJDK 17 yang stabil untuk Flutter saat ini.

sudo apt install -y openjdk-17-jdk

Verifikasi dengan java -version.

Langkah 3: Setup Android Command Line Tools

Karena tidak pakai Android Studio (GUI), maka harus download cmdline-tools secara manual.

Buat direktori untuk Command Line Tools:

mkdir -p ~/android-sdk/cmdline-tools && cd ~/android-sdk/cmdline-tools

Download versi terbaru di Android Developer Website. Kemudian ekstrak hasil downloadnya, seperti contoh dibawah ini (sesuaikan linknya dengan yang paling baru):

wget -c [https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip](https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip)
unzip commandlinetools-linux-*.zip
mv cmdline-tools latest

Validasi, pastikan direktori sudah seperti ini:

# $ ls ~/android-sdk/cmdline-tools/latest/
# bin  lib  NOTICE.txt  source.properties

Langkah 4: Konfigurasi Environment Variables

Tambahkan path berikut ke file ~/.bashrc atau ~/.zshrc:

Saya pakai bash, jadi:

vi ~/.bashrc

Paling bawah tambahkan:

export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$HOME/flutter/bin

Setelah itu jalankan perintah ini agar environment ter-update:

source ~/.bashrc

Langkah 5: Instalasi SDK Platform dan Build Tools

Gunakan command sdkmanager untuk menginstal komponen yang diperlukan. Di sini saya menggunakan API 36 dan Build Tools versi 34 (sesuaikan dengan kebutuhan/Flutter versi terbaru):

sdkmanager "platform-tools" "platforms;android-36" "build-tools;34.0.0"
sdkmanager "emulator" "system-images;android-36;google_apis;x86_64"

Terima semua lisensi:

sdkmanager --licenses

Langkah 6: Instalasi Flutter SDK

Clone Flutter langsung dari repo resmi:

cd ~
git clone [https://github.com/flutter/flutter.git](https://github.com/flutter/flutter.git) -b stable

Jalankan flutter doctor untuk mengecek status. Jika diminta lokasi Android SDK, arahkan dengan:

flutter config --android-sdk ~/android-sdk

Setujui semua flutter android license dengan:

flutter doctor --android-licenses

Pastikan konfigurasi Flutter sudah OK, terutama pada bagian Android toolchain.

Langkah 7: Membuat dan Menjalankan Android Emulator (Headless)

Inilah bagian intinya. Membuat Virtual Device (AVD) dan menjalankannya tanpa window/headless.

Jalankan perintah berikut untuk membuat AVD:

avdmanager create avd -n RemoteDevice -k "system-images;android-36;google_apis;x86_64" --device "pixel_9"

Jalankan emulator secara Headless di background dengan perintah berikut:

nohup emulator -avd RemoteDevice -no-window -gpu swiftshader_indirect -no-audio > /dev/null 2>&1 &

Tunggu beberapa saat, lalu jalankan perintah berikut untuk cek apakah device sudah terdeteksi:

adb devices

Outputnya akan ada list emulator yang sedang berjalan, seperti berikut:

# List of devices attached
# emulator-5554	device

Langkah 8: Koneksi ke Server

Tahap terakhir, yaitu konek dari laptop ke Server yang sudah di-setup. Pastikan di laptop sudah terinstall adb dan scrcpy, jika belum install terlebih dahulu:

# macOS
brew install --cask android-platform-tools
brew install scrcpy
# Linux (Debian/Ubuntu)
sudo apt install adb scrcpy

Setelah dipastikan semua kebutuhan terinstall, tahap selanjutnya yaitu tunnel port 5555 dari server ke localhost. Ganti IP dan user sesuai kondisi:

# jalankan pada laptop/local
# ssh -L 5555:localhost:5555 <user>@<ip-server>
# contoh:
ssh -L 5555:localhost:5555 [email protected]

Jika berhasil, selanjutnya buka terminal baru di laptop lokal, kemudian jalankan perintah berikut untuk koneksi ADB local ke tunnel yang sudah dibuat:

adb connect localhost:5555
adb devices -l

Jika berhasil maka akan muncul list emulator yang terkoneksi, seperti ini:

# $ adb devices -l
# List of devices attached
# localhost:5555         device product:sdk_gphone64_x86_64 model:sdk_gphone64_x86_64 device:emu64xa transport_id:3

Terakhir konek ke interface android dengan menggunakan perintah scrcpy:

scrcpy

Maka akan ada window baru yang isinya interface android emulator yang sudah dibuat seperti ini:

Langkah 9: Tips Workflow

  • Screen/Tmux: Gunakan tmux atau screen untuk menjaga proses emulator tetap jalan di background meskipun logout dari SSH.
  • VS Code Remote SSH: Gunakan ekstensi “Remote – SSH” di VS Code di laptop, konek ke server yang sudah di-setup, dan kamu bisa coding Flutter di server berasa coding lokal!
  • Performance: Karena berjalan di atas KVM, speed emulator ini bakal hampir sama dengan native, jauh lebih kencang dibanding emulator di dalam VM biasa (nested virtualization).

Kesimpulan

Setup headless Flutter di server Linux dengan KVM memberikan fleksibilitas tinggi, terutama bagi yang punya spek laptop terbatas atau butuh otomatisasi testing. Memang awalnya agak tricky, tapi jika sudah terbiasa bakal sangat membantu agar laptop tidak “engap”.

Selamat mencoba, the more you know!

By Richi

Leave a Reply

Your email address will not be published. Required fields are marked *