Ringkasan kompatibilitas perangkat

Android dirancang untuk berjalan di banyak perangkat yang berbeda, seperti ponsel, tablet, dan televisi. Berbagai perangkat memberikan potensi besar audiens aplikasi Anda. Agar aplikasi Anda berhasil di semua perangkat, aplikasi harus menoleransi variabilitas fitur dan menyediakan antarmuka pengguna fleksibel yang beradaptasi pada berbagai konfigurasi layar.

Untuk membantu kompatibilitas perangkat, Android menyediakan framework aplikasi dinamis di mana Anda dapat memberikan konfigurasi resource aplikasi dalam mode statis file, seperti tata letak XML yang berbeda untuk ukuran layar yang berbeda. Android kemudian memuat sumber daya yang sesuai berdasarkan konfigurasi perangkat saat ini. Dengan mempertimbangkan desain aplikasi dan sumber daya aplikasi tambahan, Anda dapat memublikasikan paket aplikasi tunggal (APK) yang mengoptimalkan pengalaman pengguna pada berbagai perangkat seluler.

Akan tetapi, jika perlu, Anda bisa menetapkan persyaratan fitur aplikasi dan mengontrol jenis perangkat yang dapat menginstal aplikasi Anda dari Google Play Store. Dokumen ini menjelaskan cara mengontrol perangkat mana yang memiliki akses ke dan cara menyiapkan aplikasi untuk menjangkau audiens yang tepat.

Apa yang dimaksud dengan “kompatibilitas”?

Berkaitan dengan pengembangan Android, ada dua jenis kompatibilitas: kompatibilitas perangkat dan kompatibilitas aplikasi.

Karena Android adalah proyek {i>open-source<i}, produsen perangkat keras mana pun dapat membuat perangkat yang menjalankan sistem operasi Android. Tetapi sebuah perangkat "Kompatibel dengan Android" hanya jika layanan tersebut dapat menjalankan aplikasi yang ditulis untuk Lingkungan eksekusi Android. Detail persis Android lingkungan eksekusi ditentukan oleh Android program kompatibilitas. Setiap perangkat harus lulus Compatibility Test Suite (CTS) agar dianggap kompatibel.

Sebagai pengembang aplikasi, Anda tidak perlu khawatir tentang 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 kompatibel dengan masing-masing konfigurasi perangkat potensial. Karena Android dapat dijalankan di berbagai perangkat khusus, beberapa fitur hanya tersedia di perangkat tertentu. 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 untuk perangkat

Android mendukung berbagai fitur yang dapat dimanfaatkan aplikasi Anda melalui platform Google Cloud Platform. Beberapa fitur berbasis perangkat keras, 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 untuk perangkat berdasarkan fitur yang diperlukan aplikasi Anda.

Untuk mencapai basis pengguna sebanyak mungkin bagi aplikasi Anda, dukung sebanyak mungkin konfigurasi perangkat yang paling mungkin menggunakan satu APK atau AAB. Di kebanyakan situasi, Anda dapat melakukannya dengan menonaktifkan fitur opsional saat {i>runtime<i} dan aplikasi penyedia resource dengan alternatif untuk berbagai konfigurasi, seperti tata letak untuk ukuran layar yang berbeda. Jika perlu, Anda dapat membatasi ketersediaan untuk perangkat tertentu melalui Google Play Store berdasarkan hal berikut karakteristik perangkat:

Fitur perangkat

Untuk mengelola ketersediaan aplikasi berdasarkan fitur perangkat, Android menentukan ID fitur untuk fitur hardware atau software apa pun yang mungkin tidak yang 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 mereka perangkat tidak menyediakan fitur yang diperlukan dengan mendeklarasikan fitur menggunakan <uses-feature> di elemen file manifes.

Misalnya, jika aplikasi Anda tidak masuk akal pada perangkat yang tidak memiliki kompas sensor, Anda dapat mendeklarasikan sensor kompas sebagai persyaratan dengan tag manifes:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

Google Play Store membandingkan fitur yang dibutuhkan aplikasi Anda dengan yang tersedia di setiap perangkat pengguna untuk menentukan apakah aplikasi Anda kompatibel dengan setiap perangkat. Jika perangkat tidak memiliki semua fitur yang aplikasi Anda, pengguna tidak dapat menginstal aplikasi tersebut.

