Mendukung Versi Platform Yang Berbeda-beda

Ketika versi-versi Android terbaru seringkali menyediakan API-API yang baru untuk app kita, kita sebaiknya juga terus mendukung versi-versi Android yang lama sampai semua perangkat terupdate, supaya app kita bisa diakses oleh semakin banyak perangkat. Latihan ini menunjukkan bagaimana kita memanfaatkan API-API terbaru dan tetap masih mendukung versi-versi yang lama juga.

Dashboard untuk versi-versi platform Android di-update secara regular untuk menunjukkan distribusi perangkat aktif yang menggunakan Android dengan masing-masing versinya berdasarkan jumlah perangkat yang mengunjungi Google Play Store. Secara umum, bila kita mempraktikkan untuk mendukung 90% perangkat yang aktif, itu adalah praktik yang baik, sementara juga menargetkan app kita untuk versi yang tervaru.
Tip:
Untuk memberikan fungsionalitas dan fitur-fitur terbaik pada beberapa versi Android, kita sebaiknya menggunakan Android Support Library pada app kita, yang mengijinkan untuk menggunakan API-API platform terbaru yang bisa digunakan pada versi-versi yang lama. 

Menentukan Level API Minimum dan Target Perangkat

File 'AndroidManifest.xml' menjelaskan tentang detil-detil app kita dan mengidentifikasi versi-versi Android mana yang didukung. Secara khusus, atribut-atribut 'minSdkVersion' dan 'targetSdkVersion' pada elemen mengidentifikasi level API dimana app kita akan kompatibel, dan level API tertinggi dimana kita mendesain dan mengujicoba app kita.

Contohnya:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

Karena versi-versi Android selalu dirilis, beberapa hal ('style' dan 'behavior') mungkin berubah. Supaya app kita bisa memanfaatkan perubahan-perubahan tersebut dan memastikan bahwa app kita sesuai dengan 'style' masing-masing perangkat pengguna, kita sebaiknya men-set nilai 'targetSdkVersion' supaya sesuai dengan versi Android terbaru yang ada.


Memeriksa Versi Sistem saat Runtime

Android memberikan kode yang 'unique' untuk masing-masing versi platform di dalam 'class Build' yang berisi konstanta-konstanta. Gunakan kode-kode tersebut di dalam app kita untuk membuat 'kondisi' yang memastikan kode yang bergantung pada level API yang lebih tinggi akan di-eksekusi hanya bila API-API tersebut tersedia di sistem.

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}
Catatan:
Ketika mem-parsing 'resources' XML, Android akan mengabaikan atribut-atribut XML yang tidak didukung oleh perangkat yang sedang digunakan. Jadi kita bisa aman menggunakan atribut-atribut XML yang hanya didukung oleh versi-versi yang lebih baru tanpa khawatir tentang versi-versi yang lama akan mengganggu/merusak bila menemui kode tersebut. Contohnya, bila kita men-set targetSdkVersion="11", app kita akan memasukkan 'ActionBar' secara default pada Android 3.0 dan yang lebih tinggi. Kemudian untuk menambahkan item-item menu ke action bar, kita perlu men-set android:showAsAction="ifRoom" di dalam XML untuk 'resource' menu. Hal ini akan aman dilakukan pada file XML untuk lintas versi, karena versi-versi Android yang lama akan mengabaikan atribut 'showAsAction' (artinya, kita tidak perlu versi terpisah-pisah di 'res/menu-v11/).

Menggunakan 'Styles' dan 'Themes' Platform

Android menyediakan 'themes' untuk 'user experience' yang memberikan app kita tampilan dan nuansa dari sistem operasi yang mendasarinya. 'Themes' ini bisa diterapkan pada app kita di dalam file manifest. Dengan menggunakan 'styles' dan 'themes' yang sudah 'built-in' tersebut, app kita akan secara alami mengikuti tampilan dan nuansa Android pada setiap rilis baru.

Untuk membuat 'activity' kita kelihatan seperti suatu kotak dialog:
<activity android:theme="@android:style/Theme.Dialog">
Untuk membuat 'activity' kita memiliki 'background' transparant:
<activity android:theme="@android:style/Theme.Translucent">
Untuk menerapkan 'theme' kita sendiri (custom) bisa didefinisikan di '/res/values/styles.xml':
<activity android:theme="@style/CustomTheme">
Untuk menerapkan suatu 'theme' ke app secara menyeluruh (semua 'activity'), tambahkan atribut 'android:theme' ke elemen:
<application android:theme="@style/CustomTheme">
Untuk lebih jauh tentang membuat dan menggunakan 'themes', bisa dibaca pedoman Styles and Themes.



No comments: