Langsung ke konten utama
Tutorial

Apakah Google Mengizinkan Live Updates Tanpa Review Play Store?

Ya. Google Play mengizinkan update over-the-air untuk code yang diinterpretasikan seperti JavaScript di WebView, tetapi melarang download file dex, JAR, atau .so. Berikut kebijakan persisnya dan cara penerapannya untuk aplikasi Capacitor.

Apakah Google Mengizinkan Live Updates Tanpa Review Play Store? Capgo ilustrasi blog

Jawaban singkat: ya, Google Play mengizinkan live update untuk code yang interpreted. Anda bisa push JavaScript, HTML, dan CSS baru ke aplikasi Android tanpa review Play Store baru. Anda tidak bisa download native code seperti dex, JAR, atau .so tersebut.

Google lebih jelas daripada Apple di sini: pengecualian untuk JavaScript di WebView tertulis langsung dalam kebijakan mereka. Halaman ini mengutipnya, menunjukkan di mana batasnya, dan menjelaskan bagaimana Google menegakkannya.

Ini bukan nasihat hukum. Ini adalah cara kebijakan tersebut dibaca saat ini dan bagaimana ribuan aplikasi menggunakannya di lingkungan produksi.

Apa sebenarnya isi kebijakan Google Play

Aturannya ada di Kebijakan Penyalahgunaan Perangkat dan Jaringan:

Aplikasi yang didistribusikan melalui Google Play tidak boleh memodifikasi, mengganti, atau memperbarui dirinya sendiri menggunakan metode apa pun selain mekanisme pembaruan Google Play. Demikian pula, aplikasi tidak boleh mengunduh code yang dapat dieksekusi (seperti file dex, JAR, .so) dari sumber selain Google Play. Pembatasan ini tidak berlaku untuk code yang berjalan di mesin virtual atau interpreter yang memberikan akses tidak langsung ke API Android (seperti JavaScript di webview atau browser).

Dan tepat setelahnya:

Aplikasi atau code pihak ketiga, seperti SDK, dengan bahasa terinterpretasi (JavaScript, Python, Lua, dll.) yang dimuat saat runtime (misalnya, tidak dikemas dengan aplikasi) tidak boleh memungkinkan potensi pelanggaran kebijakan Google Play.

Jadi ada dua aturan:

  1. code native hanya berasal dari Google Play. Tidak ada dex, JAR, atau pustaka native yang diunduh.
  2. code terinterpretasi bisa berasal dari mana saja, tapi apa yang dilakukannya harus tetap mematuhi semua kebijakan Play.

Lapisan web aplikasi Capacitor adalah JavaScript, HTML, dan CSS yang berjalan di Android WebView, persis contoh yang diberikan Google. Ini masuk dalam pengecualian.

Di mana batasannya

Diizinkan dengan live update Tidak diizinkan dengan live update
Perbaikan bug pada JavaScript, HTML, CSS Anda Mengunduh dex, JAR, APK, atau .so file
Perubahan UI, teks, dan layar baru di web stack yang sudah ada Mengganti aplikasi di luar mekanisme update Google Play
A/B test dan staged rollout untuk web code Mengirim code yang melanggar kebijakan Play (perilaku menipu, malware, konten yang melanggar kebijakan)
Update gambar, terjemahan, konfigurasi Mengubah aplikasi jadi sesuatu yang tidak sesuai deskripsi listing
Melakukan rollback rilis yang bermasalah Melewati izin atau keamanan Android

Capgo hanya mengirimkan kolom kiri. Segala hal yang bersifat native, seperti plugin Capacitor baru, izin baru di AndroidManifest.xml, atau dependensi Gradle, tetap memerlukan rilis baru melalui Google Play. Capgo memiliki targeting versi yang memisahkan bundle yang butuh native code baru dari binary lama.

Cara Google menegakkannya

Google memindai aplikasi untuk mencari executable code yang diunduh dan perilaku yang berubah setelah instalasi. Pengecekan otomatis mencari pemuatan dex atau library native dari luar APK. JavaScript di dalam WebView tidak memicunya.

Risiko sebenarnya ada pada aturan kedua: jika live update membuat aplikasi melakukan sesuatu yang dilarang kebijakan Play, itu pelanggaran, terlepas dari bagaimana code itu sampai. Kebijakan perilaku menipu juga berlaku untuk aplikasi yang fungsinya berubah setelah review.

Dalam praktiknya:

  • Gunakan live updates untuk perbaikan dan iterasi pada aplikasi yang sudah Anda publikasikan.
  • Pastikan aplikasi konsisten dengan listing Play Store dan formulir Data safety Anda.
  • Rilis perubahan native dan peluncuran besar melalui Google Play, dengan staged rollout jika Anda ingin prosesnya bertahap.

Stack mana yang bisa melakukannya di Android?

Bisa tidaknya aplikasi Anda mengirim over-the-air update di Android bergantung pada satu pertanyaan: apakah logika aplikasi Anda diinterpretasikan saat runtime? JavaScript dan code terinterpretasi lainnya: ya. Dex, JAR, dan file native yang diunduh, .so tidak. Framework yang dikompilasi AOT seperti Flutter hanya bisa lewat VM atau interpreter.

Kompatibilitas live update Android berdasarkan stack

