Save the date! Android Dev Summit is coming to Mountain View, CA on November 7-8, 2018.

Filter di Google Play

Bila pengguna menelusuri atau menjelajah aplikasi untuk diunduh di Google Play, hasilnya akan difilter berdasarkan aplikasi mana yang kompatibel dengan perangkat. Misalnya, jika sebuah aplikasi memerlukan kamera, Google Play tidak akan menampilkan aplikasi pada perangkat yang tidak memiliki kamera. Pemfilteran ini membantu developer mengelola distribusi aplikasi mereka dan membantu memastikan pengalaman terbaik untuk pengguna.

Pemfilteran dalam Google Play berdasarkan pada beberapa tipe metadata aplikasi dan setelan konfigurasi, termasuk deklarasi manifes, pustaka yang diperlukan, dependensi arsitektur, dan set kontrol distribusi dalam Google Play Developer Console, seperti target geografis, penentuan harga, dan lain-lain.

Pemfilteran Google Play sebagian berdasarkan pada deklarasi manifes dan aspek lain dari kerangka kerja Android, namun perilaku pemfilteran yang sebenarnya berbeda dengan kerangka kerja itu dan tidak terikat pada API level tertentu. Dokumen ini menetapkan 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 melihat-lihat atau menelusuri aplikasi dari Google Play.

Saat menentukan apakah akan menampilkan aplikasi Anda, Google Play memeriksa persyaratan perangkat keras dan perangkat lunak 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 mengeklik tautan-dalam yang mengarah langsung ke ID aplikasi dalam Google Play.

Anda bisa menggunakan kombinasi filter yang tersedia untuk aplikasi. Misalnya, Anda bisa menetapkan persyaratan minSdkVersion dari "4" dan menetapkan smallScreens="false" dalam aplikasi, kemudian saat mengunggah aplikasi ke Google Play Anda bisa 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 batasan pemfilteran dikaitkan dengan versi aplikasi dan bisa berubah antar versi. Misalnya, jika pengguna telah memasang aplikasi Anda dan Anda mempublikasikan pembaruan yang membuat aplikasi itu tidak terlihat oleh pengguna, maka pengguna tidak akan melihat adanya pembaruan.

Pemfilteran di situs web Google Play

Bila pengguna menjelajahi situs web Google Play, mereka bisa melihat semua aplikasi yang dipublikasikan. Namun situs web Google Play membandingkan persyaratan aplikasi dengan setiap perangkat pengguna yang terdaftar untuk mengetahui kompatibilitasnya, dan hanya mengizinkan pemasangan 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 bisa 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>. Bila aplikasi ini 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 bisa menyesuaikan layout yang lebih kecil ke layar yang lebih besar, namun tidak bisa menyesuaikan layout yang lebih besar ke layar yang lebih kecil. Jadi, jika sebuah aplikasi mendeklarasikan dukungan untuk ukuran layar "normal" saja, Google Play membuat aplikasi tersedia untuk perangkat dengan layar normal dan layar besar, namun 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 mengatur android: minSdkVersion atau android: targetSdkVersion ke 3 atau yang lebih rendah, elemen <supports-screens> sendiri tidak didefinisikan dan tidak ada atribut yang tersedia. Dalam hal ini, Google Play menganggap aplikasi itu didesain untuk layar berukuran normal dan menampilkan aplikasi tersebut pada perangkat yang memiliki layar normal atau lebih besar.

  • Bila android: minSdkVersion atau android: targetSdkVersion diatur 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 memasukkan elemen <supports-screens>. Hasilnya: Google Play tidak akan menampilkan aplikasi kepada pengguna perangkat layar kecil, namun 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 memasukkan elemen <supports-screens>. Hasilnya: 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 memasukkan elemen <supports-screens>. Hasilnya: Google Play akan menampilkan aplikasi kepada semua pengguna, kecuali jika filter lain diterapkan.

