Android didesain untuk berjalan di banyak jenis perangkat, mulai dari ponsel hingga tablet dan TV. Sebagai developer, berbagai perangkat memberikan potensi audiens yang sangat besar untuk aplikasi Anda. Agar berhasil di semua perangkat ini, aplikasi harus memberi toleransi beberapa variasi fitur dan menyediakan antarmuka pengguna fleksibel yang dapat beradaptasi dengan beragam konfigurasi layar.
Untuk memfasilitasi upaya Anda menuju sasaran tersebut, Android menyediakan framework aplikasi dinamis tempat Anda dapat menyediakan resource aplikasi khusus konfigurasi dalam file statis (seperti tata letak XML yang berbeda untuk ukuran layar yang berbeda). Kemudian Android akan memuat resource yang sesuai berdasarkan konfigurasi perangkat saat ini. Jadi, dengan beberapa desain aplikasi dan beberapa resource aplikasi tambahan, Anda dapat memublikasikan paket aplikasi tunggal (APK) yang memberikan pengalaman pengguna yang dioptimalkan di berbagai perangkat.
Akan tetapi, jika perlu, Anda dapat menentukan persyaratan fitur aplikasi dan mengontrol jenis perangkat yang dapat menginstal aplikasi Anda dari Google Play Store. Halaman ini menjelaskan cara Anda dapat mengontrol perangkat yang dapat mengakses aplikasi Anda, dan cara menyiapkan aplikasi untuk memastikan aplikasi tersebut menjangkau audiens yang tepat. Untuk mengetahui informasi selengkapnya tentang cara agar aplikasi Anda mampu beradaptasi dengan perangkat yang berbeda, baca Mendukung Berbagai Perangkat.
Apa yang dimaksud dengan “kompatibilitas”?
Saat membaca lebih lanjut tentang pengembangan Android, Anda mungkin akan menemukan istilah “kompatibilitas” dalam berbagai situasi. Ada dua jenis kompatibilitas: kompatibilitas perangkat dan kompatibilitas aplikasi.
Karena Android adalah project open source, setiap produsen hardware dapat membuat perangkat yang menjalankan sistem operasi Android. Akan tetapi, perangkat dinyatakan "kompatibel dengan Android" hanya jika perangkat tersebut menjalankan dengan benar aplikasi yang tertulis untuk lingkungan eksekusi Android. Detail persis tentang lingkungan eksekusi Android ditentukan oleh program kompatibilitas Android dan setiap perangkat harus lulus Compatibility Test Suite (CTS) agar dianggap kompatibel.
Sebagai developer aplikasi, Anda tidak perlu khawatir apakah perangkat kompatibel dengan Android, karena hanya perangkat yang kompatibel dengan Android yang menyertakan Google Play Store. Jadi, Anda dapat merasa tenang karena pengguna yang menginstal aplikasi dari Google Play Store menggunakan perangkat yang kompatibel dengan Android.
Akan tetapi, Anda perlu mempertimbangkan apakah aplikasi kompatibel dengan setiap konfigurasi perangkat yang potensial. Karena Android berjalan di berbagai konfigurasi perangkat, beberapa fitur tidak tersedia di semua perangkat. Misalnya, beberapa perangkat mungkin tidak menyertakan sensor kompas. Jika fungsi inti aplikasi Anda memerlukan penggunaan sensor kompas, maka aplikasi Anda hanya kompatibel dengan perangkat yang menyertakan sensor kompas.
Mengontrol ketersediaan aplikasi Anda ke perangkat
Android mendukung berbagai fitur yang dapat dimanfaatkan aplikasi Anda melalui API platform. Beberapa fitur berbasis hardware (seperti sensor kompas), beberapa berbasis software (seperti widget aplikasi), dan beberapa bergantung pada versi platform. Tidak semua perangkat mendukung setiap fitur, jadi Anda mungkin perlu mengontrol ketersediaan aplikasi untuk perangkat berdasarkan fitur yang diperlukan aplikasi Anda.
Untuk mencapai basis pengguna sebesar mungkin bagi aplikasi, Anda harus terus mendukung sebanyak mungkin konfigurasi perangkat dengan APK tunggal. Di sebagian besar situasi, Anda dapat melakukannya dengan menonaktifkan fitur opsional pada waktu proses dan menyediakan resource aplikasi dengan alternatif untuk berbagai konfigurasi (seperti beragam tata letak untuk berbagai ukuran layar). Akan tetapi, jika perlu, Anda dapat membatasi ketersediaan aplikasi Anda untuk perangkat melalui Google Play Store berdasarkan karakteristik perangkat berikut:
Fitur perangkat
Agar Anda dapat mengelola ketersediaan aplikasi berdasarkan fitur perangkat, Android menentukan ID fitur untuk setiap fitur hardware atau software yang mungkin tidak tersedia di semua perangkat. Misalnya, ID fitur untuk sensor kompas adalah FEATURE_SENSOR_COMPASS
dan ID fitur untuk widget aplikasi adalah FEATURE_APP_WIDGETS
.
Jika perlu, Anda dapat mencegah pengguna menginstal aplikasi Anda saat perangkatnya tidak menyediakan fitur tertentu dengan mendeklarasikannya dengan elemen <uses-feature>
di file manifes aplikasi Anda.
Misalnya, jika aplikasi Anda tidak berfungsi di perangkat yang tidak memiliki sensor kompas, Anda dapat mendeklarasikan sensor kompas seperti yang diwajibkan dengan tag manifes berikut:
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
Google Play Store membandingkan fitur yang diperlukan aplikasi Anda dengan fitur yang tersedia di setiap perangkat pengguna untuk menentukan apakah aplikasi kompatibel dengan masing-masing perangkat. Jika perangkat tidak menyediakan semua fitur yang diperlukan aplikasi Anda, pengguna tidak akan dapat menginstal aplikasi.
Akan tetapi, jika fungsi utama aplikasi Anda tidak membutuhkan fitur perangkat, Anda harus menyetel atribut required
untuk "false"
dan memeriksa fitur perangkat pada waktu proses. Jika fitur aplikasi tidak tersedia di perangkat saat ini, turunkan versi fitur aplikasi yang sesuai dengan baik. Misalnya, Anda dapat menanyakan apakah fitur tersedia dengan memanggil hasSystemFeature()
seperti ini:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device does not have a compass, turn off the compass feature disableCompassFeature() }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device does not have a compass, turn off the compass feature disableCompassFeature(); }
Untuk mengetahui informasi tentang semua filter yang dapat Anda gunakan untuk mengontrol ketersediaan aplikasi bagi pengguna melalui Google Play Store, lihat dokumen Filter di Google Play.
Catatan: Beberapa izin sistem secara implisit memerlukan ketersediaan fitur perangkat. Misalnya, jika aplikasi Anda meminta izin untuk mengakses BLUETOOTH
, secara implisit aplikasi membutuhkan fitur perangkat FEATURE_BLUETOOTH
. Anda dapat menonaktifkan pemfilteran berdasarkan fitur ini dan menyediakan aplikasi untuk perangkat tanpa Bluetooth dengan menyetel atribut required
ke "false"
dalam tag <uses-feature>
.
Untuk mengetahui informasi selengkapnya tentang fitur perangkat yang diperlukan secara implisit, baca Izin yang Menerapkan Persyaratan Fitur.
Versi platform
Perangkat yang berbeda dapat menjalankan versi platform Android yang berbeda, seperti Android 4.0 atau Android 4.4. Setiap versi platform setelahnya sering menambahkan API baru yang tidak tersedia di versi sebelumnya. Untuk menunjukkan kumpulan API yang tersedia, setiap versi platform menentukan tingkat API. Misalnya, Android 1.0 adalah API level 1 dan Android 4.4 adalah API level 19.
Tingkat API memungkinkan Anda untuk mendeklarasikan versi minimum yang kompatibel dengan aplikasi Anda, menggunakan tag manifes <uses-sdk>
dan atribut minSdkVersion
. Misalnya, API Penyedia Kalender ditambahkan di Android 4.0 (API level 14). Jika aplikasi Anda tidak dapat berfungsi tanpa API ini, Anda harus mendeklarasikan API level 14 sebagai versi minimum yang didukung aplikasi Anda.
Atribut minSdkVersion
mendeklarasikan versi minimum yang kompatibel dengan aplikasi Anda dan atribut targetSdkVersion
mendeklarasikan versi tertinggi yang telah dioptimalkan pada aplikasi.
Akan tetapi, perhatikan bahwa atribut dalam elemen <uses-sdk>
digantikan oleh properti yang sesuai dalam file build.gradle
.
Jadi, jika menggunakan Android Studio, Anda harus menentukan nilai minSdkVersion
dan targetSdkVersion
di sini:
android { defaultConfig { applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdkVersion 15 // Specifies the API level used to test the app. targetSdkVersion 28 ... } }
Untuk mengetahui informasi selengkapnya tentang file build.gradle
, baca tentang cara mengonfigurasi build Anda.
Setiap versi Android setelahnya memberikan kompatibilitas untuk aplikasi yang dibuild menggunakan API dari versi platform sebelumnya, sehingga aplikasi Anda harus selalu kompatibel dengan versi Android yang akan datang saat menggunakan Android API yang didokumentasikan.
Catatan: Atribut targetSdkVersion
tidak mencegah aplikasi Anda diinstal di versi platform yang lebih tinggi dari nilai yang ditentukan, tetapi hal ini penting karena menunjukkan pada sistem apakah aplikasi Anda harus mewarisi perubahan perilaku dalam versi yang lebih baru. Jika Anda tidak mengupdate targetSdkVersion
ke versi terbaru, sistem tersebut menganggap bahwa aplikasi Anda memerlukan beberapa perilaku kompatibilitas dengan versi sebelumnya saat menjalankan versi terbaru.
Misalnya, di antara perubahan perilaku di Android 4.4, alarm yang dibuat dengan API AlarmManager
kini tidak tepat secara default sehingga sistem dapat menetapkan batch pada alarm aplikasi dan menghemat daya sistem. Akan tetapi, sistem akan mempertahankan perilaku API sebelumnya untuk aplikasi Anda jika tingkat API target lebih rendah dari "19".
Namun, jika aplikasi Anda menggunakan API yang ditambahkan dalam versi platform yang lebih baru, tetapi tidak mewajibkannya untuk fungsi utama, Anda harus memeriksa tingkat API pada waktu proses dan menurunkan dengan baik fitur yang sesuai jika tingkat API terlalu rendah. Dalam hal ini, setel minSdkVersion
ke nilai terendah yang memungkinkan untuk fungsi utama aplikasi Anda, lalu bandingkan versi sistem saat ini, SDK_INT
, dengan konstanta namakode dalam Build.VERSION_CODES
yang sesuai dengan tingkat API yang ingin diperiksa. Contoh:
Kotlin
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag/drop features that use <code><a href="/reference/android/content/ClipboardManager.html">ClipboardManager</a></code> APIs disableDragAndDrop() }
Java
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag/drop features that use <code><a href="/reference/android/content/ClipboardManager.html">ClipboardManager</a></code> APIs disableDragAndDrop(); }
Konfigurasi layar
Android berjalan di perangkat dengan berbagai ukuran, dari ponsel, tablet, dan TV. Untuk menggolongkan perangkat menurut jenis layarnya, Android menentukan dua karakteristik untuk setiap perangkat: ukuran layar (ukuran fisik layar) dan kepadatan layar (kerapatan fisik piksel pada layar, yang dikenal sebagai DPI). Untuk menyederhanakan konfigurasi yang berbeda, Android menggeneralisasi varian ini ke dalam grup yang membuatnya lebih mudah untuk ditargetkan:
- Empat ukuran umum: kecil, normal, besar, dan xlarge.
- Dan beberapa kepadatan umum: mdpi (sedang), hdpi (tinggi), xhdpi (ekstra tinggi), xxhdpi (ekstra-ekstra tinggi), dan lainnya.
Secara default, aplikasi Anda kompatibel dengan semua ukuran dan kepadatan layar, karena sistem membuat penyesuaian yang tepat pada tata letak UI dan resource gambar yang diperlukan untuk setiap layar. Akan tetapi, Anda harus mengoptimalkan pengalaman pengguna untuk setiap konfigurasi layar dengan menambahkan tata letak khusus untuk ukuran layar yang berbeda dan gambar bitmap yang dioptimalkan untuk kepadatan layar yang umum.
Untuk mengetahui informasi tentang cara membuat resource alternatif untuk berbagai layar dan cara membatasi aplikasi ke ukuran layar tertentu bila diperlukan, baca Mendukung Berbagai Layar.
Mengontrol ketersediaan aplikasi karena alasan bisnis
Selain membatasi ketersediaan aplikasi berdasarkan karakteristik perangkat, mungkin Anda harus membatasi ketersediaan aplikasi karena alasan bisnis atau hukum. Misalnya, aplikasi yang menampilkan jadwal kereta untuk Kereta Bawah Tanah London kemungkinan tidak akan berguna bagi pengguna di luar Inggris Raya. Untuk jenis situasi ini, Google Play Store menyediakan opsi pemfilteran di Konsol Play yang memungkinkan Anda mengontrol ketersediaan aplikasi karena alasan non-teknis seperti lokal atau operator nirkabel pengguna.
Pemfilteran untuk kompatibilitas teknis (seperti komponen hardware yang diperlukan) selalu didasarkan pada informasi yang terdapat dalam file APK Anda. Akan tetapi, memfilter karena alasan non-teknis (seperti lokal geografis) selalu ditangani di Konsol Google Play.
Lanjutkan membaca tentang:
- Menyediakan Resource
- Informasi tentang cara aplikasi Android terstruktur untuk memisahkan resource aplikasi dari kode aplikasi, termasuk cara menyediakan resource alternatif untuk konfigurasi perangkat tertentu.
- Filter di Google Play
- Informasi tentang berbagai cara yang dapat dilakukan Google Play Store untuk mencegah aplikasi Anda diinstal di perangkat yang berbeda.
Mungkin Anda juga tertarik dengan:
- Izin Sistem
- Cara Android membatasi akses aplikasi ke API tertentu dengan sistem izin yang memerlukan persetujuan pengguna agar aplikasi dapat menggunakan API tersebut.