Stack Cara code berjalan di Android Live updates diizinkan? Tooling
Capacitor JavaScript, HTML, CSS di Android WebView Ya Capgo
Ionic (di Capacitor) Sama dengan Capacitor Ya Capgo
Cordova JavaScript di Android WebView Ya Capgo setelah migrasi ke Capacitor, plugin Cordova lama
React Native / Expo bundle JavaScript di Hermes Ya, hanya JavaScript Expo Updates, alternatif CodePush self-hosted
NativeScript JavaScript di V8 Ya, hanya JavaScript Terbatas, mayoritas buatan sendiri
Flutter Dart dikompilasi AOT menjadi library native Hanya melalui VM atau interpreter Shorebird
Kotlin / Java Native dex bytecode di ART Tidak untuk native code; ya untuk JavaScript di WebView Remote config, Play Feature Delivery
Kotlin / Compose Multiplatform dex bytecode di ART Tidak Remote config, Play Feature Delivery
.NET MAUI / Xamarin runtime .NET plus native libraries yang dikirim dalam APK Tidak Hanya remote config
Unity / Unreal C# via IL2CPP atau C++, dikompilasi Tidak untuk code, ya untuk konten Asset bundles, Play Asset Delivery, konten script (Lua)
Web wrapper / TWA Website yang dimuat di WebView atau Chrome Selalu live Tidak diperlukan

Capacitor, Ionic, dan Cordova: didukung penuh

UI dan business logic Anda adalah JavaScript yang berjalan di Android WebView—persis contoh yang diberikan kebijakan Google untuk code yang diizinkan. live update menggantikan web bundle; APK, native plugin, dan permission tetap yang Anda publikasikan.

Capgo patuh secara desain karena hanya bisa mengubah web layer. Plugin native baru, izin baru di AndroidManifest.xml dan perubahan dependensi Gradle tetap memerlukan rilis Google Play.

React Native dan Expo: JavaScript bisa, native modules tidak

React Native menjalankan JavaScript bundle di Hermes, yang dianggap sebagai code yang diinterpretasi. Expo Updates dan Microsoft CodePush yang kini sudah pensiun memperbarui bundle tersebut. Tim yang meninggalkan CodePush membutuhkan pengganti. Native module dan upgrade React Native memerlukan rilis baru.

Flutter: hanya melalui VM atau interpreter

Flutter mengompilasi Dart ahead-of-time menjadi libapp.so. Mengunduh versi baru .so secara eksplisit dilarang, jadi Flutter standar tidak bisa memakai live updates. Shorebird menambahkan push code dan menyatakan patuh pada kebijakan Play dengan menjalankan update lewat Dart virtual machine. Baca selengkapnya di live updates untuk aplikasi Flutter.

Native Kotlin, Java, dan Kotlin Multiplatform: tidak ada update code

Memuat file dex atau JAR yang diunduh dengan DexClassLoader adalah perilaku yang persis dilarang kebijakan tersebut. Alternatif Google sendiri adalah Pengiriman Fitur Play, yang mengunduh modul code melalui Google Play. Jika tidak, code native tidak bisa diubah. Aplikasi Kotlin atau Java yang menjalankan JavaScript di WebView tetap dapat memperbarui code tersebut, karena kebijakan tersebut mengecualikan code yang diinterpretasikan. Logika native lainnya terbatas pada remote config, feature flags, dan server-driven UI.

Unity dan game engine: konten bisa, code tidak

code game dikompilasi. Asset bundle dan Play Asset Delivery menangani konten, dan bahasa scripting yang disematkan seperti Lua diinterpretasikan sebagai code, yang diizinkan kebijakan selama hasilnya mematuhi kebijakan Play.

Web wrapper dan Trusted Web Activities: live secara alami

Trusted Web Activity atau WebView wrapper memuat website Anda, jadi otomatis ter-update setiap kali Anda deploy. Google Play menerima TWA. Offline caching dan native bridge bergantung pada apa yang diimplementasikan wrapper tersebut: TWA dapat menggunakan service worker PWA Anda, dan shell WebView dapat mengekspos JavaScript bridge jika Anda membangunnya. Aplikasi Capacitor yang dibundel membawa web bundle di dalam APK dan menambahkan lapisan plugin yang konsisten untuk live updates.

Apa yang tidak bisa dilakukan stack mana pun di Android

Apa pun framework Anda, live update tidak bisa:

  • Mengunduh dex, JAR, APK, atau native .so file di luar Google Play
  • Tambahkan izin Android baru
  • Membuat aplikasi melakukan sesuatu yang dilarang kebijakan Google Play
  • Mengubah aplikasi menjadi sesuatu yang tidak dijelaskan dalam listing Play Store

Ke mana selanjutnya

Rilis perbaikan hari ini, bukan setelah review

Live updates Capgo push perubahan JavaScript, HTML, dan CSS ke aplikasi Capacitor Anda dalam hitungan menit, dengan channels, rollback, delta updates, dan end-to-end encryption. Open source dan bisa di-self-host.

bunx @capgo/cli@latest init

Ikuti Mulai Cepat untuk mengirim update pertama Anda.

Live updates untuk aplikasi Capacitor

Saat bug web-layer sudah live, kirim perbaikannya lewat Capgo alih-alih menunggu berhari-hari untuk persetujuan app store. Pengguna mendapat update di background, sementara perubahan native tetap mengikuti jalur review normal.

Terbaru dari Blog kami

Capgo memberikan insight terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang benar-benar profesional.