Filter di Google Play

Saat pengguna menelusuri atau menjelajahi aplikasi untuk didownload di Google Play, hasil penelusuran difilter berdasarkan kompatibilitas perangkat. Misalnya, jika suatu aplikasi memerlukan kamera, Google Play tidak akan menampilkan aplikasi pada perangkat yang tidak memiliki kamera. Pemfilteran ini membantu developer mengelola distribusi aplikasi dan membantu memastikan pengalaman terbaik untuk pengguna.

Pemfilteran di Google Play berdasarkan pada beberapa jenis metadata aplikasi dan setelan konfigurasi, termasuk deklarasi manifes, library yang diperlukan, dependensi arsitektur, dan set kontrol distribusi dalam Konsol Google Play, seperti penargetan geografis, harga, dan lain-lain.

Pemfilteran Google Play sebagian berdasarkan pada deklarasi manifes dan aspek lainnya dari framework Android, tetapi perilaku pemfilteran yang sebenarnya berbeda dengan framework tersebut dan tidak terikat pada level API tertentu. Dokumen ini menentukan aturan pemfilteran saat ini yang digunakan oleh Google Play.

Cara kerja filter di Google Play

Google Play menggunakan pembatasan filter yang dijelaskan di bawah ini untuk menentukan apakah akan menampilkan aplikasi Anda pada pengguna yang sedang menjelajahi atau menelusuri aplikasi dari Google Play.

Saat menentukan apakah akan menampilkan aplikasi Anda, Google Play memeriksa persyaratan hardware dan software untuk perangkat, operator, lokasi, dan karakteristik lainnya. Kemudian semua itu dibandingkan dengan batasan dan dependensi yang dinyatakan oleh file manifes dan detail publikasi aplikasi.

Jika aplikasi tersebut kompatibel dengan perangkat sesuai aturan filter, Google Play akan menampilkan aplikasi itu kepada pengguna. Jika tidak, Google Play akan menyembunyikan aplikasi Anda dari hasil penelusuran dan penjelajahan kategori, bahkan jika pengguna secara khusus meminta aplikasi dengan mengklik deep link yang mengarah langsung ke ID aplikasi dalam Google Play.

Anda dapat menggunakan kombinasi filter yang tersedia untuk aplikasi. Misalnya, Anda dapat menetapkan persyaratan minSdkVersion "4" dan menetapkan smallScreens="false" dalam aplikasi, kemudian saat mengupload aplikasi ke Google Play Anda dapat menargetkan negara-negara (operator) Eropa saja. Filter Google Play dengan demikian akan mencegah tersedianya aplikasi pada perangkat yang tidak sesuai dengan ketiga persyaratan ini.

Semua pembatasan pemfilteran dikaitkan dengan versi aplikasi dan dapat berubah antar versi. Misalnya, jika pengguna telah menginstal aplikasi Anda dan Anda memublikasikan update yang membuat aplikasi tersebut tidak terlihat oleh pengguna, maka pengguna tidak akan melihat adanya update.

Pemfilteran di situs Google Play

Saat pengguna menjelajahi situs Google Play, mereka dapat melihat semua aplikasi yang dipublikasikan. Situs Google Play membandingkan persyaratan aplikasi dengan setiap perangkat pengguna yang terdaftar untuk mengetahui kompatibilitasnya, dan hanya mengizinkan menginstal aplikasi yang kompatibel dengan perangkat mereka.

Pemfilteran berdasarkan manifes aplikasi

Sebagian besar filter dipicu oleh elemen dalam file manifes aplikasi, AndroidManifest.xml (meskipun tidak semua yang ada dalam file manifes dapat memicu pemfilteran). Tabel 1 mencantumkan elemen manifes yang harus Anda gunakan untuk memicu pemfilteran, dan menjelaskan cara kerja pemfilteran untuk masing-masing elemen.

Tabel 1. Elemen manifes yang memicu pemfilteran di Google Play.

Elemen Manifes Nama Filter Cara Kerja
<supports-screens> Ukuran Layar

Sebuah aplikasi menunjukkan ukuran layar yang mampu didukung dengan menyetel atribut elemen <supports-screens>. Saat aplikasi dipublikasikan, Google Play akan menggunakan atribut tersebut untuk menentukan apakah akan menampilkan aplikasi kepada pengguna, berdasarkan ukuran layar perangkat mereka.

