Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Membuat versi aplikasi Anda

Pembuatan versi merupakan bagian penting dari proses upgrade aplikasi dan strategi pemeliharaan. Pembuatan versi penting karena:

  • Pengguna perlu memiliki informasi khusus mengenai versi aplikasi yang terinstal di perangkat mereka dan versi upgrade yang tersedia untuk diinstal.
  • Aplikasi lain — termasuk aplikasi lain yang Anda publikasikan sebagai paket — perlu mengkueri sistem perihal versi aplikasi Anda, untuk menentukan kompatibilitas dan mengidentifikasi dependensi.
  • Layanan yang akan Anda gunakan untuk memublikasikan aplikasi juga mungkin perlu mengkueri aplikasi untuk mengetahui versinya, sehingga aplikasi dapat menampilkan versinya kepada pengguna. Layanan publikasi mungkin juga perlu memeriksa versi aplikasi untuk menentukan kompatibilitas dan menetapkan hubungan upgrade/downgrade versi.

Sistem Android menggunakan informasi versi aplikasi Anda untuk memberikan perlindungan dari upaya downgrade. Sistem Android tidak menggunakan informasi versi aplikasi untuk menerapkan batasan upgrade atau kompatibilitas aplikasi pihak ketiga. Aplikasi Anda harus menerapkan batasan versi apa pun dan harus memberi tahu pengguna tentang hal tersebut.

Sistem Android menerapkan kompatibilitas versi sistem sebagaimana dinyatakan oleh setelan minSdkVersion dalam file build. Setelan ini memungkinkan aplikasi menetapkan versi minimum API sistem yang kompatibel dengannya. Untuk informasi selengkapnya, lihat Menetapkan Versi Minimum API Sistem.

Menetapkan informasi versi aplikasi

Untuk menentukan informasi versi aplikasi Anda, tetapkan nilai untuk setelan versi dalam file build Gradle. Kemudian nilai-nilai tersebut digabungkan ke dalam file manifes aplikasi Anda selama proses build.

Catatan: Jika aplikasi Anda menentukan versi aplikasi secara langsung dalam elemen <manifest>, nilai versi dalam file build Gradle akan menggantikan setelan dalam manifes. Selain itu, dengan menentukan setelan ini di file build Gradle, Anda dapat menetapkan nilai yang berbeda untuk versi aplikasi yang berbeda. Untuk mendapatkan fleksibilitas lebih besar dan untuk menghindari kemungkinan penimpaan saat manifes digabungkan, Anda harus menghapus atribut ini dari elemen <manifest> dan menentukan setelan versi dalam file build Gradle sebagai gantinya.

Ada dua setelan yang tersedia, dan Anda harus selalu menetapkan nilai keduanya:

  • versionCode — Bilangan bulat positif yang digunakan sebagai nomor versi internal. Nomor ini hanya digunakan untuk menentukan apakah suatu versi lebih baru daripada versi yang lain; nomor yang lebih tinggi menunjukkan versi yang lebih baru. Ini bukanlah nomor versi yang ditampilkan kepada pengguna, melainkan nomor yang ditentukan oleh setelan versionName, yang dijelaskan di bawah. Sistem Android menggunakan nilai versionCode untuk memberikan perlindungan dari upaya downgrade dengan mencegah pengguna menginstal APK dengan versionCode yang lebih rendah daripada versi yang saat ini terinstal di perangkat mereka.

    Nilai ini berupa bilangan bulat positif, sehingga aplikasi lain dapat mengevaluasi nilainya secara terprogram, misalnya untuk memeriksa hubungan upgrade atau downgrade. Anda dapat menetapkan nilainya ke suatu bilangan bulat yang diinginkan, akan tetapi Anda harus memastikan setiap rilis aplikasi Anda telah menggunakan nilai yang lebih besar. Anda tidak dapat mengupload APK ke Play Store dengan versionCode yang telah digunakan untuk versi sebelumnya.

    Catatan: Pada beberapa situasi, Anda mungkin ingin mengupload versi aplikasi Anda dengan versionCode yang lebih rendah daripada versi terbarunya. Misalnya, jika Anda memublikasikan beberapa APK, Anda mungkin memiliki rentang versionCode yang telah ditetapkan sebelumnya untuk APK tertentu. Untuk informasi selengkapnya tentang menetapkan nilai versionCode untuk beberapa APK, lihat Dukungan Beberapa APK.

    Umumnya, Anda merilis versi pertama aplikasi dengan versionCode yang ditetapkan ke 1, lalu meningkatkan nilai ini secara monoton di setiap rilis, baik rilis besar maupun kecil. Ini berarti nilai versionCode tidak harus serupa dengan versi rilis aplikasi yang dapat dilihat pengguna (lihat versionName di bawah). Aplikasi dan layanan publikasi tidak boleh menampilkan nilai versi ini kepada pengguna.

    Peringatan: Nilai terbesar yang diizinkan oleh Google Play untuk versionCode adalah 2100000000.

  • versionName — String yang digunakan sebagai nomor versi yang ditampilkan kepada pengguna. Setelan ini dapat ditentukan sebagai string raw atau sebagai referensi resource string.

    Nilai ini adalah string, sehingga Anda bisa menjelaskan versi aplikasi sebagai string <major>.<minor>.<point>, atau sebagai jenis ID versi absolut atau relatif lainnya. versionName tidak memiliki kegunaan selain untuk ditampilkan kepada pengguna.

