Linux adalah platform yang hebat untuk kerja Capacitor. Web layer hanya butuh tooling Node, Android tooling berjalan secara native, dan emulator Linux dengan KVM sering kali lebih cepat dibanding emulator yang sama di Windows. Satu-satunya celah adalah iOS: Xcode hanya ada di macOS, jadi Anda butuh layanan cloud build untuk bagian tersebut.
Panduan ini membahas setup Linux secara lengkap, yang telah diuji di Ubuntu 24.04, Fedora 42, dan Arch. Panduan ini diakhiri dengan cara build iOS dari Linux menggunakan Capgo Build, jadi Anda bisa rilis ke kedua store tanpa perlu Mac.
Apa yang bisa dan tidak bisa di Linux
| Tugas | Linux |
|---|---|
| Pengembangan web, Vite, framework tooling | Ya |
cap add android, cap sync, build Gradle |
Ya |
| emulator Android | Bisa, dengan KVM |
| Perangkat Android fisik via USB | Ya, dengan aturan udev |
| Remote debugging Chrome DevTools | Ya |
cap add ios, cap sync ios (buat dan salin) |
Ya, dengan peringatan CocoaPods dilewati |
| Compile, sign, dan archive iOS | Tidak, butuh macOS. Gunakan Capgo Build |
| Simulator iOS | Tidak |
| Safari Web Inspector untuk iOS WebView | Tidak |
Semua yang ada di baris “No” akan dipindahkan ke cloud atau ke iPhone asli menggunakan TestFlight. Kami akan membahasnya di bagian akhir.
1) Install Node atau Bun
CLI milik Capacitor butuh Node 20 atau yang lebih baru. Bun berfungsi sebagai runtime dan package manager yang lebih cepat saat install.
# Bun (recommended)
curl -fsSL https://bun.sh/install | bash
# Or Node via your package manager
# Ubuntu / Debian
sudo apt install -y nodejs npm
# Fedora
sudo dnf install -y nodejs
# Arch
sudo pacman -S nodejs npm
Check versions:
bun --version
node --version
2) Install JDK
Capacitor 7 dan 8 butuh JDK 21. Menggunakan package distribusi sudah cukup.
# Ubuntu / Debian
sudo apt install -y openjdk-21-jdk
# Fedora
sudo dnf install -y java-21-openjdk-devel
# Arch
sudo pacman -S jdk21-openjdk
Atur JAVA_HOME di ~/.bashrc atau ~/.zshrc. Path-nya tergantung pada distribusinya:
# Ubuntu / Debian
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
# Fedora
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
# Arch
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
Jika Anda menginstall lebih dari satu JDK, Gradle akan memilih yang JAVA_HOME ditunjuk. Versi yang salah akan muncul sebagai Unsupported class file major version selama cap run android.
3) Install SDK Android
Ada dua opsi. Android Studio menyediakan tools GUI. Command line tools saja lebih ringan dan sudah cukup untuk proses build.
Opsi A: Android Studio
Download tarball Linux dari situs Android Studio dan ekstrak:
sudo tar -xzf android-studio-*.tar.gz -C /opt
/opt/android-studio/bin/studio.sh
Saat pertama kali dijalankan, setup wizard akan menginstal SDK ke dalam ~/Android/Sdk.
Capacitor cap open android perlu tahu lokasi instalasi Studio:
export CAPACITOR_ANDROID_STUDIO_PATH=/opt/android-studio/bin/studio.sh
Opsi B: Command line tools saja
mkdir -p ~/Android/Sdk/cmdline-tools
cd ~/Android/Sdk/cmdline-tools
# Download "Command line tools only" for Linux from the Android developer site, then:
unzip commandlinetools-linux-*.zip
mv cmdline-tools latest
Tambahkan SDK ke shell profile Anda:
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
Install kebutuhan Capacitor dan setujui lisensinya:
sdkmanager "platform-tools" "platforms;android-36" "build-tools;36.0.0" "emulator"
sdkmanager --licenses
Sesuaikan versi platform dengan compileSdkVersion di dalam file yang dihasilkan android/variables.gradle. Capacitor 8 menggunakan 36; Capacitor 7 menggunakan 35.
4) Aktifkan KVM untuk emulator
Tanpa KVM, emulator tidak bisa digunakan. Pastikan CPU Anda mendukung virtualisasi:
egrep -c '(vmx|svm)' /proc/cpuinfo
Hasil di atas 0 berarti didukung. Instal KVM dan berikan akses ke user Anda:
# Ubuntu / Debian
sudo apt install -y qemu-kvm
# Fedora
sudo dnf install -y qemu-kvm
# Arch
sudo pacman -S qemu-base
sudo usermod -aG kvm $USER
Log out dan login kembali. Buat dan jalankan perangkat:
sdkmanager "system-images;android-36;google_apis;x86_64"
avdmanager create avd -n pixel8 -k "system-images;android-36;google_apis;x86_64" -d pixel_8
emulator -avd pixel8
Jika emulator mengalami masalah terkait /dev/kvm izin (permissions), perubahan grup Anda belum diterapkan. Lakukan reboot.
5) Akses USB untuk perangkat fisik
Secara default, Linux tidak mengizinkan user biasa mengakses perangkat USB. Tambahkan udev rule:
sudo tee /etc/udev/rules.d/51-android.rules > /dev/null <<'EOF'
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="2a70", MODE="0666", GROUP="plugdev"
EOF
sudo udevadm control --reload-rules
sudo usermod -aG plugdev $USER
Vendor ID di atas mencakup Google, Samsung, dan OnePlus. Cari milik Anda dengan lsusb jika ponsel Anda tidak terdaftar. Aktifkan USB debugging di ponsel, hubungkan, terima prompt fingerprint, lalu:
adb devices
6) Buat proyek Capacitor
bun create vite@latest my-app
cd my-app
bun install
bun add @capacitor/core @capacitor/android @capacitor/ios
bun add -d @capacitor/cli
bunx cap init
bun run build
bunx cap add android
bunx cap add ios
cap add ios di Linux akan menampilkan peringatan bahwa CocoaPods tidak tersedia. Itu wajar. ios/ folder tetap dibuat dan itulah yang nanti dikompilasi oleh Capgo Build.
Jalankan di emulator atau perangkat:
bunx cap run android
Debug WebView di Chrome pada chrome://inspect.
7) Release build di Linux
Android release build sepenuhnya lokal. Buat keystore dengan JDK keytool:
keytool -genkeypair -v -keystore release.jks -keyalg RSA -keysize 2048 -validity 10000 -alias release
Kemudian build:
cd android
./gradlew bundleRelease
File AAB akan tersimpan di android/app/build/outputs/bundle/release/. Jika Anda tidak ingin menyimpan signing key di laptop, Capgo Build untuk Android menyimpan keystore sekali dan build di cloud dari CLI yang sama yang Anda pakai untuk iOS.
8) iOS dari Linux dengan Capgo Build
Ini langkah yang tidak bisa dilakukan Linux sendirian. Alurnya:
- Build aset web Anda dan sinkronkan ke
ios/. - Simpan kredensial signing iOS Anda sekali saja.
- Minta cloud build. Capgo mengompilasi, signing, dan bisa upload ke TestFlight.
bun run build
bunx cap sync ios
bunx @capgo/cli@latest login
bunx @capgo/cli@latest build init --platform ios
bunx @capgo/cli@latest build request com.example.app --platform ios --build-mode release
build init memandu Anda melalui kredensial. Di Linux, Anda membuat key API App Store Connect secara manual di portal Apple; Panduan build iOS menunjukkan setiap klik. Untuk sertifikat distribusi, Anda tidak perlu Keychain Access: buat CSR dan .p12 dengan OpenSSL seperti yang dijelaskan di Penjelasan sertifikat iOS dan provisioning profile, atau gunakan iOS certificate generator kami.
Logs mengalir live ke terminal Anda. Alur lengkap dari Linux ke TestFlight dijelaskan di Build aplikasi iOS dari Linux dengan Capacitor dan Capgo Build.
9) Lewati native rebuild dengan Live Updates
Setelah native shell masuk ke store, sebagian besar perubahan harian adalah JavaScript, HTML, dan CSS. Semua itu bisa di-ship dari Linux dalam hitungan detik dengan Capgo Live Updates:
bunx @capgo/cli@latest init
bun run build
bunx @capgo/cli@latest bundle upload --channel production
Gunakan native build hanya untuk perubahan plugin, perubahan permission, dan upgrade Capacitor.
Masalah umum di Linux
SDK location not found:ANDROID_HOMEtidak diekspor di shell yang menjalankan Gradle. Tambahkan ke profil Anda dan buka terminal baru, atau buatandroid/local.propertiesdengansdk.dir=/home/you/Android/Sdk.Unsupported class file major version: JDK salah. ArahkanJAVA_HOMEke JDK 21.- Emulator layar hitam atau sangat lambat: KVM tidak aktif. Cek
ls -l /dev/kvmdan keanggotaan grup Anda. adb devicesmenampilkanno permissions: udev rule hilang atau belum di-reload. Cabut dan pasang kembali setelah reload.- Gradle daemon kehabisan memori: tambah
org.gradle.jvmargs=-Xmx4gkeandroid/gradle.properties. - Glitch Wayland dan Android Studio: jalankan Studio dengan
_JAVA_AWT_WM_NONREPARENTING=1jika jendela tetap kosong.
Ringkasan
Linux menangani seluruh loop Capacitor untuk Android dan web layer secara native, dan sering kali lebih cepat dibanding desktop lain. Untuk iOS, generate project secara lokal, sync aset Anda, dan biarkan Capgo Build menangani bagian macOS. Padukan dengan Live Updates dan satu-satunya waktu Anda memikirkan Xcode adalah saat Apple mengubah SDK minimumnya.