Membuat beberapa versi aplikasi menggunakan varian build

1. Pengantar

Terakhir Diperbarui: 14-04-2020

Varian build berguna untuk membuat beberapa versi aplikasi. Misalnya, Anda ingin mem-build satu versi aplikasi gratis, dengan materi terbatas, dan versi lainnya yaitu versi berbayar yang berisi lebih banyak materi. Anda juga bisa mem-build versi aplikasi berbeda yang menargetkan perangkat berbeda, berdasarkan API level atau variasi perangkat lainnya.

Dalam codelab ini, Anda akan memodifikasi aplikasi Dice Roller yang di-build di Unit 1: Dasar-Dasar Kotlin sehingga Anda memiliki dua versi: "demo" dan "lengkap". Versi "lengkap" memiliki kotak teks tambahan yang menampilkan hasil lemparan dadu dalam kata sehingga pengguna tidak hanya mengandalkan gambar dadu untuk hasil lemparan.

Yang harus sudah Anda ketahui

Anda harus sudah:

  • Menyelesaikan jalur pembelajaran Dasar-Dasar Android 1-4. Untuk melakukan codelab prasyarat, lihat jalur Unit 1: Dasar-Dasar Kotlin.
  • Pemahaman umum tentang sistem build Android. Untuk memahami komponen utamanya, tinjau ringkasan build.

Yang akan Anda pelajari

  • Pengertian varian build.
  • Pengertian set sumber.
  • Cara mem-build versi aplikasi yang berbeda menggunakan varian build dan set sumber.
  • Cara memberikan ID aplikasi unik pada varian aplikasi Anda.

Yang akan Anda build

Dalam codelab ini, Anda akan memulai dengan aplikasi DiceRoller yang Anda build di jalur pembelajaran Unit 1: Dasar-Dasar Kotlin. Aplikasi DiceRoller memiliki gambar dadu dan tombol ROLL di bawahnya. Jika pengguna mengklik ROLL, dadu akan dilempar dan gambar akan berubah tergantung pada hasil lemparan.

Anda membuat file project tambahan dan menambahkan kode ke:

  • Buat ragam produk "demo" dan "full" aplikasi Anda.
  • Membuat set sumber "demo" dan "full" yang sesuai dengan ragam produk.
  • Tambahkan kotak ke tata letak versi "lengkap" aplikasi Anda.
  • Memprogram kotak versi "full" untuk menampilkan hasil roll saat pengguna mengklik ROLL.
  • Menyesuaikan judul aplikasi untuk versi aplikasi "demo" dan "full".
  • Berikan ID aplikasi unik untuk versi aplikasi "demo" dan "full".

Berikut adalah tampilan versi lengkap aplikasi Anda:

Aplikasi DiceRoller dengan kotak dinamis.

Yang akan Anda butuhkan

2. Menyiapkan lingkungan Anda

Mendapatkan kode

Jika Anda belum menyelesaikan aplikasi DiceRoller dari Unit 1: Dasar-Dasar Kotlin yang tersedia, download kode aplikasi dari GitHub.

Untuk mendownload dan membuka kode aplikasi di Android Studio, ikuti langkah-langkah berikut:

  1. Di halaman beranda repositori GitHub android-basics-kotlin-dice-roller-with-images-app-solution, klik Code > Download ZIP.
  2. Setelah file ZIP didownload, buka project di Android Studio, lalu klik File > Open. Anda dapat memulai Aktivitas Kosong atau membuka project sebelumnya jika diminta. Hal tersebut tidak terlalu penting karena kami akan membuka project yang telah didownload.
  3. Buka tempat file ZIP didownload (mungkin folder Downloads), pilih, lalu klik Open.

Menggunakan tampilan Project

Saat menangani varian build, Anda harus menangani file project dalam tampilan Project untuk melihat semua direktori untuk varian yang berbeda. Untuk melakukannya, buka panel Project di Android Studio, klik menu jenis tampilan (disetel ke tampilan Android secara default), dan pilih tampilan Project.

3. Memahami varian build

