Ringkasan kompatibilitas perangkat

Android didesain untuk berjalan di banyak perangkat yang berbeda, seperti ponsel, tablet, dan televisi. Berbagai perangkat memberikan potensi audiens yang sangat besar untuk aplikasi Anda. Agar berhasil di semua perangkat, aplikasi Anda harus menoleransi variasi fitur dan menyediakan antarmuka pengguna fleksibel yang dapat beradaptasi dengan beragam konfigurasi layar.

Untuk membantu kompatibilitas perangkat, 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. Dengan mempertimbangkan desain aplikasi dan resource aplikasi tambahan, Anda dapat memublikasikan paket aplikasi tunggal (APK) yang mengoptimalkan pengalaman pengguna 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. Dokumen ini menjelaskan cara Anda dapat mengontrol perangkat yang dapat mengakses aplikasi Anda dan cara menyiapkan aplikasi untuk menjangkau audiens yang tepat.

Apa yang dimaksud dengan “kompatibilitas”?

Terkait pengembangan Android, 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. Namun, perangkat dinyatakan "kompatibel dengan Android" hanya jika perangkat tersebut dapat menjalankan dengan benar aplikasi yang ditulis untuk lingkungan eksekusi Android. Detail persis tentang lingkungan eksekusi Android ditentukan oleh program kompatibilitas Android. 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, jika pengguna menginstal aplikasi Anda dari Google Play Store, mereka menggunakan perangkat yang kompatibel dengan Android.

Namun, Anda perlu mempertimbangkan apakah aplikasi Anda 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 sensor kompas, maka aplikasi Anda hanya kompatibel dengan perangkat yang menyertakan fitur tersebut.

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, dukung sebanyak mungkin konfigurasi perangkat menggunakan satu APK atau AAB. Di sebagian besar situasi, Anda dapat melakukannya dengan menonaktifkan fitur opsional pada waktu proses dan menyediakan resource aplikasi dengan alternatif untuk berbagai konfigurasi, seperti tata letak yang berbeda untuk ukuran layar yang berbeda. Jika perlu, Anda dapat membatasi ketersediaan aplikasi Anda untuk perangkat tertentu melalui Google Play Store berdasarkan karakteristik perangkat berikut:

Fitur perangkat

Untuk 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 yang diperlukan dengan mendeklarasikan fitur menggunakan 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 sebagai persyaratan 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 Anda kompatibel dengan setiap perangkat. Jika perangkat tidak memiliki semua fitur yang diperlukan aplikasi Anda, pengguna tidak dapat menginstal aplikasi Anda.

Namun, jika fungsi utama aplikasi Anda tidak memerlukan fitur perangkat, tetapkan atribut required ke "false" dan periksa 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 doesn't have a compass. Turn off the compass feature.
    disableCompassFeature()
}

Java

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature();
}

Untuk mengetahui informasi tentang semua filter yang dapat Anda gunakan untuk mengontrol ketersediaan aplikasi melalui Google Play Store, lihat dokumentasi Filter di Google Play.

Versi platform

Perangkat yang berbeda mungkin menjalankan versi platform Android yang berbeda, seperti Android 12 atau Android 13. Setiap urutan versi platform sering kali menambahkan API yang tidak tersedia di versi sebelumnya. Untuk menunjukkan kumpulan API yang tersedia, setiap versi platform menentukan tingkat API. Misalnya, Android 12 adalah level API 31, dan Android 13 adalah level API 33.

Anda harus menentukan nilai minSdkVersion dan targetSdkVersion dalam file build.gradle Anda:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"

        // Defines the minimum API level required to run the app.
        minSdkVersion(30)

        // Specifies the API level used to test the app.
        targetSdkVersion(33)
        ...
    }
}

Groovy

android {
    defaultConfig {
        applicationId 'com.example.myapp'

        // Defines the minimum API level required to run the app.
        minSdkVersion 30

        // Specifies the API level used to test the app.
        targetSdkVersion 33
        ...
    }
}

Untuk mengetahui informasi selengkapnya tentang file build.gradle, baca Mengonfigurasi build Anda.

Setiap versi Android setelahnya memberikan kompatibilitas untuk aplikasi yang dibangun menggunakan API dari versi platform sebelumnya, sehingga aplikasi Anda kompatibel dengan versi Android yang akan datang saat menggunakan Android API yang didokumentasikan.

Namun, jika aplikasi Anda menggunakan API yang ditambahkan dalam versi platform yang lebih baru, tetapi tidak mewajibkannya untuk fungsi utama, periksa tingkat API pada waktu proses dan turunkan 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, seperti yang ditunjukkan dalam contoh berikut:

Kotlin

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop()
}

Java

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop();
}

Konfigurasi layar

Android berjalan di perangkat dengan berbagai ukuran seperti ponsel, tablet, dan TV. Untuk mengategorikan perangkat menurut jenis layarnya, Android menentukan dua karakteristik untuk setiap perangkat: ukuran layar (ukuran fisik layar) dan kepadatan layar (kepadatan fisik piksel pada layar, yang dikenal sebagai DPI). Untuk menyederhanakan berbagai konfigurasi, Android menggeneralisasi varian ini ke dalam grup yang membuatnya lebih mudah untuk ditargetkan:

  • Empat ukuran umum: kecil, normal, besar, dan xlarge
  • 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 pada tata letak UI dan resource gambar yang diperlukan untuk setiap layar. Berikan gambar bitmap yang dioptimalkan untuk kepadatan layar umum.

Optimalkan pengalaman pengguna dengan menggunakan tata letak fleksibel sebanyak mungkin. Jika ada tata letak untuk perubahan konfigurasi besar, seperti potret dan lanskap, atau ukuran jendela besar versus kecil, pertimbangkan untuk menyediakan tata letak alternatif yang fleksibel terhadap perubahan konfigurasi yang lebih kecil. Hal ini meningkatkan pengalaman pengguna pada jenis perangkat seperti tablet, ponsel, dan perangkat foldable. Hal ini juga membantu saat jendela mengubah ukuran dalam mode multi-aplikasi.

Untuk mengetahui informasi tentang cara membuat resource alternatif untuk berbagai layar dan cara membatasi aplikasi ke ukuran layar tertentu bila diperlukan, baca ringkasan kompatibilitas layar dan lihat pedoman kualitas aplikasi layar besar.

Mengontrol ketersediaan aplikasi Anda karena alasan bisnis

Selain membatasi ketersediaan aplikasi berdasarkan karakteristik perangkat, Anda mungkin perlu membatasi ketersediaan aplikasi karena alasan bisnis atau hukum. 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 atau AAB Anda. Namun, pemfilteran karena alasan non-teknis—seperti lokalitas geografis—selalu ditangani di Konsol Google Play.

Referensi tambahan:

Ringkasan resource aplikasi
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.
Izin di Android
Cara Android membatasi akses aplikasi ke API tertentu dengan sistem izin yang memerlukan persetujuan pengguna agar aplikasi Anda dapat menggunakan API tersebut.