Lompat ke Konten

Kemampuan Kompatibilitas Native

Perbarui Capgo live secara langsung menggantikan bundle JavaScript aplikasi Anda. Install, sync, and follow the full source guide from one copyable prompt. langs.Indonesian.instantly, but it can’t change the langs.Indonesian.native langs.Indonesian.part of your app — the Capacitor/Cordova plugins, native dependencies, dan konfigurasi proyek native yang dikompilasi ke dalam binary yang terpasang. Ketika sebuah bundle baru membutuhkan native code yang tidak ada di binary yang terpasang, maka bundle tersebut adalah langs.Indonesian.native-incompatible: Capgo masih bisa mengirimkannya, tapi mungkin akan crash atau tidak berfungsi dengan benar di perangkat yang masih menjalankan build native yang lebih lama.

langs.Indonesian.This page explains how Capgo mendeteksi kompatibilitas native, apa artinya update yang tidak kompatibel bagi pengguna, dan bagaimana mengirimkan perubahan native dengan aman.

Capgo bisa mengirimkan file dari folder hasil build web yang dihasilkan. Jika perubahan hanya mempengaruhi HTML, CSS, JavaScript, asset, atau paket JavaScript murni yang dibundel ke dalam output tersebut, kirimkan sebagai pembaruan live.

Gunakan rilis aplikasi asli ketika perubahan memperbarui capacitor.config.tsKonfigurasi plugin disimpan di Capacitor konfigurasi, plugin native atau dependensi, Capacitor sendiri, atau file proyek iOS/Android. npx cap sync Periksa yang praktis: jika perubahan harus memperbarui proyek native melalui npx cap copy atau

sebelum perangkat yang terinstal dapat menggunakannya, anggap sebagai native.Ship with Capgo OTA?Kirim dengan __CAPGO_KEEP_0__ OTA?
MengapaHTML, CSS, JavaScript aplikasi, gambar, font, dan aset pembangunan web lainnyaYa
Mereka dimuat dari bundle web pada waktu runtime.Perubahan paket JavaScript murni yang dibundel ke dalam output web AndaJavaScript yang dihasilkan adalah bagian dari bundle web.
capacitor.config.ts __CAPGO_KEEP_0__Tidak adaCapacitor konfigurasi dibaca ke dalam aplikasi native pada saat build.
Menambahkan, menghapus, atau mengupgrade Capacitor/Cordova pluginTidakBinary native yang diinstal harus berisi code yang sesuai.
Perubahan file proyek iOS atau AndroidTidakPengguna yang sudah ada memerlukan binary baru dari toko.

Capgo mengirimkan klien pembaruan dedikasi untuk setiap runtime hybrid:

PluginGunakan ketika
@capgo/capacitor-updaterCapacitor aplikasi iOS/Android
@capgo/cordova-updaterAplikasi iOS 7+ / Android 13+ Cordova
@capgo/electron-updaterAplikasi desktop Electron

Periksa kompatibilitas asli berlaku tanpa peduli plugin klien — mereka membandingkan ketergantungan asli yang direkam terhadap bundle dengan binary yang diinstal.

Setiap aplikasi Capacitor dikirim dalam dua lapisan:

  • The biner asli pengguna menginstal dari App Store / Play Store. Ini berisi Capacitor, plugin-plugin native Anda, dan konfigurasi native.
  • The bundle JavaScript (aplikasi web Anda) yang Capgo dapat memperbarui secara nirkabel.

A 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 secara diam-diam mengganggu fitur. Dengan sederhana: Capgo tidak dapat memperbarui code native, sehingga perangkat yang menjalankan build native lama tidak dapat menjalankan bundle yang dibangun terhadap 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 saat ini berada di saluran:

  • Jika mereka cocok, perubahan tersebut hanya JavaScript saja Aman dikirimkan melalui udara.
  • Jika plugin ditambahkan, dihapus, atau versi berubah, maka bundel adalah tidak kompatibel dengan native — perubahan hanya berlaku setelah pengguna menginstal binary native baru.
Jendela terminal
bunx @capgo/cli@latest bundle compatibility com.example.app --channel production

The CLI mencetak tabel dari setiap paket native dengan versi lokal, versi yang hidup di saluran, 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 bundle

Dapatkan keputusan yang dapat dibaca oleh mesin (CI)

Judul bagian “Dapatkan keputusan yang dapat dibaca oleh mesin (CI)”

Untuk pipa, bundle releaseType menggabungkan periksa menjadi kata tunggal:

Jendela terminal
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 build