Varian build adalah hasil dari kombinasi ragam produk dan jenis build yang berbeda. Anda dapat menganggap ragam produk sebagai atribut yang lebih banyak berinteraksi dengan pengguna, dan jenis build sebagai atribut yang lebih banyak berinteraksi dengan developer. Anda tidak mengonfigurasi varian build secara langsung; Anda akan mengonfigurasi satu set ragam produk dan serangkaian jenis build, yang pada akhirnya menentukan varian build.

Secara khusus, varian build merepresentasikan setiap kombinasi ragam produk dan jenis build, dan diberi nama <product-flavor><build-type> sebagaimana mestinya. Misalnya, jika Anda memiliki jenis build debug dan release serta ragam produk demo dan full, varian build yang dihasilkan adalah:

  • demoDebug
  • demoRelease
  • fullDebug
  • fullRelease

Mari konfigurasi ragam produk dan jenis build untuk aplikasi DiceRoller.

4. Mengonfigurasi ragam produk

Ragam produk adalah atribut aplikasi yang lebih terlihat oleh pengguna, yaitu biasanya mewakili versi aplikasi yang tersedia bagi pengguna. Untuk membuat demo dan versi lengkap aplikasi, Anda harus menambahkan kedua ragam produk dan menetapkannya ke dimensi ragam. Untuk menambahkan ragam produk, buka file build.gradle tingkat aplikasi (app > build.gradle dalam tampilan Project), lalu tempelkan kode ini di blok android {}.

flavorDimensions "app_type"
productFlavors {
   demo {
       dimension "app_type"
         }
   full {
       dimension "app_type"
   }
}

Kode ini akan melakukan hal berikut:

  • Membuat dimensi ragam yang disebut app_type.
  • Membuat dua ragam produk, yang diwakili oleh blok demo {} dan full {}.
  • Menetapkan dua ragam produk ke dimensi app_type (ini opsional jika hanya ada satu dimensi ragam).

Hal di atas adalah kode dasar yang diperlukan untuk menentukan ragam produk. Nantinya Anda akan menggunakan beberapa opsi tambahan dalam codelab ini.

5. Mengonfigurasi jenis build

Jenis build adalah atribut aplikasi yang lebih ditujukan untuk developer dalam artian biasanya berupa tahap pengembangan (misalnya, debug, beta, dan rilis). Android Studio secara otomatis mengonfigurasi dua jenis build untuk Anda: debug dan release. Jenis build debug adalah untuk tujuan proses debug, sedangkan jenis build release adalah untuk tujuan distribusi.

Anda dapat membuat jenis build dan mengubah konfigurasinya dengan mengedit blok buildTypes {} di file build.gradle level aplikasi. Blok buildTypes {} default terlihat seperti ini:

buildTypes {
   release {
       minifyEnabled false
       proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
   }
}

Anda dapat melihat konfigurasi default untuk jenis build release (kita tidak akan membahas properti minifyEnabled atau proguardFiles dalam codelab ini). Jenis build debug tidak muncul di file konfigurasi build secara default, tetapi Anda dapat menambahkan blok debug {} untuk menambahkan atau mengubah setelan tertentu. Konfigurasi default berfungsi untuk tujuan kami, sehingga Anda dapat membiarkannya.

6. Menggunakan jendela alat Varian Build

Setelah Anda memiliki dua ragam produk dan dua jenis versi, mari kita lihat varian build apa yang mereka buat. Untuk melihat varian build baru di Android Studio:

  1. Di toolbar, klik Sync Project with Gradle Files 4e7fbf18152549d8.png. Setiap kali Anda membuat perubahan pada file konfigurasi build, Studio akan meminta Anda untuk menyinkronkan file sehingga file tersebut dapat menyimpan konfigurasi build baru dan memeriksa error build.
  2. Klik Build > Select Build Variant (atau View > Tool Windows > Build Variants) untuk menampilkan jendela Build Variants.
  3. Klik demoDebug di kolom Active Build Variant untuk membuka menu yang berisi semua varian build Anda: demoDebug, demoRelease, fullDebug, dan fullRelease. Gunakan menu ini untuk memilih berbagai varian build yang akan dijalankan dan diuji.

Jendela alat Varian Build dengan menu Varian Build Aktif ditampilkan.