Untuk informasi selengkapnya tentang cara mendeklarasikan dukungan terhadap ukuran layar dalam aplikasi Anda, lihat <supports-screens> dan Mendukung Multi Layar.

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

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

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

Contoh 2
Manifes tidak memasukkan elemen <uses-configuration>. Hasilnya: 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 bisa 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. Hasilnya: Google Play tidak akan menampilkan aplikasi kepada pengguna tersebut.

Contoh 2
Manifes tidak memasukkan elemen <uses-feature>. Hasilnya: 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 bisa meminta agar perangkat mendukung versi OpenGL-ES tertentu menggunakan atribut <uses-feature android:openGlEsVersion="int">.

Contoh 1
Aplikasi meminta versi multi OpenGL-ES dengan menetapkan openGlEsVersion beberapa kali dalam manifes. Hasilnya: Google Play menganggap aplikasi meminta 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. Hasilnya: 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
Pengguna sedang menelusuri aplikasi pada perangkat yang tidak melaporkan versi OpenGL-ES (misalnya, perangkat yang menjalankan Android 1.5 atau sebelumnya). Hasilnya: Google Play menganggap perangkat hanya mendukung OpenGL-ES 1.0. Google Play hanya akan menampilkan kepada pengguna aplikasi yang tidak menetapkan openGlEsVersion, atau aplikasi yang tidak menetapkan versi OpenGL-ES yang lebih tinggi dari 1.0.

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

Untuk detail selengkapnya, lihat <uses-feature>.

<uses-library> Pustaka Perangkat Lunak

Aplikasi bisa meminta pustaka bersama tertentu harus ada pada perangkat.

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

Contoh 2
Manifes tidak memasukkan elemen <uses-library>. Hasilnya: 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>. Akan tetapi tetap membaca elemen itu untuk menentukan apakah aplikasi memiliki persyaratan fitur perangkat keras yang mungkin belum dideklarasikan dengan benar dalam elemen <uses-feature>. Misalnya, jika aplikasi meminta izin CAMERA namun tidak mendeklarasikan elemen <uses-feature> untuk android.hardware.camera, Google Play menganggap aplikasi itu memerlukan kamera dan aplikasi tidak akan ditampilkan kepada pengguna yang perangkatnya tidak memiliki kamera.

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

Untuk mengetahui daftar izin yang memerlukan fitur perangkat keras, lihat dokumentasi untuk elemen <uses-feature>.

<uses-sdk> Versi Kerangka Kerja Minimum (minSdkVersion)

Aplikasi bisa meminta API level 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. Hasilnya: 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. Hasilnya: Google Play menganggap minSdkVersion adalah "1" dan menganggap aplikasi itu kompatibel dengan semua versi Android. Google Play menampilkan aplikasi itu kepada pengguna dan memungkinkan pengguna untuk mengunduhnya. Aplikasi mogok saat waktu proses.

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

Versi Kerangka Kerja Maksimum (maxSdkVersion)

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

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

Filter manifes lanjutan

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

Elemen manifes dan pemfilteran ini dan pemfilteran yang dipicunya hanya untuk kasus penggunaan luar biasa. Ini didesain untuk tipe permainan berkinerja tinggi dan aplikasi serupa yang memerlukan kontrol ketat dalam distribusi aplikasi. Umumnya aplikasi tidak perlu menggunakan filter ini.

Tabel 2. Elemen manifes lanjutan untuk pemfilteran Google Play.

Elemen ManifesRangkuman
<compatible-screens>

Google Play memfilter aplikasi ini 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 boleh menggunakan elemen manifes ini. Menggunakan elemen ini bisa mengurangi basis pengguna potensial aplikasi Anda secara dramatis, dengan mengecualikan semua kombinasi ukuran layar dan kepadatan yang tidak tercantum. Anda sebaiknya menggunakan elemen manifes <supports-screens> (dijelaskan di atas dalam tabel 1) untuk mengaktifkan mode kompatibilitas layar bagi konfigurasi layar yang belum Anda perhitungkan dengan sumber daya 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 suatu 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 sudah dipublikasikan yang akan muncul dalam penelusuran dan penjelajahan dalam Google Play.

