Pembuatan versi merupakan bagian penting dari proses upgrade aplikasi dan strategi pemeliharaan. Pembuatan versi penting karena:
- Pengguna harus memiliki informasi khusus tentang versi aplikasi yang terinstal di perangkat mereka dan versi upgrade yang tersedia untuk diinstal.
- Aplikasi lain—termasuk aplikasi lain yang Anda publikasikan sebagai suite—harus mengajukan kueri ke sistem terkait versi aplikasi, untuk menentukan kompatibilitas dan mengidentifikasi dependensi.
- Layanan yang akan digunakan untuk memublikasikan aplikasi juga mungkin harus mengajukan kueri ke aplikasi untuk mengetahui versinya, sehingga aplikasi dapat menampilkan versinya kepada pengguna. Layanan publikasi mungkin juga harus memeriksa versi aplikasi untuk menentukan kompatibilitas dan menetapkan hubungan upgrade/downgrade.
Sistem Android menggunakan informasi versi aplikasi agar tidak terjadi downgrade. Sistem tidak menggunakan informasi versi aplikasi untuk menerapkan batasan pada upgrade atau kompatibilitas aplikasi pihak ketiga. Aplikasi harus menerapkan setiap batasan versi dan harus memberi tahu pengguna tentang batasan tersebut.
Sistem Android menerapkan kompatibilitas versi sistem sebagaimana diungkapkan
oleh setelan minSdkVersion
dalam file build. Setelan ini
memungkinkan aplikasi menetapkan API sistem minimum yang kompatibel dengannya.
Untuk informasi selengkapnya, lihat Menetapkan Versi API Sistem
Minimum.
Menetapkan informasi versi aplikasi
Untuk menentukan informasi versi aplikasi, tetapkan nilai untuk setelan versi dalam file build Gradle. Nilai-nilai ini kemudian digabungkan ke dalam file manifes aplikasi pada proses build.
Catatan: Jika aplikasi Anda menentukan versi aplikasi secara langsung dalam
elemen <manifest>
, nilai-nilai versi dalam file build Gradle
akan menggantikan setelan dalam manifes. Selain itu, menentukan
setelan ini dalam file build Gradle memungkinkan Anda menetapkan nilai berbeda untuk
berbagai versi aplikasi. Agar lebih fleksibel dan untuk menghindari
potensi penimpaan saat manifes digabungkan, Anda harus menghapus
atribut ini dari elemen <manifest>
dan menentukan
setelan versi dalam file build Gradle.
Tersedia dua setelan, dan Anda harus selalu menentukan nilai untuk keduanya:
-
versionCode
— Bilangan bulat positif yang digunakan sebagai nomor versi internal. Nomor ini hanya digunakan untuk menentukan apakah suatu versi lebih baru daripada versi lainnya; dengan nomor yang lebih tinggi menunjukkan versi yang lebih baru. Nomor ini bukan nomor versi yang ditunjukkan kepada pengguna; nomor tersebut ditetapkan oleh setelanversionName
, di bawah. Sistem Android menggunakan nilaiversionCode
agar tidak terjadi downgrade dengan mencegah pengguna menginstal APK menggunakanversionCode
yang lebih rendah daripada versi yang saat ini terinstal di perangkat.Nilai ini berupa bilangan bulat positif sehingga aplikasi lain dapat mengevaluasinya secara terprogram, misalnya untuk memeriksa hubungan upgrade atau downgrade. Anda dapat menetapkan nilainya ke bilangan bulat positif yang diinginkan, tetapi pastikan bahwa setiap rilis berurutan menggunakan nilai yang lebih besar. Anda tidak dapat mengupload APK ke Play Store dengan
versionCode
yang sudah digunakan untuk versi sebelumnya.Catatan: Dalam beberapa situasi tertentu, Anda mungkin ingin mengupload versi aplikasi dengan
versionCode
yang lebih rendah daripada versi terbaru. Misalnya, jika memublikasikan beberapa APK, Anda mungkin memiliki rentangversionCode
yang telah ditetapkan untuk APK tertentu. Untuk informasi selengkapnya tentang menetapkan nilaiversionCode
untuk beberapa APK, lihat Dukungan Multi-APK.Umumnya, Anda akan merilis versi pertama aplikasi dengan
versionCode
yang ditetapkan ke 1, lalu meningkatkan nilainya secara monoton setiap rilis, terlepas dari apakah rilis tersebut merupakan rilis utama atau rilis minor. Artinya, nilaiversionCode
tidak harus sangat mirip dengan versi rilis aplikasi yang dapat dilihat pengguna (lihatversionName
, di bawah). Aplikasi dan layanan publikasi tidak boleh menampilkan nilai versi ini kepada pengguna.Peringatan: Nilai terbesar yang diizinkan Google Play untuk
versionCode
adalah 2100000000. -
versionName
— String yang digunakan sebagai nomor versi yang ditampilkan kepada pengguna. Setelan ini dapat ditentukan sebagai string mentah atau sebagai referensi resource string.Nilai ini berupa string sehingga Anda dapat menjelaskan versi aplikasi sebagai string <major>.<minor>.<point>, atau sebagai jenis ID versi absolut atau relatif lainnya.
versionName
tidak memiliki tujuan selain untuk ditampilkan kepada pengguna.
Anda dapat menentukan nilai default setelan ini dengan menyertakannya dalam
blok defaultConfig {}
, yang disarangkan dalam blok
android {}
file build.gradle
modul. Anda kemudian dapat mengganti
nilai default ini untuk versi aplikasi lainnya dengan menentukan nilai
tersendiri untuk masing-masing jenis build atau ragam produk. File build.gradle
berikut menunjukkan setelan versionCode
dan versionName
dalam blok defaultConfig {}
,
serta blok productFlavors {}
.
Groovy
android { ... defaultConfig { ... versionCode 2 versionName "1.1" } productFlavors { demo { ... versionName "1.1-demo" } full { ... } } }
Kotlin
android { ... defaultConfig { ... versionCode = 2 versionName = "1.1" } productFlavors { create("demo") { ... versionName = "1.1-demo" } create("full") { ... } } }
Dalam blok defaultConfig {}
pada contoh ini, nilai
versionCode
menunjukkan bahwa APK saat ini berisi
rilis kedua aplikasi, dan string versionName
menentukan
bahwa aplikasi tersebut akan ditampilkan kepada pengguna sebagai versi 1.1. File build.gradle
ini juga menentukan dua ragam produk, yaitu "demo" dan "lengkap". Karena ragam produk
"demo" menentukan versionName
sebagai "1.1-demo", build
"demo" akan menggunakan versionName
, bukan nilai default. Blok
ragam produk "lengkap" tidak menentukan versionName
, sehingga
nilai default "1.1" akan digunakan.
Framework Android menyediakan API yang memungkinkan Anda mengajukan kueri
ke sistem terkait informasi versi aplikasi. Untuk mendapatkan informasi versi,
gunakan metode
getPackageInfo(java.lang.String, int)
PackageManager
.
Menetapkan persyaratan API level
Jika aplikasi memerlukan versi minimum spesifik platform
Android, Anda dapat menetapkan persyaratan versi tersebut sebagai setelan API level
dalam file build.gradle
aplikasi. Saat proses build berlangsung, setelan
ini digabungkan ke dalam file manifes aplikasi Anda. Penetapan persyaratan API level
akan memastikan bahwa aplikasi Anda hanya dapat diinstal di perangkat yang
menjalankan versi platform Android yang kompatibel.
Catatan: Jika Anda menetapkan persyaratan API level secara langsung dalam
file manifes aplikasi, setelan terkait dalam file build akan
menggantikan setelan dalam file manifes. Selain itu, menentukan setelan
ini dalam file build Gradle memungkinkan Anda menetapkan nilai berbeda untuk
berbagai versi aplikasi. Agar lebih fleksibel dan untuk menghindari
potensi penimpaan saat manifes digabungkan, Anda harus menghapus atribut
ini dari elemen <uses-sdk>
dan menentukan setelan API
level dalam file build Gradle.
Tersedia dua setelan API level:
minSdkVersion
— Versi minimum platform Android yang akan menjalankan aplikasi, yang ditetapkan oleh ID API level platform.targetSdkVersion
— Menentukan API level tempat aplikasi dirancang untuk dijalankan. Dalam situasi tertentu, setelan ini memungkinkan aplikasi menggunakan elemen atau perilaku manifes yang ditentukan dalam API level target, bukan dibatasi agar hanya menggunakan setelan yang ditentukan untuk API level minimum.
Untuk menetapkan persyaratan API level default dalam file
build.gradle
, tambahkan satu atau beberapa setelan di atas ke blok defaultConfig
{}
, yang disarangkan dalam blok android {}
. Anda juga
dapat mengganti nilai default ini untuk berbagai
versi aplikasi dengan menambahkan setelan ke jenis build atau ragam produk.
File build.gradle
berikut menetapkan setelan
minSdkVersion
dan targetSdkVersion
default dalam
blok defaultConfig {}
dan mengganti minSdkVersion
untuk satu ragam produk.
Groovy
android { ... defaultConfig { ... minSdkVersion 14 targetSdkVersion 24 } productFlavors { main { ... } afterLollipop { ... minSdkVersion 21 } } }
Kotlin
android { ... defaultConfig { ... minSdkVersion(14) targetSdkVersion(24) } productFlavors { create("main") { ... } create("afterLollipop") { ... minSdkVersion(21) } } }
Saat bersiap menginstal aplikasi, sistem akan memeriksa nilai
setelan ini dan membandingkannya dengan versi sistem. Jika
nilai minSdkVersion
lebih besar dari versi sistem,
sistem akan mencegah penginstalan aplikasi.
Jika setelan ini tidak ditetapkan, sistem akan menganggap bahwa aplikasi Anda kompatibel dengan semua versi platform.
Untuk informasi selengkapnya, lihat
dokumentasi elemen manifes <uses-sdk>
dan dokumen
API Level. Untuk mengetahui setelan build Gradle, lihat Mengonfigurasi Varian Build.