Sebagai aturan umum, Google Play mengasumsikan bahwa platform pada perangkat dapat menyesuaikan layout yang lebih kecil ke layar yang lebih besar, tetapi tidak dapat menyesuaikan layout yang lebih besar ke layar yang lebih kecil. Jadi, jika sebuah aplikasi mendeklarasikan dukungan hanya untuk ukuran layar "normal", Google Play membuat aplikasi tersedia untuk perangkat dengan layar normal dan layar besar, tetapi memfilter aplikasi sehingga tidak tersedia untuk perangkat dengan layar kecil.

Jika aplikasi tidak mendeklarasikan atribut untuk <supports-screens>, Google Play akan menggunakan nilai default atribut tersebut, yang bervariasi menurut Level API. Khususnya:

  • Untuk aplikasi yang menetapkan android: minSdkVersion atau android: targetSdkVersion ke 3 atau yang lebih rendah, elemen <supports-screens> tidak didefinisikan dan tidak ada atribut yang tersedia. Dalam hal ini, Google Play menganggap aplikasi tersebut didesain untuk layar berukuran normal dan menampilkan aplikasi tersebut pada perangkat yang memiliki layar normal atau lebih besar.

  • Saat salah satu dari android: minSdkVersion atau android: targetSdkVersion ditetapkan ke 4 atau yang lebih tinggi, default untuk semua atribut adalah "true". Dengan cara ini, aplikasi dianggap mendukung semua ukuran layar secara default.

Contoh 1
Manifes mendeklarasikan <uses-sdk android:minSdkVersion="3"> dan tidak menyertakan elemen <supports-screens>. Hasil: Google Play tidak akan menampilkan aplikasi kepada pengguna perangkat layar kecil, tetapi akan menampilkannya kepada pengguna perangkat layar normal dan besar, kecuali jika filter lain diterapkan.

Contoh 2
Manifes mendeklarasikan <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"> dan tidak termasuk elemen <supports-screens>. Hasil: Google Play akan menampilkan aplikasi kepada pengguna semua perangkat, kecuali jika filter lain diterapkan.

Contoh 3
Manifes mendeklarasikan <uses-sdk android:minSdkVersion="4"> dan tidak menyertakan elemen <supports-screens>. Hasil: Google Play akan menampilkan aplikasi kepada semua pengguna, kecuali jika filter lain diterapkan.

Untuk informasi lebih lanjut tentang cara mendeklarasikan dukungan untuk ukuran layar di aplikasi Anda, lihat <supports-screens> dan Mendukung Beberapa Layar.

<uses-configuration> Konfigurasi Perangkat
keyboard, navigasi, layar sentuh

Aplikasi dapat meminta fitur hardware tertentu, dan Google Play hanya akan menampilkan aplikasi pada perangkat yang memiliki hardware yang diperlukan.

Contoh 1
Manifes menyertakan <uses-configuration android:reqFiveWayNav="true" />, dan pengguna sedang menelusuri aplikasi pada perangkat yang tidak memiliki kontrol navigasi lima arah. Hasil: Google Play tidak akan menampilkan aplikasi kepada pengguna tersebut.

Contoh 2
Manifes tidak menyertakan elemen <uses-configuration>. Hasil: Google Play akan menampilkan aplikasi kepada semua pengguna, kecuali jika filter lain diterapkan.

Untuk detail lebih lanjut, lihat <uses-configuration>.

<uses-feature> Fitur Perangkat
(name)

Aplikasi dapat mengharuskan fitur perangkat tertentu ada pada perangkat. Fungsionalitas ini diperkenalkan dalam Android 2.0 (API Level 5).

Contoh 1
Manifes menyertakan <uses-feature android:name="android.hardware.sensor.light" />, dan pengguna sedang menelusuri aplikasi pada perangkat yang tidak memiliki sensor cahaya. Hasil: Google Play tidak akan menampilkan aplikasi kepada pengguna tersebut.

Contoh 2
Manifes tidak menyertakan elemen <uses-feature>. Hasil: Google Play akan menampilkan aplikasi kepada semua pengguna, kecuali jika filter lain diterapkan.

