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 API level tertentu. Dokumen ini menjelaskan 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 untuk "4" dan menetapkan smallScreens="false" di aplikasi, lalu saat mengupload aplikasi ke Google Play, Anda dapat menargetkan negara Eropa (operator) 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 dari satu versi ke versi lain. 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 penginstalan 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

Aplikasi menunjukkan ukuran layar yang dapat didukung dengan menetapkan 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 API Level. Khususnya:

  • Untuk aplikasi yang menetapkan android: minSdkVersion atau android: targetSdkVersion ke 3 atau yang lebih rendah, elemen <supports-screens> tidak ditentukan 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.

  • Jika salah satu dari android: minSdkVersion atau android: targetSdkVersion ditetapkan ke 4 atau yang lebih tinggi, default untuk semua atribut adalah "true". Dengan demikian, 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 menyertakan 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 selengkapnya tentang cara mendeklarasikan dukungan 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 selengkapnya, lihat <uses-configuration>.

<uses-feature> Fitur Perangkat
(name)

Aplikasi dapat meminta fitur perangkat tertentu ada pada perangkat. Fungsi ini diperkenalkan di 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 mengetahui 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.

Versi OpenGL-ES
(openGlEsVersion)

Aplikasi dapat meminta 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 tersebut mendukung OpenGL-ES versi X, Google Play menganggap perangkat juga mendukung semua versi yang lebih lama dari X.

Contoh 3
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 yang tidak menetapkan openGlEsVersion kepada pengguna, atau aplikasi yang tidak menetapkan versi OpenGL-ES yang 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 selengkapnya, 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 selengkapnya, lihat <uses-library>.

<uses-permission>  

Secara ketat, Google Play tidak memfilter berdasarkan elemen <uses-permission>. Namun, Google Play 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 tersebut 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 bisa meminta API level minimum.

Contoh 1
Manifes menyertakan <uses-sdk android:minSdkVersion="3">, dan aplikasi menggunakan API yang diperkenalkan di 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 di 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 mengizinkan pengguna mendownloadnya. Aplikasi error pada waktu proses.

Karena ingin menghindari skenario kedua ini, sebaiknya Anda selalu mendeklarasikan minSdkVersion. Untuk detailnya, lihat android:minSdkVersion.

Versi Framework Maksimum (maxSdkVersion)

Tidak digunakan lagi. Android 2.1 dan yang lebih baru tidak memeriksa atau menerapkan atribut maxSdkVersion, serta 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 direkomendasikan. Untuk 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. Elemen manifes 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. Sebaiknya gunakan elemen manifes <supports-screens> (dijelaskan di atas dalam tabel 1) guna 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 di bagian 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 library native yang menargetkan arsitektur CPU tertentu (misalnya ARM EABI v7 atau x86) hanya terlihat di perangkat yang mendukung arsitektur tersebut. Untuk detail tentang NDK dan penggunaan library native, 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 Pengganti untuk Perlindungan dari Penyalinan untuk mengetahui informasi selengkapnya.

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

    Menggunakan elemen <supports-gl-texture>.

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

    Menggunakan elemen <supports-screens> atau <compatible-screens>.

  • API level

    Dengan menggunakan elemen <uses-sdk>.

  • Arsitektur CPU (ABI)

    Dengan menyertakan library native 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 listingan aplikasi yang sama 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 memperhatikan kode versi untuk setiap APK guna memastikan jalur update yang sesuai bagi setiap konfigurasi.

Jika memerlukan informasi selengkapnya tentang cara memublikasikan multi-APK di Google Play, baca Dukungan Multi-APK.

Lihat juga

  1. Kompatibilitas Android
  2. Dukungan Multi-APK