Jalankan varian demoDebug dan fullDebug (varian berdasarkan jenis build release memerlukan lebih banyak penyiapan untuk dijalankan, sehingga kita tidak akan menanganinya dalam codelab ini). Sejauh ini, varian demoDebug dan fullDebug tidak dapat dibedakan dari perspektif pengguna.

7. Membuat berbagai fitur untuk varian yang berbeda

Setelah Anda memiliki demo dan versi aplikasi lengkap, mari tambahkan beberapa fitur ke versi lengkap.

Menambahkan fitur premium menggunakan set sumber

Untuk ragam produk full, tambahkan kotak yang menampilkan hasil lemparan dadu sehingga pengguna tidak hanya mengandalkan gambar dadu untuk mengetahui apa yang dilempar. Untuk menambahkan fitur premium ini, Anda menggunakan set sumber. Set sumber adalah direktori yang berisi konten untuk jenis build, ragam produk, dan varian build tertentu. Set sumber main default (app > src > main) berisi konten untuk dibagikan di antara semua varian build. Konten default ini dapat diganti dengan konten di set sumber lain.

Cara mengganti apa yang ada di set sumber main dan menentukan set sumber yang perlu Anda tambahkan berbeda-beda bergantung pada apa yang ingin Anda ubah.

Untuk mengubah resource, seperti tata letak atau gambar (sesuatu di main > res), ikuti langkah umum berikut:

  1. Buat set sumber, atau direktori, untuk ragam produk yang ingin diubah (kami akan membahas tempat dan cara membuat set sumber ini di bagian berikutnya).
  2. Tempel file resource yang ingin diubah ke set sumber baru ini, lalu perbarui. Saat plugin Android Gradle (AGP) mem-build varian build yang bergantung pada set sumber baru, plugin tersebut akan mengganti kode resource di main dengan kode resource di set sumber baru.

Untuk mengganti perilaku di class Java atau Kotlin (sesuatu di main > java), ikuti langkah umum berikut:

  1. Buat set sumber, atau direktori, untuk ragam produk yang ingin diubah dan semua ragam produk lainnya dalam dimensi ragam yang sama.
  2. Tempel file yang ingin diubah ke semua set sumber ragam produk, lalu ubah salinan (atau salinan) yang ingin Anda ubah.
  3. Hapus file asli dari set sumber main.

Untuk menambahkan kotak dinamis ke versi lengkap aplikasi Anda, ada baiknya untuk memikirkan fitur premium sebagai dua pengeditan utama:

  • Sesuaikan tata letak: Tambahkan kotak dengan mengubah file activity_main.xml.
  • Sesuaikan perilaku aplikasi: Ubah yang ditampilkan dalam kotak berdasarkan lemparan dadu dengan mengubah file MainActivity.kt.

Di bagian berikutnya, Anda akan mempelajari tempat dan cara membuat set sumber.

Menentukan tempat untuk membuat set sumber baru

Plugin Android Gradle (AGP) menunjukkan cara mengatur file Anda untuk setiap jenis build, ragam produk, dan varian build. Untuk menambahkan fitur premium ke ragam produk full yang menyertakan perubahan pada file MainActivity.kt, Anda akan membuat set sumber untuk ragam full dan demo. Untuk mengetahui tempat membuat set sumber ini, ikuti langkah-langkah berikut di Android Studio:

  1. Klik Gradle di jendela IDE.
  2. Buka MyApplication > Tasks > android lalu klik dua kali sourceSets. Jika Anda tidak melihat folder Tasks, izinkan Gradle mem-build daftar tugas selama sinkronisasi dengan mengklik File > Settings > Experimental, lalu menghapus centang Do not build Gradle task list selama sinkronisasi Gradle (Android Studio > Preferences > Experimental di macOS). Setelah Gradle mengeksekusi tugas, jendela Run akan menampilkan output.
  3. Jika tampilan tidak dalam mode teks seperti yang ditunjukkan di sini, klik Toggle view82487fd4e011f105.png di jendela Run.

Di jendela Run, Anda akan melihat output ini:

------------------------------------------------------------
Project ':app'
------------------------------------------------------------

...

