Workflow Native + OTA
Channel dev/production, kapan harus dipertahankan, --fail-on-incompatibledan cara merilis native baseline yang terencana.
Salin prompt setup yang berisi langkah install dan panduan markdown lengkap untuk plugin ini.
Sebuah Capgo live update menggantikan bundle JavaScript secara instan, tetapi tidak dapat mengubah native bagian dari aplikasi Anda — plugin Capacitor/Cordova, dependensi native, dan konfigurasi proyek native yang dikompilasi ke dalam biner yang terpasang. Ketika bundle baru mengharapkan code native yang tidak dimiliki oleh biner yang terpasang, bundle tersebut menjadi native-incompatible: Capgo masih dapat mengirimkannya, tetapi mungkin crash atau berperilaku tidak normal pada perangkat yang masih menjalankan build native yang lebih lama.
Halaman ini menjelaskan bagaimana Capgo mendeteksi kompatibilitas native, apa arti pembaruan yang tidak kompatibel bagi pengguna Anda, dan cara mengirim perubahan native dengan aman.
Capgo dapat mengirim file dari folder web build yang Anda hasilkan. Jika perubahan hanya memengaruhi HTML, CSS, JavaScript, aset, atau paket pure-JavaScript yang dibundel ke dalam output tersebut, kirimkan sebagai live update.
Gunakan rilis aplikasi native ketika perubahan memperbarui capacitor.config.ts, konfigurasi plugin yang disimpan di config Capacitor, plugin atau dependensi native, Capacitor itu sendiri, atau file proyek iOS/Android. Cek praktis: jika perubahan tersebut harus memperbarui proyek native melalui npx cap sync atau npx cap copy sebelum perangkat yang sudah terinstal dapat menggunakannya, anggap itu native.
| Perubahan | Rilis dengan Capgo OTA? | Mengapa |
|---|---|---|
| HTML, CSS, JavaScript aplikasi, gambar, font, dan aset build web lainnya | Ya | Mereka dimuat dari web bundle saat runtime. |
| Perubahan paket Pure-JavaScript yang di-bundle ke output web Anda | Ya | JavaScript yang dihasilkan adalah bagian dari web bundle. |
capacitor.config.ts perubahan | Tidak | Konfigurasi Capacitor dibaca ke aplikasi native saat build. |
| Menambahkan, menghapus, atau meng-upgrade plugin Capacitor/Cordova | Tidak | Binary native yang terinstal harus berisi code native yang sesuai. |
| Perubahan file proyek iOS atau Android | Tidak | Pengguna yang sudah ada memerlukan binary baru dari store. |
Capgo menyediakan klien updater khusus untuk setiap runtime hybrid:
| Plugin | Gunakan saat |
|---|---|
@capgo/capacitor-updater | Aplikasi iOS/Android Capacitor |
@capgo/cordova-updater | Aplikasi Cordova iOS 7+ / Android 13+ |
@capgo/electron-updater | Aplikasi desktop Electron |
Pemeriksaan kompatibilitas native berlaku terlepas dari plugin klien — membandingkan dependensi native yang tercatat dalam bundle dengan biner yang terpasang.
Setiap aplikasi Capacitor dirilis dalam dua lapisan:
Sebuah live update hanya mengganti lapisan JavaScript. Jika JavaScript baru tersebut memanggil plugin native atau API yang tidak dikompilasi ke dalam binary yang terpasang, pemanggilan akan gagal saat runtime — yang dapat menyebabkan crash aplikasi atau merusak fitur secara diam-diam. Singkatnya: Capgo tidak dapat memperbarui code native, sehingga perangkat yang menjalankan build native lama tidak dapat menjalankan bundle yang dibangun berdasarkan code native baru dengan aman.
Saat Anda mengunggah bundle — atau menjalankan pemeriksaan secara manual — Capgo membandingkan paket native di proyek lokal Anda (plugin Capacitor/Cordova Anda dan versinya) dengan paket native yang tercatat untuk bundle yang saat ini aktif di channel:
bunx @capgo/cli@latest bundle compatibility com.example.app --channel productionCLI menampilkan tabel setiap native package beserta versi lokal, versi yang aktif di channel, dan statusnya:
Package Local Remote Status@capacitor/core 6.1.2 6.1.2 ✅@capacitor/share 6.0.0 6.0.0 ✅@capacitor/camera 6.1.0 — ❌ not in the live bundleUntuk pipeline, bundle releaseType meringkas pengecekan menjadi satu kata:
bunx @capgo/cli@latest bundle releaseType com.example.app --channel production# → OTA safe to ship as a live update# → native needs a new app-store buildGunakan ini sebagai gate pipeline rilis Anda: kirim live update saat muncul OTA, dan picu native build saat muncul native.
Pada perangkat yang masih menjalankan native binary lama, native code yang hilang dapat menyebabkan crash atau fitur rusak — meskipun update berhasil diunduh dan diterapkan. Inilah mengapa live update bisa live dan terkirim, tetapi tetap merusak aplikasi bagi pengguna lama, dan mengapa Capgo dapat memberi peringatan saat bundle yang tidak kompatibel dirilis.
Capgo rollback otomatis dapat menangkap error JavaScript yang dilempar sebelum notifyAppReady() berjalan, tetapi bukan pengganti untuk mengirim native code yang kompatibel — ketidakcocokan yang menyebabkan crash kemudian, atau crash native, bisa lolos darinya.
Ketika bundle membutuhkan native code baru, build dan kirim binary baru ke App Store / Play Store (atau build ulang dengan Capgo Cloud Build). Setelah pengguna memperbarui binary, dependensi native bundle akan selaras dan live update berjalan dengan benar.
Jika bundle yang tidak kompatibel sudah aktif di sebuah channel, kembalikan channel ke build kompatibel terakhir untuk menghentikan penyajiannya hingga native build tersedia. Lihat Rollback.
Dua pengaman yang saling melengkapi, keduanya benar-benar memeriksa native package Anda:
Gagalkan upload di CI — --fail-on-incompatible
Tambahkan flag ke bundle upload langkah. Jika paket native bundle tidak sesuai dengan versi yang sedang live di channel tersebut, proses upload gagal dengan non-zero exit dan tidak ada yang dikirim — sehingga pipeline Anda mencegah Anda memublikasikan OTA update secara diam-diam yang tidak bisa berlaku sampai user menginstal native build:
bunx @capgo/cli@latest bundle upload --channel production --fail-on-incompatibleUpload yang kompatibel — serta kondisi saat pengecekan tidak bisa berjalan (channel baru, atau tidak ada metadata remote) — tetap diteruskan tanpa perubahan. Di terminal interaktif, sistem akan menawarkan alur native-build Capgo Builder sebagai gantinya; menolak akan menggagalkan proses. (Tidak bisa digabungkan dengan --ignore-metadata-check.)
Batasi pengiriman berdasarkan versi native — metadata + --auto-min-update-version
Saat Anda lakukan ship native build dan bundle secara bersamaan, letakkan channel di metadata strategi dan upload dengan --auto-min-update-version. Capgo menjalankan pengecekan kompatibilitas pada setiap upload dan, saat bundle membutuhkan native code baru, menaikkan batas minimum update agar perangkat yang belum menginstal native build yang sesuai tidak menerimanya:
# one-time: switch the channel to the metadata strategybunx @capgo/cli@latest channel set production com.example.app --disable-auto-update metadata
# from then on, Capgo sets the floor automatically on every uploadbunx @capgo/cli@latest bundle upload --channel production --auto-min-update-versionLihat Targeting Versi untuk daftar lengkap opsi targeting.
Workflow Native + OTA
Channel dev/production, kapan harus dipertahankan, --fail-on-incompatibledan cara merilis native baseline yang terencana.
Auto OTA atau Native
Hubungkan bundle releaseType ke GitHub Actions atau GitLab agar CI memilih live update vs Capgo Build.
Targeting Versi
Kirim hanya bundle yang kompatibel menggunakan channel, aturan semver, dan strategi metadata.
Rollback
Kembalikan channel ke build kompatibel terakhir jika bundle yang tidak kompatibel sudah live.
Tipe Update
Bagaimana apply timing, kondisi delay, dan version blocking bekerja bersama.
CLI: bundle
Referensi untuk kompatibilitas bundle, releaseType, dan opsi upload.
Jika Anda menggunakan Kompatibilitas Native untuk menjaga Live Update tetap aman, hubungkan dengan Targeting Versi untuk merutekan bundle berdasarkan versi native, Rollback untuk pemulihan saat bundle yang tidak kompatibel dikirim, Tipe Update untuk memahami pemblokiran versi channel, dan referensi bundle Capgo CLI untuk perintah compatibility dan releaseType.