Alur Kerja Native + OTA
Saluran dev/prod, kapan untuk menjaga --fail-on-incompatible, dan bagaimana mengirimkan dasar native sengaja.
Copy prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
A Capgo live update mengganti aplikasi Anda Bundle JavaScript langsung, tetapi tidak dapat mengubah native part of your app — the Capacitor/Cordova plugins, native dependencies, and native project configuration that are compiled into the installed binary. When a new bundle expects native code that the installed binary doesn’t have, the bundle is native-incompatibleAplikasi Capgo masih dapat menyampaikan update, tetapi mungkin mengalami crash atau perilaku tidak terduga pada perangkat yang masih menjalankan versi native yang lebih lama.
Halaman ini menjelaskan bagaimana Capgo mendeteksi konsistensi native, apa artinya update yang tidak kompatibel bagi pengguna Anda, dan bagaimana mengirimkan perubahan native dengan aman.
Capgo can send files from your generated web build folder. If the change only affects HTML, CSS, JavaScript, assets, or pure-JavaScript packages bundled into that output, ship it as a live update.
Gunakan rilis aplikasi native ketika perubahan memperbarui capacitor.config.ts, konfigurasi plugin yang disimpan di Capacitor konfigurasi, plugin native atau dependensi, Capacitor sendiri, atau file proyek iOS/Android. Periksa secara praktis: jika perubahan harus memperbarui proyek native melalui npx cap sync atau npx cap copy before installed devices can use it, treat it as native.
| atau | Mengirimkan dengan Capgo OTA? | Perubahan |
|---|---|---|
| HTML, CSS, JavaScript aplikasi web, gambar, font, dan aset lainnya pembangunan web | Mengapa | Mereka dimuatkan dari bundle web pada saat runtime. |
| Perubahan paket JavaScript murni yang diintegrasikan ke dalam output web Anda | Mengapa | JavaScript yang dihasilkan adalah bagian dari bundle web. |
capacitor.config.ts perubahan | Tidak | Capacitor konfigurasi dibaca ke dalam aplikasi native pada waktu build. |
| Menambahkan, menghapus, atau meningkatkan Capacitor/Cordova plugin | Tidak | Binary native yang diinstal harus mengandung code native yang sesuai. |
| Perubahan file proyek iOS atau Android | Tidak | Pengguna yang sudah ada memerlukan binary baru dari toko. |
Capgo mengirimkan klien pembaruan khusus untuk setiap runtime hybrid:
| Plugin | Pakai ketika |
|---|---|
@capgo/capacitor-updater | Capacitor aplikasi iOS/Android |
@capgo/cordova-updater | Aplikasi iOS 7+ / Android 13+ Cordova |
@capgo/electron-updater | Aplikasi desktop Electron |
Pengecekan kompatibilitas native berlaku tanpa peduli plugin klien — mereka membandingkan ketergantungan native yang direkam terhadap bundle dengan binary yang terinstal.
Setiap aplikasi Capacitor dikirim dalam dua lapisan:
Sebuah live update hanya mengganti lapisan JavaScript. Jika JavaScript baru tersebut memanggil plugin native atau API yang tidak dikompilasi ke dalam biner yang terinstal, panggilan tersebut gagal pada waktu runtime — yang dapat menyebabkan aplikasi crash atau menghentikan fitur secara diam-diam. Dengan kata sederhana: Capgo tidak dapat memperbarui code native, sehingga perangkat yang menjalankan versi native lama tidak dapat menjalankan bundle yang dibangun atas code native baru.
Ketika Anda mengunggah bundle — atau menjalankan cek secara manual — Capgo membandingkan paket native in your local project (your Capacitor/Cordova plugins and their versions) against the native packages recorded for the bundle dengan paket yang sedang berjalan di saluran:
bunx @capgo/cli@latest bundle compatibility com.example.app --channel productionTabel CLI menampilkan setiap paket native beserta versi lokal, versi yang ada di channel, dan status:
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 Mengurangi periksaan 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 buildMengunci rilis pipa Anda dengan cara mengirimkan live update ketika mencetak OTAdan mengaktifkan pembangunan asli ketika mencetak native.
Pada perangkat yang masih menjalankan binary asli yang lebih tua, kemungkinan code yang hilang dapat menyebabkan aplikasi crash atau fitur rusak — bahkan meskipun update telah didownload dan diterapkan dengan sukses. Ini adalah mengapa live update dapat berjalan secara live dan diterima namun masih dapat merusak aplikasi untuk pengguna yang sudah ada, dan mengapa Capgo dapat memberi peringatan ketika bundle yang tidak kompatibel telah diterbitkan.
Capgo’s rollback otomatis bisa menangkap kesalahan JavaScript yang dilempar sebelum notifyAppReady() berjalan, namun ini bukanlah pengganti untuk mengirimkan code asli yang kompatibel — kesalahan yang menyebabkan aplikasi crash nanti, atau crash secara native, dapat melewati hal ini.
Ketika bundle membutuhkan code native yang baru, buat dan kirimkan binary baru ke App Store / Play Store (atau dengan menggunakan Capgo Cloud Build). Setelah pengguna memperbarui binary, ketergantungan native bundle akan berjalan dan live update akan berjalan dengan benar.
If an incompatible bundle is already active on a channel, revert the channel to the last compatible build to stop serving it until the native build is out. See Rollbacks.
Dua pengaman komplementer, yang keduanya memeriksa paket native Anda secara nyata:
Gagal mengunggah di CI — --fail-on-incompatible
Tambahkan flag ke aplikasi Anda bundle upload Langkah 2. Jika paket native bundel tidak sesuai dengan versi yang sedang berjalan di channel, maka unggah Gagal dengan kode keluaran tidak nol dan tidak ada yang dikirimkan. Jika ada bundle yang tidak kompatibel sudah aktif, kembalikan channel ke versi terakhir yang kompatibel untuk menghentikan penyediaannya hingga versi native tersedia.
bunx @capgo/cli@latest bundle upload --channel production --fail-on-incompatibleUpload yang kompatibel — dan kasus di mana periksa tidak dapat dijalankan (saluran baru, atau metadata remote tidak ada) — melewati tanpa perubahan. Di terminal interaktif, ia menawarkan alur pembangunan native Capgo Builder; menolak gagal. (Tidak dapat digabungkan dengan --ignore-metadata-check.)
Pengiriman melalui versi native — metadata + --auto-min-update-version
Ketika Anda melakukan mengirimkan build asli dan bundle bersamaan, menempatkan saluran pada strategi dan mengunggah dengan metadata strategi dan unggah dengan --auto-min-update-version. Capgo runs the compatibility check on every upload and, when a bundle needs new native code, raises the update floor so devices that haven’t installed the matching native build don’t receive it:
# 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 Pemilihan Versi untuk set lengkap pilihan target.
Alur Kerja Native + OTA
Saluran dev/prod, kapan untuk menjaga --fail-on-incompatible, dan bagaimana mengirimkan dasar native sengaja.
Auto OTA atau Native
Kabel bundle releaseType ke dalam GitHub Aksi atau GitLab sehingga CI memilih live update vs Capgo Build.
Target Versi
Terbitkan hanya paket yang kompatibel menggunakan saluran, aturan semver, dan strategi metadata.
Rollback
Mengembalikan saluran ke versi terakhir yang kompatibel jika paket tidak kompatibel yang telah diterbitkan.
Jenis Update
Bagaimana cara aplikasi waktu, kondisi penundaan, dan penghalang versi bekerja sama.
CLI: paket
Referensi untuk kompatibilitas paket, jenis rilis, dan opsi unggah.
Jika Anda menggunakan Kompatibilitas Natively Untuk menjaga live update aman, hubungkannya dengan Target Versi Untuk rutekan paket berdasarkan versi native, Rollbacks Mengembalikan ketika sebuah paket yang tidak kompatibel dikirimkan. Jenis Update Untuk memahami versi saluran yang diblokir, dan Capgo CLI referensi bundle __CAPGO_KEEP_0__ __CAPGO_KEEP_1__ referensi bundle kompatibilitas