Untuk informasi selengkapnya, lihat <uses-feature>

Pemfilteran berdasarkan fitur tersirat: Dalam beberapa kasus, Google Play menafsirkan izin yang diminta melalui elemen <uses-permission> sebagai persyaratan fitur yang setara dengan yang dideklarasikan dalam elemen <uses-feature>. Lihat <uses-permission>, di bawah ini.

Versi OpenGL-ES
(openGlEsVersion)

Aplikasi dapat meminta agar perangkat mendukung versi OpenGL-ES tertentu menggunakan atribut <uses-feature android:openGlEsVersion="int">.

Contoh 1
Aplikasi meminta beberapa versi OpenGL-ES dengan menetapkan openGlEsVersion beberapa kali dalam manifes. Hasil: Google Play menganggap aplikasi meminta versi yang tertinggi dari versi yang disebutkan.

Contoh 2
Aplikasi meminta OpenGL-ES versi 1.1, dan pengguna sedang menelusuri aplikasi pada perangkat yang mendukung OpenGL-ES versi 2.0. Hasil: Google Play akan menampilkan aplikasi kepada pengguna tersebut, kecuali jika filter lain diterapkan. Jika perangkat melaporkan bahwa perangkat mendukung OpenGL-ES versi X, Google Play menganggap perangkat juga mendukung semua versi sebelum X.

Contoh 3
Seorang pengguna sedang menelusuri aplikasi pada perangkat yang tidak melaporkan versi OpenGL-ES (misalnya, perangkat yang menjalankan Android 1.5 atau sebelumnya). Hasil: Google Play menganggap perangkat hanya mendukung OpenGL-ES 1.0. Google Play hanya akan menampilkan aplikasi pengguna yang tidak menetapkan openGlEsVersion, atau aplikasi yang tidak menetapkan versi OpenGL-ES lebih tinggi dari 1.0.

Contoh 4
Manifes tidak menetapkan openGlEsVersion. Hasil: Google Play akan menampilkan aplikasi kepada semua pengguna, kecuali jika filter lain diterapkan.

Untuk detail lebih lanjut, lihat <uses-feature>.

<uses-library> Library Software

Aplikasi dapat meminta library bersama tertentu harus ada pada perangkat.

Contoh 1
Aplikasi meminta library com.google.android.maps, dan pengguna sedang menelusuri aplikasi pada perangkat yang tidak memiliki library com.google.android.maps. Hasil: Google Play tidak akan menampilkan aplikasi kepada pengguna tersebut.

Contoh 2
Manifes tidak menyertakan elemen <uses-library>. Hasil: Google Play akan menampilkan aplikasi kepada semua pengguna, kecuali jika filter lain diterapkan.

Untuk detail lebih lanjut, lihat <uses-library>.

<uses-permission>  

Secara ketat, Google Play tidak memfilter berdasarkan elemen <uses-permission>. Namun, tetap membaca elemen tersebut untuk menentukan apakah aplikasi memiliki persyaratan fitur hardware yang mungkin belum dideklarasikan dengan benar dalam elemen <uses-feature>. Misalnya, jika aplikasi meminta izin CAMERA tetapi tidak mendeklarasikan elemen <uses-feature> untuk android.hardware.camera, Google Play menganggap bahwa aplikasi tersebut memerlukan kamera dan aplikasi tidak akan ditampilkan kepada pengguna yang perangkatnya tidak memiliki kamera.

Secara umum, jika aplikasi meminta izin terkait hardware, Google Play menganggap aplikasi itu memerlukan fitur hardware tersebut, meskipun mungkin tidak terkait dengan deklarasi <uses-feature>. Google Play kemudian menyiapkan pemfilteran berdasarkan fitur yang disebutkan oleh deklarasi <uses-feature>.

Untuk daftar izin yang menyiratkan fitur hardware, lihat dokumentasi untuk elemen <uses-feature>.

<uses-sdk> Versi Framework Minimum (minSdkVersion)

Aplikasi dapat meminta level API minimum.

Contoh 1
Manifes menyertakan <uses-sdk android:minSdkVersion="3">, dan aplikasi menggunakan API yang diperkenalkan dalam API Level 3. Pengguna sedang menelusuri aplikasi pada perangkat yang memiliki API Level 2. Hasil: Google Play tidak akan menampilkan aplikasi kepada pengguna tersebut.