Bahkan jika aplikasi dibatalkan publikasinya, aplikasi bisa dipasang jika pengguna bisa melihatnya di area Downloads mereka di antara aplikasi yang telah dibeli, dipasang, atau baru dicopot pemasangannya.

Jika aplikasi ditangguhkan, pengguna tidak akan bisa memasang ulang atau memperbaruinya, meskipun muncul dalam area Downloads.

Status Berbayar

Tidak semua pengguna bisa melihat aplikasi berbayar. Untuk menampilkan aplikasi berbayar, perangkat harus memiliki kartu SIM dan menjalankan Android 1.1 atau yang lebih baru, dan harus berada di negara (sebagaimana ditetapkan oleh operator SIM) yang menyediakan aplikasi berbayar.

Penargetan Negara

Saat mengunggah aplikasi ke Google Play, Anda bisa memilih negara tempat mendistribusikan aplikasi pada Pricing and Distribution. Aplikasi ini kemudian akan tersedia untuk pengguna di negara-negara yang Anda pilih saja.

Arsitektur CPU (ABI)

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

Aplikasi yang Dilindungi dari Penyalinan

Google Play tidak mendukung lagi fitur Copy Protection dalam Developer Console dan tidak lagi memfilter aplikasi berdasarkan fitur itu. Untuk mengamankan aplikasi Anda, sebaiknya gunakan Application Licensing. Lihat Replacement for Copy Protection untuk informasi selengkapnya.

Mempublikasikan Beberapa APK dengan Filter Berbeda

Beberapa filter Google Play tertentu memungkinkan Anda mempublikasikan multi APK untuk aplikasi yang sama guna memberikan APK yang berbeda untuk konfigurasi perangkat yang berbeda. Misalnya, jika Anda membuat permainan video yang menggunakan aset grafis fidelitas tinggi, Anda mungkin ingin membuat dua APK yang masing-masing mendukung format kompresi tekstur berbeda. Dengan cara ini, Anda bisa memperkecil ukuran file APK hanya dengan memasukkan tekstur yang diminta untuk masing-masing konfigurasi perangkat. Bergantung masing-masing dukungan perangkat untuk format kompresi tekstur Anda, Google Play akan memberinya APK yang sudah Anda deklarasikan untuk mendukung perangkat tersebut.

Saat ini, Google Play memungkinkan Anda untuk mempublikasikan multi APK bagi aplikasi yang sama hanya bila masing-masing APK menyediakan filter yang berbeda berdasarkan konfigurasi berikut ini:

  • 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>.

  • API level

    Dengan menggunakan elemen <uses-sdk>.

  • Arsitektur CPU (ABI)

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

Semua filter lain tetap berfungsi seperti biasa, namun yang empat ini adalah satu-satunya filter yang bisa membedakan satu APK dengan APK lain dalam aplikasi yang sama dengan yang tercantum di Google Play. Misalnya, Anda tidak bisa mempublikasikan multi APK untuk aplikasi yang sama jika APK tersebut hanya dibedakan berdasarkan apakah perangkat memiliki kamera.

Perhatian: Mempublikasikan multi APK untuk aplikasi yang sama dianggap fitur lanjutan dan kebanyakan aplikasi hanya akan mempublikasikan satu APK yang mendukung berbagai konfigurasi perangkat. Mempublikasikan multi APK mengharuskan Anda mengikuti aturan tertentu dalam filter dan lebih memerhatikan kode versi untuk setiap APK guna memastikan jalur pembaruan yang sesuai bagi setiap konfigurasi.

Jika Anda memerlukan informasi selengkapnya tentang cara mempublikasikan multi APK di Google Play, bacalah Dukungan Multi-APK.