Lebih cepat ke konten

Konsistensi Asli

Aplikasi Anda akan digantikan oleh Capgo live update 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-incompatible: Capgo masih dapat mengirimkannya, tetapi mungkin mengalami crash atau perilaku tidak terduga pada perangkat yang masih menjalankan versi native yang lebih lama.

Halaman ini menjelaskan bagaimana Capgo mendeteksi kompatibilitas asli, apa artinya update tidak kompatibel bagi pengguna Anda, dan bagaimana mengirimkan perubahan asli dengan aman.

TLDR: Perangkat Lunak Terupdate atau Nativ?

Ringkasan: OTA atau native?

Capgo dapat mengirimkan file dari folder pembangunan web yang dihasilkan. Jika perubahan hanya mempengaruhi HTML, CSS, JavaScript, aset, atau paket JavaScript murni yang dibundel ke dalam output tersebut, kirimkannya sebagai live update.

Pilih rilis aplikasi native ketika perubahan memperbarui capacitor.config.ts, pengaturan plugin yang disimpan di Capacitor konfigurasi, plugin native atau dependensi, Capacitor itu sendiri, atau file proyek iOS/Android. npx cap sync or npx cap copy before installed devices can use it, treat it as native.

ChangeMengirimkan dengan Capgo OTA?Perubahan
HTML, CSS, JavaScript aplikasi web, gambar, font, dan aset pembangunan web lainnyaMengapaMereka dimuatkan dari bundle web pada saat waktu eksekusi.
Perubahan paket JavaScript murni yang diintegrasikan ke dalam output web AndaYaJavaScript yang dihasilkan merupakan bagian dari bundle web.
capacitor.config.ts perubahanTidakKonfigurasi Capacitor dibaca ke dalam aplikasi native pada saat build.
Menambahkan, menghapus, atau mengupgrade Capacitor/plugin CordovaTidakBinary native yang diinstal harus mengandung code yang sesuai.
Perubahan file proyek iOS atau AndroidTidakPengguna yang sudah ada memerlukan binary baru dari toko.

Plugin klien berdasarkan stack

Judul bagian “Plugin klien oleh stack”

Capgo mengirimkan klien pembarui yang spesifik untuk setiap runtime hybrid:

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

Pengecekan kompatibilitas native berlaku tanpa peduli klien plugin — mereka membandingkan ketergantungan native yang direkam terhadap bundle dengan binary yang terinstal.

Setiap Capacitor aplikasi dikirim dalam dua lapisan:

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

Sebuah live update hanya mengganti lapisan JavaScript. Jika JavaScript baru tersebut memanggil plugin native atau API yang tidak dikompilasi ke dalam biner yang diinstal, panggilan 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 build native lama tidak dapat menjalankan bundle yang dibangun atas code native baru dengan aman.

Bagaimana Capgo mendeteksi konsistensi

Judul bagian ‘Bagaimana Capgo mendeteksi konsistensi’

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 yang sedang berjalan di saluran:

  • Jika mereka cocok, perubahan hanya JavaScript dan aman untuk dikirimkan melalui udara.
  • Jika plugin ditambahkan, dihapus, atau versi dirubah, bundel akan native-incompatible — perubahan-perubahan itu hanya efektif setelah pengguna menginstal biner native baru.
Jendela terminal
bunx @capgo/cli@latest bundle compatibility com.example.app --channel production

Tabel 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 bundle

Untuk pipeline bundle releaseType menggabungkan periksa menjadi satu kata:

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

Jadwalkan pipa rilis Anda pada hal ini: kirimkan live update ketika mencetak OTAdan akan memicu pembangunan native ketika mencetak native.

Apa artinya pembaruan tidak kompatibel bagi pengguna Anda

Judul Bagian “Apa artinya pembaruan tidak kompatibel bagi pengguna Anda”

Pada perangkat yang masih menjalankan biner berusia lebih lama, maka kekurangan native code dapat menyebabkan aplikasi mengalami crash atau fitur rusak — meskipun update telah didownload dan diterapkan dengan sukses. Ini adalah mengapa live update dapat berjalan secara live dan disampaikan namun masih dapat merusak aplikasi bagi pengguna yang sudah ada, dan mengapa Capgo dapat memberi peringatan ketika bundle yang tidak kompatibel telah berjalan.

Capgo’s rollback otomatis Dapat menangkap kesalahan JavaScript yang dilempar sebelumnya notifyAppReady() berjalan, namun tidak dapat menggantikan pengiriman native code yang kompatibel — kesalahan yang menyebabkan aplikasi mengalami crash nanti, atau crash secara native, dapat melewati hal ini.

Publish perubahan native baru (solusi yang sebenarnya)

Judul bagian “Publish perubahan native baru (solusi yang sebenarnya)”

Jika sebuah bundle memerlukan native code yang baru, bangun dan kirimkan binary baru ke App Store / Play Store (atau bangun ulang dengan Capgo Cloud Build). Setelah pengguna memperbarui binary, dependensi native bundle berbaris dan live update berjalan dengan benar.

Kembali ke versi sebelumnya jika bundle yang tidak kompatibel sudah aktif

Bagian berjudul “Kembali ke versi sebelumnya jika bundle yang tidak kompatibel sudah aktif”

Jika sebuah bundle yang tidak kompatibel sudah aktif di sebuah saluran, kembalikan saluran ke versi terakhir yang kompatibel untuk menghentikan penyediaannya hingga build native keluar. Lihat Rollbacks.

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

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. — sehingga pipa Anda menghentikan Anda dari menerbitkan pembaruan OTA secara diam-diam yang tidak dapat berlaku sampai pengguna menginstal build asli:

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

Pengiriman melalui versi asli — metadata + --auto-min-update-version

When Anda melakukan kirimlah bangunan asli dan paket bersamaan, letakkan saluran di metadata strategi dan unggah dengan --auto-min-update-version. Capgo menjalankan pengecekan kompatibilitas pada setiap unggahan dan, ketika bundel memerlukan native code baru, meningkatkan lantai update sehingga perangkat yang belum menginstal konstruksi asli yang sesuai tidak menerima update tersebut:

Tampilan 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

Lihat Versi Target untuk set lengkap opsi target.

Jika Anda menggunakan Kompatibilitas Asli untuk menjaga live update aman, hubungkannya dengan Target Versi untuk mengarahkan bundle berdasarkan versi asli, Rollback untuk kembali ketika bundle tidak kompatibel dikirimkan, Jenis Update untuk memahami versi saluran penghalang, dan Capgo CLI referensi bundle kompatibilitas dan releaseType untuk perintah kompatibilitas dan releaseType.