Contoh 2
Manifes tidak menyertakan minSdkVersion, dan aplikasi menggunakan API yang diperkenalkan dalam API Level 3. Pengguna sedang menelusuri aplikasi pada perangkat yang memiliki API Level 2. Hasil: Google Play menganggap minSdkVersion adalah "1" dan menganggap aplikasi tersebut kompatibel dengan semua versi Android. Google Play menampilkan aplikasi tersebut kepada pengguna dan memungkinkan pengguna untuk mendownloadnya. Aplikasi error saat waktu proses.

Karena Anda ingin menghindari skenario kedua ini, kami sarankan agar Anda selalu mendeklarasikan minSdkVersion. Untuk mengetahui detailnya, lihat android:minSdkVersion.

Versi Framework Maksimum (maxSdkVersion)

Tidak digunakan lagi. Android 2.1 dan yang lebih baru tidak memeriksa atau menerapkan atribut maxSdkVersion, dan SDK tidak akan mengompilasi jika maxSdkVersion ditetapkan dalam manifes aplikasi. Untuk perangkat yang sudah dikompilasi dengan maxSdkVersion, Google Play akan menghargainya dan menggunakannya untuk pemfilteran.

Mendeklarasikan maxSdkVersion tidak disarankan. Untuk mengetahui detailnya, lihat android:maxSdkVersion.

Pemfilteran manifes lanjutan

Selain elemen manifes dalam tabel 1, Google Play juga dapat memfilter aplikasi berdasarkan elemen manifes lanjutan dalam tabel 2.

Elemen manifes ini dan pemfilteran yang dipicunya hanya untuk kasus penggunaan pengecualian. Ini didesain untuk jenis game berperforma tinggi tertentu dan aplikasi serupa yang memerlukan kontrol ketat pada distribusi aplikasi. Umumnya aplikasi tidak perlu menggunakan filter ini.

Tabel 2. Elemen manifes lanjutan untuk pemfilteran Google Play.

Elemen ManifesRingkasan
<compatible-screens>

Google Play memfilter aplikasi jika ukuran layar perangkat dan kepadatannya tidak sesuai dengan konfigurasi layar apa pun (dideklarasikan oleh elemen <screen>) dalam elemen <compatible-screens>.

Perhatian: Biasanya, Anda tidak perlu menggunakan elemen manifes ini. Menggunakan elemen ini dapat mengurangi basis pengguna potensial aplikasi Anda secara dramatis, dengan mengecualikan semua kombinasi ukuran layar dan kepadatan yang tidak Anda cantumkan. Anda sebaiknya menggunakan elemen manifes <supports-screens> (dijelaskan di atas dalam tabel 1) untuk mengaktifkan mode kompatibilitas layar untuk konfigurasi layar yang belum Anda perhitungkan dengan resource alternatif.

<supports-gl-texture>

Google Play akan memfilter aplikasi kecuali jika satu atau beberapa format kompresi tekstur GL yang didukung oleh aplikasi juga didukung oleh perangkat.

Filter lainnya

Google Play menggunakan karakteristik aplikasi untuk menentukan apakah harus menampilkan atau menyembunyikan aplikasi untuk pengguna tertentu pada perangkat tertentu, seperti dijelaskan dalam tabel di bawah ini.

Tabel 3. Karakteristik aplikasi dan publikasi yang memengaruhi pemfilteran di Google Play.

Nama Filter Cara Kerja
Status Publikasi

Hanya aplikasi yang telah dipublikasikan yang akan muncul dalam penelusuran dan penjelajahan dalam Google Play.

Meski aplikasi tidak dipublikasikan, aplikasi dapat diinstal jika pengguna dapat melihatnya di area Download di antara aplikasi yang dibeli, diinstal, atau di-uninstal.

Jika aplikasi ditangguhkan, pengguna tidak akan dapat menginstal ulang atau mengupdate aplikasi tersebut, meskipun muncul dalam area Download.

Status Harga

