Langsung ke konten utama

Capacitor Development di Linux: Panduan Setup Lengkap

Siapkan workflow Capacitor lengkap di Ubuntu, Fedora, atau Arch: Node atau Bun, JDK, Android SDK, emulator dengan KVM, perangkat USB dengan udev rules, dan build iOS tanpa Mac menggunakan Capgo Build.

Capacitor Development di Linux: Panduan Setup Lengkap

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:

  1. Build aset web Anda dan sinkronkan ke ios/.
  2. Simpan kredensial signing iOS Anda sekali saja.
  3. 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_HOME tidak diekspor di shell yang menjalankan Gradle. Tambahkan ke profil Anda dan buka terminal baru, atau buat android/local.properties dengan sdk.dir=/home/you/Android/Sdk.
  • Unsupported class file major version: JDK salah. Arahkan JAVA_HOME ke JDK 21.
  • Emulator layar hitam atau sangat lambat: KVM tidak aktif. Cek ls -l /dev/kvm dan keanggotaan grup Anda.
  • adb devices menampilkan no permissions: udev rule hilang atau belum di-reload. Cabut dan pasang kembali setelah reload.
  • Gradle daemon kehabisan memori: tambah org.gradle.jvmargs=-Xmx4g ke android/gradle.properties.
  • Glitch Wayland dan Android Studio: jalankan Studio dengan _JAVA_AWT_WM_NONREPARENTING=1 jika 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.

Live updates untuk aplikasi Capacitor

Saat bug web-layer sudah live, kirim perbaikannya lewat Capgo alih-alih menunggu berhari-hari untuk persetujuan app store. Pengguna mendapat update di background, sementara perubahan native tetap mengikuti jalur review normal.

Terbaru dari Blog kami

Capgo memberikan insight terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang benar-benar profesional.