Namun, jika fungsi utama aplikasi Anda tidak memerlukan fitur perangkat, atur required ke "false" dan memeriksa fitur perangkat saat runtime. Jika fitur aplikasi tidak tersedia di perangkat saat ini, lakukan degradasi halus fitur aplikasi tersebut. Misalnya, Anda dapat melakukan kueri apakah suatu fitur tersedia dengan menelepon 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 informasi tentang semua filter yang dapat Anda gunakan untuk mengontrol ketersediaan aplikasi Anda melalui Google Play Store, lihat Filter di Google Play dokumentasi tambahan.

Versi platform

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

Anda harus menentukan 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 informasi selengkapnya tentang file build.gradle, baca Konfigurasi build Anda.

Setiap urutan versi Android menyediakan kompatibilitas untuk aplikasi yang dibangun menggunakan API dari versi platform sebelumnya, sehingga aplikasi Anda kompatibel dengan Android versi mendatang sambil menggunakan API Android yang didokumentasikan.

Namun, jika aplikasi Anda menggunakan API yang ditambahkan dalam versi platform yang lebih baru, tetapi tidak memerlukannya untuk fungsi utamanya, periksa API level di runtime dan menurunkan kualitas fitur terkait secara halus ketika level API terlalu rendah. Dalam hal ini, tetapkan minSdkVersion ke nilai terendah mungkin untuk fungsi utama aplikasi Anda, lalu bandingkan nilai versi, SDK_INT, ke konstanta namakode di Build.VERSION_CODES sesuai dengan level API yang ingin Anda periksa, seperti ditunjukkan dalam contoh:

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. Kepada mengategorikan perangkat berdasarkan jenis layarnya, Android mendefinisikan dua karakteristik setiap perangkat: ukuran layar (ukuran fisik layar) dan kepadatan layar (kepadatan fisik piksel pada layar, yang dikenal sebagai DPI). Untuk menyederhanakan berbagai Android, Android menggeneralisasi varian ini ke dalam grup yang membuatnya lebih mudah ditargetkan:

  • Empat ukuran umum: kecil, normal, besar, dan ekstra besar
  • 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 akan menyesuaikan tata letak UI dan resource gambar yang diperlukan untuk setiap layar. Menyediakan gambar bitmap yang dioptimalkan untuk layar umum yang dihasilkan.

Optimalkan pengalaman pengguna dengan menggunakan tata letak yang fleksibel sebanyak mungkin. Saat ada tata letak untuk perubahan konfigurasi besar, seperti potret dan lanskap, atau ukuran jendela besar versus kecil, pertimbangkan untuk memberikan {i>layout<i} yang fleksibel terhadap perubahan yang lebih kecil dalam konfigurasi. Hal ini meningkatkan pengalaman pengguna pada faktor bentuk seperti tablet, ponsel, dan perangkat foldable. Ini juga membantu ketika jendela berubah ukuran dalam mode multi-aplikasi.

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

Mengontrol ketersediaan aplikasi karena alasan bisnis

Selain membatasi ketersediaan aplikasi berdasarkan perangkat tertentu, Anda mungkin perlu membatasi ketersediaan aplikasi atau alasan hukum. Untuk situasi semacam ini, Google Play Store menyediakan opsi pemfilteran di Konsol Play yang memungkinkan Anda mengontrol ketersediaan untuk alasan nonteknis seperti lokalitas pengguna atau nirkabel operator.

Pemfilteran untuk kompatibilitas teknis—seperti hardware yang diperlukan komponen—selalu didasarkan pada informasi yang ada dalam APK atau AAB . Tetapi memfilter karena alasan nonteknis—seperti lokal—selalu ditangani di Konsol Google Play.

Referensi tambahan:

Ringkasan resource aplikasi
Informasi tentang cara aplikasi Android disusun ke aplikasi terpisah resource dari kode aplikasi, termasuk cara Anda dapat menyediakan untuk konfigurasi perangkat tertentu.
Filter di Google Play
Informasi tentang berbagai cara yang dapat dilakukan Google Play Store untuk mencegah aplikasi Anda agar tidak diinstal di perangkat yang berbeda.
Izin di Android
Cara Android membatasi akses aplikasi ke API tertentu dengan sistem izin yang memerlukan izin pengguna agar aplikasi Anda dapat menggunakan API tersebut.