Tidak semua pengguna dapat melihat aplikasi berbayar. Untuk menampilkan aplikasi berbayar, perangkat harus menjalankan Android 1.1 atau yang lebih baru, dan harus berada di negara yang menyediakan aplikasi berbayar. Jika perangkat memiliki kartu SIM, operator SIM menentukan apakah aplikasi berbayar tersedia atau tidak. Jika perangkat tidak memiliki kartu SIM, alamat IP perangkat digunakan untuk menentukan apakah perangkat tersebut berada di negara yang menyediakan aplikasi berbayar atau tidak.

Penargetan Negara

Saat Anda mengupload aplikasi ke Google Play, Anda dapat memilih negara tempat mendistribusikan aplikasi di bagian Harga dan Distribusi. Aplikasi tersebut kemudian akan tersedia untuk pengguna di negara-negara yang Anda pilih saja.

Arsitektur CPU (ABI)

Aplikasi yang menyertakan native library yang menargetkan arsitektur CPU tertentu (misalnya, ARM EABI v7 atau x86) hanya terlihat pada perangkat yang mendukung arsitektur tersebut. Untuk detail tentang NDK dan penggunaan native library, lihat Apa yang dimaksud Android NDK?

Aplikasi yang Dilindungi dari Penyalinan

Google Play tidak lagi mendukung fitur Perlindungan dari Penyalinan di Konsol Play dan tidak lagi memfilter aplikasi berdasarkan fitur tersebut. Sebagai gantinya, untuk mengamankan aplikasi Anda, gunakan Lisensi Aplikasi. Lihat Penggantian untuk Perlindungan dari Penyalinan untuk mengetahui informasi lebih lanjut.

Memublikasikan beberapa APK dengan filter berbeda

Beberapa filter Google Play tertentu memungkinkan Anda untuk memublikasikan beberapa APK untuk aplikasi yang sama guna menyediakan APK yang berbeda untuk konfigurasi ponsel yang berbeda. Misalnya, jika Anda membuat video game yang menggunakan aset visual high-fidelity, Anda mungkin membuat dua APK yang masing-masing mendukung format kompresi tekstur berbeda. Dengan cara ini, Anda dapat mengurangi ukuran file APK hanya dengan memasukkan tekstur yang diperlukan untuk masing-masing konfigurasi ponsel. Bergantung pada masing-masing dukungan perangkat untuk format kompresi tekstur Anda, Google Play akan memberinya APK yang telah Anda deklarasikan untuk mendukung perangkat tersebut.

Saat ini, Google Play memungkinkan Anda untuk memublikasikan beberapa APK untuk aplikasi yang sama hanya ketika masing-masing APK menyediakan filter yang berbeda berdasarkan konfigurasi berikut:

  • Format kompresi tekstur OpenGL

    Dengan menggunakan elemen <supports-gl-texture>.

  • Ukuran layar (dan, secara opsional, kepadatan layar)

    Dengan menggunakan elemen <supports-screens> atau <compatible-screens>.

  • Level API

    Dengan menggunakan elemen <uses-sdk>.

  • Arsitektur CPU (ABI)

    Dengan menyertakan native library yang dibuat menggunakan Android NDK yang menargetkan arsitektur CPU tertentu (misalnya ARM EABI v7 atau x86).

Semua filter lain tetap berfungsi seperti biasa, tetapi keempat filter tersebut adalah satu-satunya filter yang dapat membedakan satu APK dari yang lain dalam aplikasi yang sama dengan yang tercantum di Google Play. Misalnya, Anda tidak dapat memublikasikan beberapa APK untuk aplikasi yang sama jika APK tersebut hanya dibedakan berdasarkan apakah perangkat memiliki kamera atau tidak.

Perhatian: Memublikasikan beberapa APK untuk aplikasi yang sama dianggap sebagai fitur lanjutan dan kebanyakan aplikasi hanya akan memublikasikan satu APK yang mendukung berbagai konfigurasi ponsel. Memublikasikan beberapa APK mengharuskan Anda mengikuti aturan tertentu dalam filter dan lebih memerhatikan kode versi untuk setiap APK guna memastikan jalur update yang sesuai bagi setiap konfigurasi.

Jika Anda memerlukan informasi lebih lanjut tentang cara memublikasikan beberapa APK di Google Play, baca Dukungan Beberapa APK.

Lihat juga

  1. Kompatibilitas Android
  2. Dukungan beberapa APK