debug
-----
Compile configuration: debugCompile
build.gradle name: android.sourceSets.debug
Java sources: [app/src/debug/java]
Kotlin sources: [app/src/debug/kotlin, app/src/debug/java]
Manifest file: app/src/debug/AndroidManifest.xml
Android resources: [app/src/debug/res]
Assets: [app/src/debug/assets]
AIDL sources: [app/src/debug/aidl]
RenderScript sources: [app/src/debug/rs]
JNI sources: [app/src/debug/jni]
JNI libraries: [app/src/debug/jniLibs]
Java-style resources: [app/src/debug/resources]

...

full
----
Compile configuration: fullCompile
build.gradle name: android.sourceSets.full
Java sources: [app/src/full/java]
Kotlin sources: [app/src/full/kotlin, app/src/full/java]
Manifest file: app/src/full/AndroidManifest.xml
Android resources: [app/src/full/res]
Assets: [app/src/full/assets]
AIDL sources: [app/src/full/aidl]
RenderScript sources: [app/src/full/rs]
JNI sources: [app/src/full/jni]
JNI libraries: [app/src/full/jniLibs]
Java-style resources: [app/src/full/resources]

Daftar jalur file pada "debug" menjelaskan tempat AGP mencari kode aplikasi dan resource untuk ragam produk "debug" secara default. Demikian pula, daftar jalur file pada "full" menjelaskan tempat AGP mencari konten untuk ragam produk "full" secara default.

Catat jalur file "Sumber Java" (untuk file seperti class Java dan Kotlin) dan "resource Android" (untuk file seperti tata letak dan gambar). Sekarang Anda tahu di mana dapat membuat set sumber baru dan membuatnya serta menambahkan kode untuk fitur premium.

Menyesuaikan tata letak versi lengkap

Untuk menambahkan kotak ke versi lengkap aplikasi, ikuti langkah-langkah berikut:

Pertama, buat set sumber full dan direktori resource Java:

  1. Buka panel Project, lalu pilih tampilan Project.
  2. Arahkan ke direktori DiceRoller/app/src/.
  3. Klik kanan direktori src, lalu pilih New > Directory.
  4. Dari menu pada Gradle SourceSet, pilih full/resources, lalu Tekan Enter.

Kedua, tempel file activity_main.xml dari set sumber main ke set sumber full.

  1. Buka DiceRoller/app/src/main/res/
  2. Klik kanan file activity_main.xml, lalu klik Salin.
  3. Buka DiceRoller/app/src/full/res/
  4. Klik kanan direktori res, lalu klik Paste.

Ketiga, untuk menambahkan kotak ke ragam full pada aplikasi Anda, tambahkan kode ini ke file activity_main.xml di set sumber full:

<TextView
    android:id="@+id/resultTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:text="Result"
    app:layout_constraintBottom_toTopOf="@+id/button"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/imageView" />

Jalankan varian build fullDebug dan demoDebug aplikasi Anda (pilih varian build yang ingin dijalankan menggunakan jendela alat Varian Build, lalu klik Run) data. Anda akan melihat kotak baru untuk varian fullDebug saja. Namun, kotak tersebut belum melakukan apa pun, jadi mari kita memprogramnya agar berubah, bergantung pada lemparan dadu.

Aplikasi DiceRoller dengan kotak yang bertuliskan "Result" sebagai placeholder.

Menyesuaikan perilaku versi lengkap

Untuk aplikasi versi lengkap, kotak harus menampilkan hasil lemparan dadu dalam bentuk kata. Untuk memprogram perilaku ini, ikuti langkah-langkah berikut:

Pertama, buat direktori sumber Java set sumber full.

  1. Pada panel Project di tampilan Project, buka direktori DiceRoller/app/src/full.
  2. Klik kanan direktori full, lalu pilih New > Directory.
  3. Dari menu Gradle Source Set, pilih java lalu tekan Enter.

Kedua, buat set sumber debug dan direktori sumber Java.

  1. Pada panel Project di tampilan Project, buka direktori DiceRoller/app/src.
  2. Klik kanan direktori src, lalu pilih New > Directory.
  3. Dari menu Gradle Source Set, pilih debug/java, lalu tekan Enter.

