Lompat ke konten utama
Tutorial

Apakah Google Mengizinkan Live Updates Tanpa Review Play Store?

Ya. Google Play mengizinkan update over-the-air untuk code yang bersifat interpreted seperti JavaScript di dalam WebView, namun melarang download file dex, JAR, atau .so. Berikut adalah kebijakan resminya dan bagaimana hal tersebut berlaku untuk aplikasi Capacitor.

Apakah Google Mengizinkan Live Updates Tanpa Review Play Store?

Jawaban singkat: ya, Google Play mengizinkan live updates untuk code yang bersifat 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 file.

Google lebih jelas dibanding Apple dalam hal ini: pengecualian untuk JavaScript di WebView tertulis langsung di dalam kebijakan mereka. Halaman ini mengutipnya, menunjukkan batasannya, dan menjelaskan cara Google menerapkannya.

Ini bukan saran hukum. Ini adalah interpretasi kebijakan saat ini dan bagaimana ribuan aplikasi menerapkannya di produksi.

Apa isi kebijakan Google Play sebenarnya

Aturannya ada di dalam kebijakan Device and Network Abuse:

Aplikasi yang didistribusikan via Google Play tidak boleh memodifikasi, mengganti, atau memperbarui dirinya sendiri menggunakan metode apa pun selain mekanisme update 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 virtual machine atau interpreter yang memberikan akses tidak langsung ke Android API (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 dibundel dalam aplikasi) tidak boleh memungkinkan adanya potensi pelanggaran kebijakan Google Play.

Jadi ada dua aturan:

  1. code Native hanya boleh berasal dari Google Play. Tidak boleh ada dex, JAR, atau library native yang diunduh.
  2. code terinterpretasi bisa berasal dari mana saja, tapi fungsinya harus tetap mematuhi setiap kebijakan Play.

Lapisan web pada aplikasi Capacitor adalah JavaScript, HTML, dan CSS yang berjalan di Android WebView, persis seperti contoh dari Google. Ini termasuk 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, perubahan teks, layar baru pada web stack Anda Mengganti aplikasi di luar mekanisme update Google Play
A/B test dan staged rollout pada 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 dijelaskan di listing
Melakukan rollback pada 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 Penargetan versi menjauhkan bundle yang membutuhkan native code baru dari binary lama.

Cara Google menegakkannya

Google memindai aplikasi untuk mencari executable code yang diunduh dan perilaku yang berubah setelah instalasi. Pemeriksaan 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 tersebut 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.
  • Jaga konsistensi aplikasi dengan listing Play Store dan formulir Data safety Anda.
  • Rilis perubahan native dan peluncuran besar melalui Google Play, dengan peluncuran bertahap jika Anda ingin rilis secara bertahap.

Stack mana yang bisa melakukannya di Android?

Apakah aplikasi Anda bisa melakukan over-the-air updates di Android bergantung pada satu hal: apakah logika aplikasi Anda diinterpretasikan saat runtime? JavaScript dan code terinterpretasi lainnya, ya. File dex, JAR, dan native yang diunduh, .so tidak. Framework dengan AOT-compiled seperti Flutter hanya bisa melalui 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 (pada 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, sebagian besar buatan sendiri
Flutter Dart dikompilasi AOT menjadi library native Hanya via VM atau interpreter Shorebird
Native Kotlin / Java dex bytecode pada ART Tidak untuk native code; ya untuk JavaScript di WebView Konfigurasi jarak jauh, Play Feature Delivery
Kotlin / Compose Multiplatform dex bytecode pada ART Tidak Konfigurasi jarak jauh, Play Feature Delivery
.NET MAUI / Xamarin Runtime .NET plus library native di dalam APK Tidak Hanya remote config
Unity / Unreal C# via IL2CPP atau C++, terkompilasi Tidak untuk code, ya untuk konten Asset bundles, Play Asset Delivery, konten skrip (Lua)
Web wrapper / TWA Website yang dimuat di WebView atau Chrome Selalu live Tidak butuh

Capacitor, Ionic dan Cordova: tercover penuh

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

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

React Native dan Expo: JavaScript bisa, native modules tidak

React Native menjalankan JavaScript bundle di Hermes, yang tergolong code yang diinterpretasikan. Expo Updates dan Microsoft CodePush yang kini sudah pensiun memperbarui bundle tersebut. Tim yang pindah dari CodePush butuh pengganti. Native modules dan upgrade React Native butuh rilis baru.

Flutter: hanya melalui VM atau interpreter

Flutter mengompilasi Dart secara ahead-of-time menjadi libapp.so. Mengunduh versi baru .so dilarang secara eksplisit, jadi Flutter standar tidak bisa pakai live updates. Shorebird menambahkan push code dan menyatakan patuh pada kebijakan Play dengan menjalankan update melalui 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 tepat yang dilarang kebijakan tersebut. Alternatif dari Google adalah Pengiriman Fitur secara Playful, yang mengunduh modul code melalui Google Play. Jika tidak, code native tidak bisa berubah. Aplikasi Kotlin atau Java yang menjalankan JavaScript di WebView tetap bisa memperbarui code tersebut, karena kebijakan ini mengecualikan code yang bersifat interpreted. Logika native lainnya terbatas pada remote config, feature flags, dan server-driven UI.

Unity dan game engine: konten boleh, code tidak

Game code dikompilasi. Asset bundles dan Play Asset Delivery menangani konten, sementara bahasa scripting seperti Lua bersifat interpreted code, yang diizinkan kebijakan selama hasilnya mematuhi kebijakan Play.

Web wrapper dan Trusted Web Activities: bersifat live secara alami

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

Batasan stack pada Android

Apa pun framework Anda, live update tidak bisa:

  • Download dex, JAR, APK, atau file native .so file di luar Google Play
  • Menambah permission Android baru
  • Membuat app melakukan hal yang dilarang kebijakan Google Play
  • Mengubah app menjadi sesuatu yang tidak sesuai deskripsi Play Store

Langkah selanjutnya

Rilis perbaikan hari ini, tanpa menunggu review

Capgo live updates push perubahan JavaScript, HTML, dan CSS ke aplikasi Capacitor Anda dalam hitungan menit, lengkap dengan fitur channels, rollbacks, delta updates, dan end-to-end encryption. Bersifat open source dan bisa di-self-host.

bunx @capgo/cli@latest init

Ikuti quickstart untuk mengirim update pertama Anda.

Live update untuk aplikasi Capacitor

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

Terbaru dari Blog kami

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