Kompatibilitas Native
Cara Capgo mendeteksi drift paket native dan arti ketidakcocokan bagi perangkat.
Salin prompt setup yang berisi langkah install dan panduan markdown lengkap untuk plugin ini.
Setup Capgo yang umum menggunakan dev channel dan produksi channel. CI mengunggah setiap OTA bundle ke dev, lalu dipromosikan ke production saat Anda siap. Tim sering menambahkan --fail-on-incompatible agar CI tidak tidak sengaja mengirim live update yang butuh code baru.
Halaman ini menjawab pertanyaan berikut: apa yang Anda lakukan saat intentionally butuh bundle yang tidak kompatibel dengan native packages channel saat ini?
Jika butuh latar belakang mengapa Capgo membandingkan native packages, mulai dari Kompatibilitas Native. Untuk CI branch lengkap yang memilih OTA vs Capgo Build secara otomatis, lihat Auto OTA atau Native.
Panduan ini mengasumsikan dev dan production channel sudah ada. Buat dulu jika perlu:
npx @capgo/cli@latest channel add production com.example.appnpx @capgo/cli@latest channel add dev com.example.app| Channel | Who gets it | Upload umum |
|---|---|---|
dev | Build Internal / QA | Setiap push JS di CI (dan baseline native yang disengaja) |
production | User di Store | Dipromosikan atau di-upload hanya saat siap rilis |
--fail-on-incompatible adalah default yang bagus di kedua channel untuk upload OTA harian. Ini membandingkan paket native dalam bundle yang Anda upload dengan bundle sedang aktif di channel tersebut. Jika berbeda, upload akan error dan tidak ada yang dikirim.
Saat perubahan hanya pada JavaScript dan package native sesuai dengan channel:
npx @capgo/cli@latest bundle upload com.example.app \ --channel production \ --fail-on-incompatible \ --auto-min-update-version--fail-on-incompatible mencegah native drift yang tidak disengaja. --auto-min-update-version wajib ada di setiap upload setelah channel menggunakan metadata strategi (direkomendasikan di bawah). Jika channel belum menggunakan metadata , Anda bisa mengabaikan --auto-min-update-version sampai Anda melakukan switch.
Opsional: CI gate sebelum upload:
npx @capgo/cli@latest bundle releaseType com.example.app --channel production# → OTA safe to upload with --fail-on-incompatible# → native stop; ship a native binary first (see below)Anda tidak bisa upload bundle yang butuh code native baru sambil tetap --fail-on-incompatible. Flag tersebut ada untuk memblokir kasus itu. Saat plugin, versi Capacitor, atau dependensi native lainnya sengaja diubah:
--fail-on-incompatible.--auto-min-update-version dengan channel pada metadata strategi agar perangkat yang masih menggunakan binary lama tidak menerima bundle baru sampai mereka menginstal aplikasi baru.--fail-on-incompatible ke alur CI OTA normal (dan tetap) --auto-min-update-version selama channel tetap pada metadata).Sekali per channel: aktifkan metadata gating
npx @capgo/cli@latest channel set production com.example.app --disable-auto-update metadataUlangi untuk dev jika channel tersebut juga menerima native baseline secara sengaja. Setelah switch ini, setiap upload ke channel tersebut harus menyertakan --auto-min-update-version atau --min-update-version.
Rilis native binary
Build dan submit aplikasi iOS/Android yang menyertakan plugin baru atau perubahan native. Sebelum user menginstal binary tersebut, mereka tidak bisa menjalankan bundle yang bergantung pada native package tersebut dengan aman.
Upload OTA baseline yang sesuai (tidak --fail-on-incompatible)
npx @capgo/cli@latest bundle upload com.example.app \ --channel production \ --auto-min-update-versionIni mencatat native package baru pada channel. Nantinya, bundle releaseType / --fail-on-incompatible akan menggunakan baseline tersebut.
Lanjutkan upload OTA yang aman
Rilis JS-only berikutnya akan menggunakan kedua flag lagi:
npx @capgo/cli@latest bundle upload com.example.app \ --channel production \ --fail-on-incompatible \ --auto-min-update-version--fail-on-incompatible dan tetap push bundle yang tidak kompatibel secara native?Tidak. Jika native package pada upload berbeda dari live bundle di channel tersebut, flag ini sengaja akan menggagalkan command tersebut. Untuk melakukan native bump yang disengaja, hapus flag tersebut pada satu kali upload itu (dan gunakan --auto-min-update-version saat memungkinkan).
Ya. Itu adalah cara resmi untuk memperbarui native baseline pada channel setelah Anda merilis binary baru. Tetap gunakan flag tersebut pada setiap upload OTA lainnya agar accidental native drift tetap menggagalkan CI.
dev pertama, kemudian production?Ya, jika itu sesuai dengan workflow Anda. Jalankan aturan yang sama per channel: pengecekan kompatibilitas dilakukan terhadap apa pun yang sedang live di channel target. Promote atau upload ulang ke production hanya setelah dev terlihat oke, dan gunakan native-baseline upload (tanpa --fail-on-incompatible) di setiap channel yang paket native barunya perlu dicatat.
CI gagal dan Capgo tidak mengirimkan upload tersebut. Itu adalah hasil yang diharapkan. Entah perubahannya tidak sengaja (perbaiki paket native dan coba lagi sebagai OTA), atau memang disengaja (gunakan jalur native di atas).
| Path | Saat | Flag upload |
|---|---|---|
| OTA | Hanya JS; paket native harus sesuai channel | --fail-on-incompatible + --auto-min-update-version (wajib jika channel berada di metadata) |
| Baseline Native | Binary native baru + JS bundle yang sesuai | Tidak --fail-on-incompatible; tetap --auto-min-update-version |
Kompatibilitas Native
Cara Capgo mendeteksi drift paket native dan arti ketidakcocokan bagi perangkat.
Auto OTA atau Native
Hubungkan bundle releaseType ke GitHub Actions atau GitLab agar CI memilih jalur yang tepat.
Targeting Versi
Channel, aturan semver, dan strategi metadata untuk delivery floors.
CLI: bundle
Referensi untuk upload, kompatibilitas, releaseType, dan flag terkait.
Jika Anda menggunakan Alur Kerja Native + OTA Channel agar Live Update tetap aman di setiap native release, hubungkan dengan Kompatibilitas Native untuk aturan perbandingan package, Auto OTA atau Native untuk branching CI, Targeting Versi untuk metadata floors, dan referensi bundle Capgo CLI untuk flag upload.