Tutup rilis pipa Anda dengan ini: kirimkan pembaruan hidup ketika mencetak OTAdan trigger build asli ketika mencetak native.

What artinya update tidak kompatibel bagi pengguna Anda

Judul bagian “What artinya update tidak kompatibel bagi pengguna Anda”

Pada perangkat yang masih menjalankan versi biner asli , kekurangan native __CAPGO_KEEP_0__ dapat menyebabkan kacau atau fitur rusak — bahkan meskipun update yang diunduh dan diterapkan “berhasil.” Ini adalah mengapa update live dapat berjalan dan disampaikan namun masih dapat mengganggu aplikasi bagi pengguna yang sudah ada, dan mengapa __CAPGO_KEEP_1__ dapat memberi peringatan ketika bundle yang tidak kompatibel berjalan., the missing native code can cause crashes or broken features — even though the update downloaded and applied “successfully.” This is why a live update can be live and delivered yet still break the app for existing users, and why Capgo can warn you when an incompatible bundle goes live.

Capgo’s dapat menangkap kesalahan JavaScript yang dilempar sebelum berjalan, tetapi tidak dapat menggantikan pengiriman native __CAPGO_KEEP_0__ yang kompatibel — kesalahan yang menyebabkan kacau nanti, atau kacau secara native, dapat melewati. notifyAppReady() runs, but it isn’t a substitute for shipping compatible native code — a mismatch that crashes later, or crashes natively, can slip past it.

Judul bagian “Bagaimana mengirimkan perubahan native dengan aman”

Publikasikan versi biner native baru (solusi yang sebenarnya)

When a bundle needs new native code, build and submit a new binary to the App Store / Play Store (or rebuild with Capgo Cloud Build). Once users update the binary, the bundle’s native dependencies line up and the live update runs correctly.

Jika ada bundle yang tidak kompatibel sudah aktif di saluran, kembalikan saluran ke versi terakhir yang kompatibel untuk menghentikan pengiriman hingga build asli keluar. Lihat

Rollbacks

Mencegah pengiriman tidak kompatibel Section titled “Mencegah pengiriman tidak kompatibel”.

Dua pengaman yang saling melengkapi, yang sebenarnya memeriksa paket native Anda:

Jalankan ulang di CI —

Tambahkan flag ke langkah Anda. Jika paket native bundle tidak sesuai dengan versi yang sedang berjalan di saluran, pengunggahan

fail dengan kode keluaran tidak nol dan tidak ada yang dikirim — sehingga pipa Anda menghentikan Anda dari menerbitkan pembaruan OTA diam-diam yang tidak dapat berlaku hingga pengguna menginstal build asli: --fail-on-incompatible

Fail the upload in CI — bundle upload Add the flag to your step. If the bundle’s native packages don’t match the channel’s currently-live version, the upload fails with a non-zero exit and nothing is shipped — so your pipeline stops you from silently publishing an OTA update that can’t take effect until users install a native build:

Jendela terminal
bunx @capgo/cli@latest bundle upload --channel production --fail-on-incompatible

Upload 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 aliran pembangunan Capgo Pembangun asli alih-alih; menolak gagal. (Tidak dapat dikombinasikan dengan --ignore-metadata-check.)

Pengiriman pintu oleh versi asli — metadata + --auto-min-update-version

Ketika Anda melakukan mengirimkan pembangunan asli dan bundel bersama, letakkan saluran pada metadata strategi dan unggah dengan --auto-min-update-version. Capgo menjalankan periksa kompatibilitas pada setiap unggahan dan, ketika bundel memerlukan code pembangunan asli baru, meningkatkan lantai pembaruan sehingga perangkat yang belum menginstal pembangunan asli yang sesuai tidak menerima:

Jendela terminal
# one-time: switch the channel to the metadata strategy
bunx @capgo/cli@latest channel set production com.example.app --disable-auto-update metadata
# from then on, Capgo sets the floor automatically on every upload
bunx @capgo/cli@latest bundle upload --channel production --auto-min-update-version

Target Versi untuk set lengkap opsi target. Bab yang terkait

Bab berjudul “Bab yang terkait”

Teruskan dari Kompatibilitas Asli

Jika Anda menggunakan

Kompatibilitas Asli Jika Anda menggunakan Native Compatibility untuk menjaga pembaruan live aman, hubungkan dengan Versi Target untuk mengarahkan bundle berdasarkan versi native, Rollbacks untuk kembali ketika bundle tidak kompatibel yang dikirim, Jenis Update untuk memahami versi saluran penghalang, dan Capgo CLI referensi bundle untuk kompatibilitas dan perintah releaseType.