Anda dapat menentukan nilai default untuk setelan berikut dengan menyertakannya ke dalam blok defaultConfig {}, yang disarangkan di dalam blok android {} file build.gradle modul Anda. Kemudian Anda dapat mengganti nilai default ini untuk versi aplikasi Anda yang berbeda dengan menentukan nilai tersendiri untuk masing-masing jenis build atau ragam produk. File build.gradle berikut menampilkan setelan versionCode dan versionName dalam blok defaultConfig {}, serta blok productFlavors {}.

    android {
      ...
      defaultConfig {
        ...
        versionCode 2
        versionName "1.1"
      }
      productFlavors {
        demo {
          ...
          versionName "1.1-demo"
        }
        full {
          ...
        }
      }
    }
    

Dalam blok defaultConfig {} contoh ini, nilai versionCode menunjukkan bahwa APK saat ini berisi rilis kedua dari aplikasi, dan string versionName menentukan bahwa nilai ini akan muncul kepada pengguna sebagai versi 1.1. File build.gradle ini juga menentukan dua ragam produk, "demo" dan "full". Karena ragam produk "demo" menentukan versionName sebagai "1.1-demo", build "demo" menggunakan versionName ini, bukan nilai default-nya. Blok ragam produk "full" tidak menentukan versionName dan menggunakan nilai default "1.1".

Framework Android menyediakan API agar Anda dapat mengkueri sistem untuk mengetahui informasi versi aplikasi Anda. Untuk mendapatkan informasi versi, gunakan metode getPackageInfo(java.lang.String, int) dari PackageManager.

Menetapkan persyaratan level API

Jika aplikasi Anda memerlukan versi minimum khusus dari platform Android, Anda dapat menetapkan persyaratan versi tersebut sebagai setelan level API dalam file build.gradle aplikasi. Selama proses build, setelan ini akan digabungkan ke dalam file manifes aplikasi Anda. Penetapan persyaratan level API akan memastikan bahwa aplikasi Anda hanya dapat diinstal pada perangkat yang menjalankan versi platform Android yang kompatibel.

Catatan: Jika Anda menetapkan persyaratan level API langsung di dalam file manifes aplikasi, setelan yang terkait dalam file build akan menggantikan setelan dalam file manifes. Selain itu, dengan menetapkan setelan ini di file build Gradle, Anda dapat menetapkan nilai yang berbeda untuk versi aplikasi yang berbeda. Untuk mendapatkan fleksibilitas lebih besar dan untuk menghindari kemungkinan penimpaan saat manifes digabungkan, Anda harus menghapus atribut ini dari elemen <uses-sdk> dan menentukan setelan level API di dalam file build Gradle saja.

Ada dua setelan level API yang tersedia:

  • minSdkVersion — Versi minimum platform Android tempat aplikasi akan dijalankan, yang ditetapkan oleh ID level API platform.
  • targetSdkVersion — Menetapkan level API tempat aplikasi dirancang untuk dijalankan. Dalam beberapa kasus, hal ini memungkinkan aplikasi menggunakan elemen atau perilaku manifes yang ditetapkan dalam level API target, bukannya dibatasi pada penggunaan elemen atau perilaku manifes yang ditetapkan untuk level API minimum.

Untuk menetapkan persyaratan level API 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 versi aplikasi yang berbeda dengan menambahkan setelan ke jenis versi atau ragam produk. File build.gradle berikut menetapkan setelan default minSdkVersion dan targetSdkVersion dalam blok defaultConfig {} serta mengganti minSdkVersion untuk satu ragam produk.

    android {
      ...
      defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 24
      }
      productFlavors {
        main {
          ...
        }
        afterLollipop {
          ...
          minSdkVersion 21
        }
      }
    }
    

Saat bersiap menginstal aplikasi Anda, sistem akan memeriksa nilai setelan ini dan membandingkannya dengan versi sistem. Jika nilai minSdkVersion lebih besar daripada versi sistem, sistem akan mencegah penginstalan aplikasi.

Jika Anda tidak menetapkan setelan ini, sistem akan beranggapan bahwa aplikasi Anda kompatibel dengan semua versi platform.

Untuk informasi selengkapnya, lihat dokumentasi elemen manifes <uses-sdk> dan dokumen Level API. Untuk mengetahui setelan build Gradle, lihat Mengonfigurasi Varian Build.