Ketiga, buka direktori DiceRoller/app/src/main/java.

  1. Tempel file MainActivity.kt ke direktori full/java dan debug/java.
  2. Hapus direktori java, termasuk file MainActivity.kt, dari set sumber utama. (Klik kanan direktori java, lalu klik Delete.)
  3. Dalam file MainActivity.kt set sumber lengkap, tambahkan kode ini ke metode rollDice():
// Update the result text view
val resultTextView: TextView = findViewById(R.id.resultTextView)
resultTextView.text = when (diceRoll) {
    1 -> "One"
    2 -> "Two"
    3 -> "Three"
    4 -> "Four"
    5 -> "Five"
    else -> "Six"
}

Jalankan kembali varian build fullDebug dan demoDebug. Kotak dalam versi lengkap harus menyertakan hasil lemparan dadu.

Aplikasi DiceRoller dengan kotak dinamis.

Mengubah judul aplikasi

Agar lebih jelas, mari kita tentukan versi aplikasi yang sedang Anda gunakan di judul aplikasi. Jenis perubahan ini sebenarnya dapat dilakukan tanpa set sumber. Judul aplikasi ditentukan oleh properti label di file AndroidManifest.xml (app > manifests > AndroidManifest.xml) . Untuk mendapatkan nilai label agar berubah bergantung pada varian yang dijalankan, buka file AndroidManifest.xml dan ubah baris label menjadi:

android:label="${appLabel}"

Tindakan ini menetapkan variabel, appLabel, sebagai judul aplikasi.

Selanjutnya, untuk menetapkan nilai appLabel atau mengubah judul untuk versi demo aplikasi, tambahkan baris manifestPlaceholders ke blok demo {} yang Anda buat sebelumnya:

demo {
   dimension "version"
   manifestPlaceholders = [appLabel: "Dice Roller - Demo"]
   applicationIdSuffix ".demo"
}

Demikian pula, untuk mengubah judul ragam full aplikasi, tambahkan baris manifestPlaceholders lain ke blok full {}:

full {
   dimension "version"
   manifestPlaceholders = [appLabel: "Dice Roller - Full"]
   applicationIdSuffix ".full"
}

Sekarang jalankan kembali varian demoDebug dan fullDebug. Anda akan melihat judul yang berbeda sekarang untuk varian build yang berbeda.

Menyelesaikan aplikasi DiceRoller dengan kotak dinamis.

8. Memberikan ID aplikasi yang unik pada varian build Anda

Ketika Anda mem-build APK atau AAB untuk aplikasi, alat build akan menandai aplikasi dengan ID aplikasi yang ditentukan dalam blok defaultConfig {} dari file build.gradle tingkat aplikasi (seperti yang ditampilkan di bawah ini). Namun, jika Anda ingin membuat versi aplikasi yang berbeda agar muncul sebagai listingan terpisah di Google Play Store, seperti versi "demo" atau "full", Anda harus memberikan ID aplikasi yang berbeda kepada setiap versi. Untuk setiap ragam dalam blok productFlavors {}, Anda dapat menentukan ulang properti applicationId, atau menambahkan segmen ke ID aplikasi default menggunakan applicationIdSuffix, seperti yang ditampilkan di sini:

defaultConfig {
   applicationId "com.example.diceroller"
   ...
}

flavorDimensions "version"
productFlavors {
   demo {
 dimension "version"
       manifestPlaceholders = [appLabel: "Dice Roller - Demo"]
         applicationIdSuffix ".demo"
   }
   full {
       dimension "version"
       manifestPlaceholders = [appLabel: "Dice Roller - Full"]
         applicationIdSuffix ".full"
   }
}

9. Selamat

Selamat! Anda telah berhasil mem-build dua versi aplikasi DiceRoller menggunakan varian build.

Anda telah mengonfigurasi ragam produk dan jenis build untuk membuat varian build. Anda telah menambahkan fitur premium ke versi aplikasi "full" menggunakan set sumber. Anda telah mempelajari cara memberikan ID aplikasi unik kepada setiap varian build sehingga aplikasi dianggap sebagai aplikasi terpisah di Play Store.

Sekarang Anda sudah mengetahui langkah dasar yang diperlukan untuk membuat beberapa versi aplikasi untuk melayani berbagai grup pengguna dengan lebih baik.

Apa selanjutnya?

Dokumen referensi