Catatan rilis plugin Android Gradle

Sistem build Android Studio didasarkan pada Gradle. Plugin Android Gradle menambahkan beberapa fitur yang dikhususkan untuk membuat aplikasi Android. Meskipun plugin Android biasanya diupdate secara bersamaan dengan Android Studio, plugin ini (dan seluruh sistem Gradle) dapat berjalan secara independen dari Android Studio dan dapat diupdate secara terpisah.

Halaman ini menjelaskan cara menjaga fitur Gradle Anda agar selalu update dan apa saja yang ada pada update terbarunya.

Untuk mengetahui detail cara mengonfigurasi build Android dengan Gradle, lihat halaman berikut:

Untuk informasi lebih lanjut tentang sistem build Gradle, lihat Panduan pengguna Gradle.

Mengupdate plugin Android Gradle

Saat mengupdate Android Studio, Anda mungkin menerima permintaan untuk mengupdate secara otomatis plugin Android Gradle ke versi terbaru yang tersedia. Anda dapat memilih untuk menerima update atau menentukan versi secara manual berdasarkan persyaratan build project.

Anda dapat menentukan versi plugin di menu File > Project Structure > Project di Android Studio, atau dalam file build.gradle level teratas. Versi plugin berlaku untuk semua modul yang dibuat di project Android Studio. Contoh berikut menetapkan plugin ke versi 3.5.2 dari file build.gradle:

    buildscript {
        repositories {
            // Gradle 4.1 and higher include support for Google's Maven repo using
            // the google() method. And you need to include this repo to download
            // Android Gradle plugin 3.0.0 or higher.
            google()
            ...
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.5.2'
        }
    }
    

Perhatian: Anda tidak boleh menggunakan dependensi dinamis dalam nomor versi, misalnya 'com.android.tools.build:gradle:2.+'. Penggunaan fitur ini dapat menyebabkan update versi yang tidak terduga dan kesulitan dalam menyelesaikan perbedaan versi.

Jika versi plugin yang ditentukan belum didownload, Gradle akan mendownloadnya pada project yang Anda buat selanjutnya, atau klik Tools > Android > Sync Project with Gradle Files dari panel menu Android Studio.

Mengupdate Gradle

Saat mengupdate Android Studio, Anda mungkin menerima permintaan untuk mengupdate juga Gradle ke versi terbaru yang tersedia. Anda dapat memilih untuk menerima update atau menentukan versi secara manual berdasarkan persyaratan build project.

Tabel berikut mencantumkan versi Gradle yang diperlukan untuk setiap versi plugin Android Gradle. Agar performanya optimal, Anda harus menggunakan Gradle dan plugin versi terbaru.

Versi pluginVersi Gradle yang diperlukan
1.0.0 - 1.1.32.2.1 - 2.3
1.2.0 - 1.3.12.2.1 - 2.9
1.5.02.2.1 - 2.13
2.0.0 - 2.1.22.10 - 2.13
2.1.3 - 2.2.32.14.1+
2.3.0+3.3+
3.0.0+4.1+
3.1.0+4.4+
3.2.0 - 3.2.14.6+
3.3.0 - 3.3.24.10.1+
3.4.0 - 3.4.15.1.1+
3.5.0+5.4.1-5.6.4

Anda dapat menentukan versi Gradle di menu File > Project Structure > Project di Android Studio, atau dengan mengedit referensi distribusi Gradle dalam file gradle/wrapper/gradle-wrapper.properties. Contoh berikut menetapkan versi Gradle ke 5.4.1 dalam file gradle-wrapper.properties.

    ...
    distributionUrl = https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
    ...
    

3.5.0 (Agustus 2019)

Plugin Android Gradle 3.5.0, beserta Android Studio 3.5, merupakan rilis utama dan hasil dari Project Marble, yang berfokus meningkatkan tiga area utama Android Developer Tools: kesehatan sistem, penyempurnaan fitur, dan perbaikan bug. Secara khusus, meningkatkan kecepatan build project adalah fokus utama update ini.

Untuk informasi tentang hal ini dan update Project Marble lainnya, baca postingan blog Android Developer atau bagian di bawah.

Plugin Android versi ini memerlukan:

3.5.3 (Desember 2019)

Update minor ini mendukung Android Studio 3.5.3 dan menyertakan berbagai perbaikan bug dan peningkatan performa.

3.5.2 (November 2019)

Update minor ini mendukung Android Studio 3.5.2 dan menyertakan berbagai perbaikan bug dan peningkatan performa. Untuk melihat daftar perbaikan bug penting, baca postingan blog tentang Rilis Update.

3.5.1 (Oktober 2019)

Update minor ini mendukung Android Studio 3.5.1 dan menyertakan berbagai perbaikan bug dan peningkatan performa. Untuk melihat daftar perbaikan bug penting, baca postingan blog tentang Rilis Update.

Pemrosesan anotasi inkremental

Pemroses anotasi Data Binding mendukung pemrosesan anotasi inkremental jika Anda menetapkan android.databinding.incremental=true dalam file gradle.properties. Pengoptimalan ini menghasilkan performa build inkremental yang lebih baik. Untuk daftar lengkap pemroses anotasi yang dioptimalkan, lihat tabel pemroses anotasi inkremental.

Selain itu, KAPT 1.3.30 dan yang lebih tinggi juga mendukung pemroses anotasi inkremental, yang dapat Anda aktifkan dengan memasukkan kapt.incremental.apt=true ke dalam file gradle.properties Anda.

Pengujian unit yang dapat di-cache

Saat Anda mengaktifkan pengujian unit untuk menggunakan resource, aset, dan manifes Android dengan menetapkan includeAndroidResources ke true, plugin Android Gradle akan menghasilkan file konfigurasi pengujian yang berisi jalur absolut, dan hal ini akan merusak kemampuan untuk merelokasi cache. Sebaiknya Anda menginstruksikan plugin agar menghasilkan konfigurasi pengujian menggunakan jalur relatif, agar tugas AndroidUnitTest dapat sepenuhnya di-cache, dengan menyertakan baris berikut dalam file gradle.properties Anda:

android.testConfig.useRelativePath = true
    

Masalah umum

  • Saat menggunakan plugin Kotlin Gradle 1.3.31 atau yang lebih lama, Anda mungkin melihat peringatan berikut saat membuat atau menyinkronkan project:

    WARNING: API 'variant.getPackageLibrary()' is obsolete and has been replaced
                 with 'variant.getPackageLibraryProvider()'.
        

    Untuk menyelesaikan masalah ini, upgrade plugin ke versi 1.3.40 atau yang lebih baru.

3.4.0 (April 2019)

Plugin Android versi ini memerlukan:

3.4.2 (Juli 2019)

Update minor ini mendukung Android Studio 3.4.2 dan menyertakan berbagai perbaikan bug dan peningkatan performa. Untuk melihat daftar perbaikan bug penting, baca postingan blog tentang Rilis Update.

3.4.1 (Mei 2019)

Update minor ini mendukung Android Studio 3.4.1 dan menyertakan berbagai perbaikan bug dan peningkatan performa. Untuk melihat daftar perbaikan bug penting, baca postingan blog tentang Rilis Update.

Fitur baru

  • Konfigurasi dependensi pemeriksaan lint baru: Perilaku lintChecks telah berubah dan konfigurasi dependensi baru, lintPublish, diperkenalkan untuk memberi Anda kontrol lebih besar atas pemeriksaan lint mana saja yang dipaketkan dalam library Android Anda.

    • lintChecks: Ini adalah konfigurasi aktif yang sebaiknya Anda gunakan untuk pemeriksaan lint yang hanya ingin Anda jalankan saat membuat project secara lokal. Jika sebelumnya Anda menggunakan konfigurasi dependensi lintChecks untuk menyertakan pemeriksaan lint dalam AAR yang dipublikasikan, sebaiknya migrasikan dependensi tersebut untuk menggunakan konfigurasi lintPublish baru yang dijelaskan di bawah ini.
    • lintPublish: Gunakan konfigurasi baru ini dalam project library untuk pemeriksaan lint yang ingin Anda sertakan dalam AAR yang dipublikasikan, seperti ditunjukkan di bawah ini. Artinya, project yang menggunakan library Anda juga akan menerapkan pemeriksaan lint tersebut.

    Contoh kode berikut menggunakan kedua konfigurasi dependensi pada project library Android lokal.

    dependencies {
          // Executes lint checks from the ':lint' project at build time.
          lintChecks project(':lint')
          // Packages lint checks from the ':lintpublish' in the published AAR.
          lintPublish project(':lintpublish')
        }
        
  • Secara umum, tugas pengemasan dan penandatanganan akan mengalami peningkatan kecepatan build secara keseluruhan. Jika melihat adanya regresi performa terkait tugas-tugas ini, silakan laporkan bug.

Perubahan perilaku

  • Peringatan penghentian penggunaan plugin Fitur Android Instant Apps: Jika Anda masih menggunakan plugin com.android.feature untuk membuat aplikasi instan, plugin Android Gradle 3.4.0 akan memunculkan peringatan tentang penghentian penggunaan. Untuk memastikan Anda masih dapat membuat aplikasi instan pada versi plugin mendatang, migrasikan aplikasi instan Anda agar menggunakan plugin fitur dinamis, yang juga memungkinkan Anda memublikasikan pengalaman aplikasi terinstal dan aplikasi instan dari satu Android App Bundle.

  • R8 diaktifkan secara default: R8 mengintegrasikan desugaring, penyingkatan, obfuscation, pengoptimalan, dan dexing ke dalam satu langkah, sehingga menghasilkan peningkatan performa build yang nyata. R8 diperkenalkan pada plugin Android Gradle 3.3.0 dan kini diaktifkan secara default untuk aplikasi dan project library Android yang menggunakan plugin 3.4.0 dan yang lebih tinggi.

    Gambar di bawah ini memberikan ringkasan umum tentang proses kompilasi sebelum R8 diperkenalkan.

    Sebelum R8, ProGuard adalah langkah kompilasi yang berbeda dengan dexing dan desugaring.

    Sekarang, dengan R8, desugaring, penyingkatan, obfuscation, pengoptimalan, dan dexing (D8) dapat diselesaikan dalam satu langkah, seperti yang diilustrasikan di bawah ini.

    Dengan R8, desugaring, penyingkatan, obfuscation, pengoptimalan, dan dexing dilakukan dalam satu langkah kompilasi.

    Perlu diperhatikan bahwa R8 dirancang agar kompatibel dengan aturan ProGuard yang telah ada, sehingga Anda mungkin tidak perlu mengambil tindakan apa pun untuk mendapatkan manfaat dari R8. Namun, karena teknologinya berbeda dengan ProGuard yang secara khusus dirancang untuk project Android, penyusutan, dan pengoptimalan dapat menyebabkan penghapusan kode yang mungkin tidak dilakukan ProGuard. Jadi, dalam situasi yang jarang terjadi ini, Anda mungkin perlu menambahkan aturan lain untuk menjaga kode tersebut pada output build Anda.

    Jika mengalami masalah saat menggunakan R8, baca FAQ kompatibilitas R8 untuk memeriksa apakah ada solusi untuk masalah Anda. Jika tidak ada solusi yang terdokumentasi, silakan laporkan bug. Anda dapat menonaktifkan R8 dengan menambahkan salah satu baris berikut ke file gradle.properties project Anda:

    # Disables R8 for Android Library modules only.
        android.enableR8.libraries = false
        # Disables R8 for all modules.
        android.enableR8 = false
        
  • ndkCompile tidak digunakan lagi: Sekarang Anda akan melihat error build jika mencoba menggunakan ndkBuild untuk mengompilasi library native. Sebagai gantinya, gunakan CMake atau ndk-build untuk Menambahkan kode C dan C++ ke project Anda.

Masalah umum

  • Penggunaan nama paket yang unik secara benar saat ini tidak diberlakukan, tetapi akan diperketat pada versi plugin selanjutnya. Pada plugin Android Gradle versi 3.4.0, Anda dapat memilih ikut serta untuk memeriksa apakah project Anda mendeklarasikan nama paket yang dapat diterima dengan menambahkan baris di bawah ini ke file gradle.properties.

    android.uniquePackageNames = true
        

    Untuk mempelajari lebih lanjut cara menetapkan nama paket melalui plugin Android Gradle, lihat Menetapkan ID aplikasi.

3.3.0 (Januari 2019)

Plugin Android versi ini memerlukan:

3.3.2 (Maret 2019)

Update minor ini mendukung Android Studio 3.3.2 dan menyertakan berbagai perbaikan bug dan peningkatan performa. Untuk melihat daftar perbaikan bug penting, baca postingan blog tentang Rilis Update.

3.3.1 (Februari 2019)

Update minor ini mendukung Android Studio 3.3.1 dan menyertakan berbagai perbaikan bug dan peningkatan performa.

Fitur baru

  • Peningkatan sinkronisasi classpath: Saat menyelesaikan dependensi pada waktu proses dan mengompilasi waktu classpath, plugin Android Gradle mencoba memperbaiki konflik versi downstream tertentu untuk dependensi yang muncul di beberapa classpath.

    Misalnya, jika classpath runtime menyertakan Library A versi 2.0 dan classpath kompilasi menyertakan Library A versi 1.0, plugin akan otomatis mengupdate dependensi pada classpath kompilasi ke Library A versi 2.0 untuk menghindari error.

    Namun, jika classpath runtime menyertakan Library A versi 1.0 dan classpath kompilasi menyertakan Library A versi 2.0, plugin tidak akan mendowngrade dependensi pada classpath kompilasi ke Library A versi 1.0, dan Anda akan mengalami error. Untuk mempelajari lebih lanjut, lihat Memperbaiki konflik antar classpath.

  • Peningkatan kompilasi Java inkremental saat menggunakan pemroses anotasi: Update ini mengurangi waktu build dengan menyempurnakan dukungannya untuk kompilasi Java inkremental saat menggunakan pemroses anotasi.

    • Untuk project yang menggunakan Kapt (kebanyakan project khusus Kotlin dan project campuran Kotlin-Java): Kompilasi Java inkremental diaktifkan, sekalipun Anda menggunakan data binding atau plugin retro-lambda. Pemrosesan anotasi oleh tugas Kapt belum inkremental.
    • Untuk project yang tidak menggunakan Kapt (project khusus Java): Jika pemroses anotasi yang Anda gunakan semuanya mendukung pemrosesan anotasi inkremental, maka kompilasi Java inkremental akan diaktifkan secara default. Untuk memantau adopsi pemroses anotasi inkremental, lihat Masalah Gradle 5277.

      Namun, jika satu atau beberapa pemroses anotasi tidak mendukung build inkremental, maka kompilasi Java inkremental tidak akan diaktifkan. Sebagai gantinya, Anda dapat menyertakan tanda berikut dalam file gradle.properties:

      android.enableSeparateAnnotationProcessing=true
          

      Jika tanda ini Anda sertakan, plugin Android Gradle akan menjalankan pemroses anotasi dalam tugas terpisah dan memungkinkan tugas kompilasi Java berjalan secara inkremental.

  • Info debug yang lebih baik saat menggunakan API usang: Jika plugin mendeteksi Anda menggunakan API yang tidak lagi didukung, sekarang plugin dapat memberikan informasi yang lebih mendetail untuk membantu Anda menentukan tempat API tersebut digunakan. Untuk melihat info tambahan, Anda perlu menyertakan baris berikut dalam file gradle.properties project Anda:

    android.debug.obsoleteApi=true
        

    Anda juga dapat mengaktifkan tanda ini dengan meneruskan -Pandroid.debug.obsoleteApi=true dari command line.

  • Anda dapat menjalankan pengujian instrumentasi pada modul fitur dinamis dari command line.

Perubahan perilaku

  • Konfigurasi tugas yang kurang penting: Sekarang plugin menggunakan API pembuatan tugas baru dari Gradle untuk menghindari inisialisasi dan konfigurasi tugas-tugas yang tidak diperlukan untuk menyelesaikan build saat ini (atau tugas-tugas yang tidak ada di grafik tugas eksekusi). Misalnya, jika Anda memiliki beberapa varian build, seperti varian build "rilis" dan "debug", dan membuat versi "debug" aplikasi, plugin akan menghindari inisialisasi dan konfigurasi tugas untuk versi "rilis" aplikasi Anda.

    Memanggil metode lama tertentu dalam Variants API, misalnya variant.getJavaCompile(), mungkin masih akan memaksakan konfigurasi tugas. Guna memastikan build Anda dioptimalkan untuk konfigurasi tugas yang kurang penting, panggil metode baru yang akan menampilkan objek TaskProvider, seperti variant.getJavaCompileProvider().

    Jika menjalankan tugas build kustom, pelajari cara beradaptasi dengan API pembuatan tugas baru dari Gradle.

  • Untuk jenis build tertentu, jika useProguard false ditetapkan, sekarang plugin akan menggunakan R8, bukan ProGuard, untuk menyingkat dan meng-obfuscate kode dan resource aplikasi Anda. Untuk mempelajari R8 lebih lanjut, baca postingan blog ini dari Blog Android Developer.

  • Pembuatan class R yang lebih cepat untuk project library: Sebelumnya, plugin Android Gradle akan menghasilkan file R.java untuk setiap dependensi project, lalu mengompilasi class R tersebut bersama class lain dalam aplikasi Anda. Sekarang plugin akan langsung membuat JAR yang berisi class R terkompilasi dari aplikasi Anda, tanpa terlebih dahulu membuat class R.java antara. Pengoptimalan ini dapat meningkatkan performa build secara signifikan untuk project yang menyertakan banyak subproject dan dependensi library, serta meningkatkan kecepatan pengindeksan pada Android Studio.

  • Saat membuat Android App Bundle, APK yang dihasilkan dari app bundle yang menargetkan Android 6.0 (API level 23) atau versi yang lebih tinggi kini menyertakan versi library native yang tidak dikompresi secara default. Dengan pengoptimalan ini, perangkat tidak perlu lagi membuat salinan library sehingga mengurangi ukuran aplikasi dalam disk. Jika ingin menonaktifkan pengoptimalan ini, tambahkan baris berikut ke file gradle.properties:

    android.bundle.enableUncompressedNativeLibs = false
        
  • Plugin ini memberlakukan versi minimum dari beberapa plugin pihak ketiga.

  • Sinkronisasi project varian tunggal: Menyinkronkan project Anda dengan konfigurasi build merupakan langkah penting yang akan memungkinkan Android Studio memahami struktur project Anda. Namun, untuk project besar, proses ini dapat membutuhkan waktu lama. Jika project menggunakan berbagai varian build, kini Anda dapat mengoptimalkan sinkronisasi project dengan membatasinya hanya ke varian yang saat ini Anda pilih.

    Anda harus menggunakan Android Studio 3.3 atau yang lebih tinggi dengan Plugin Android Gradle 3.3.0 atau yang lebih tinggi untuk mengaktifkan pengoptimalan ini. Jika memenuhi persyaratan ini, IDE akan meminta Anda mengaktifkan pengoptimalan ini pada saat sinkronisasi project. Pengoptimalan juga diaktifkan secara default pada project baru.

    Untuk mengaktifkan pengoptimalan ini secara manual, klik File > Settings > Experimental > Gradle (Android Studio > Preferences > Experimental > Gradle pada Mac), lalu centang Only sync the active variant.

    Catatan: Pengoptimalan ini mendukung sepenuhnya project yang menggunakan bahasa Java dan C++, serta menyediakan dukungan untuk Kotlin. Jika Anda mengaktifkan pengoptimalan untuk project dengan konten Kotlin, sinkronisasi Gradle akan melakukan fallback untuk menggunakan varian lengkap secara internal.

  • Download otomatis paket SDK yang hilang: Fungsionalitas ini diperluas untuk mendukung NDK. Untuk mempelajari lebih lanjut, baca Otomatis mendownload paket yang hilang dengan Gradle.

Perbaikan Bug

  • Plugin Android Gradle 3.3.0 memperbaiki masalah berikut:

    • Proses build yang memanggil android.support.v8.renderscript.RenderScript, alih-alih versi AndroidX, meskipun Jetifier diaktifkan
    • Clash karena androidx-rs.jar menyertakan annotation.AnyRes yang dipaketkan secara statis
    • Saat menggunakan RenderScript, Anda tidak perlu lagi menetapkan versi Build Tools dalam file build.gradle secara manual

3.2.0 (September 2018)

Plugin Android versi ini memerlukan:

3.2.1 (Oktober 2018)

Dengan update ini, Anda tidak perlu lagi menentukan versi untuk SDK Build Tools. Plugin Android Gradle sekarang menggunakan versi 28.0.3 secara default.

Fitur baru

  • Dukungan untuk membuat Android App Bundle: App bundle adalah format upload baru yang menyertakan semua kode dan resource terkompilasi aplikasi Anda, sedangkan pembuatan dan penandatanganan APK-nya diserahkan ke Google Play Store. Anda tidak perlu lagi membuat, menandatangani, dan mengelola banyak APK, dan pengguna mendapatkan download yang lebih kecil yang dioptimalkan untuk perangkat mereka. Untuk mempelajari lebih lanjut, baca Tentang Android App Bundle.

  • Dukungan untuk peningkatan kecepatan build inkremental saat menggunakan pemroses anotasi: DSL AnnotationProcessorOptions sekarang memperluas CommandLineArgumentProvider yang memungkinkan Anda atau penulis pemroses anotasi untuk menganotasi argumen bagi pemroses yang menggunakan anotasi jenis properti build inkremental. Penggunaan anotasi ini meningkatkan keakuratan dan performa build inkremental atau clean build yang di-cache. Untuk mempelajari lebih lanjut, baca Meneruskan argumen ke pemroses anotasi.

  • Alat migrasi untuk AndroidX: Saat menggunakan plugin Android Gradle 3.2.0 dengan Android 3.2 dan yang lebih tinggi, Anda dapat memigrasikan dependensi Maven dan lokal project agar menggunakan library AndroidX baru dengan memilih Refactor > Migrate to AndroidX dari panel menu. Penggunaan alat migrasi ini juga menetapkan tanda berikut ke true dalam file gradle.properties Anda:

    • android.useAndroidX: Jika ditetapkan ke true , plugin Android akan menggunakan library AndroidX yang sesuai, bukan Support Library. Jika tanda ini tidak ditentukan, plugin akan menetapkannya ke false secara default.
    • android.enableJetifier: Jika ditetapkan ke true, plugin Android akan otomatis memigrasikan library pihak ketiga yang ada agar menggunakan AndroidX dengan menulis ulang biner library tersebut. Jika tanda ini tidak ditentukan, plugin akan menetapkannya ke false secara default. Anda dapat menetapkan tanda ini ke true hanya jika android.useAndroidX juga ditetapkan ke true; jika tidak, Anda akan mengalami error build.

    Untuk mempelajari lebih lanjut, baca Ringkasan AndroidX.

  • Penyingkat kode baru, R8: R8 adalah alat penyingkatan dan obfuscation kode baru yang menggantikan ProGuard. Anda dapat mulai menggunakan versi pratinjau R8 dengan menyertakan baris berikut dalam file gradle.properties project Anda:

    android.enableR8 = true
        

Perubahan perilaku

  • Desugaring dengan D8 sekarang diaktifkan secara default.
  • AAPT2 sekarang ada di repositori Google Maven. Untuk menggunakan AAPT2, pastikan Anda memiliki dependensi google() dalam file build.gradle, seperti ditunjukkan di bawah ini:

    buildscript {
              repositories {
                  google() // here
                  jcenter()
              }
              dependencies {
                  classpath 'com.android.tools.build:gradle:3.2.0'
              }
          }
          allprojects {
              repositories {
                  google() // and here
                  jcenter()
          }
        
  • Multidex native sekarang diaktifkan secara default. Android Studio versi sebelumnya mengaktifkan multidex native saat men-deploy versi debug sebuah aplikasi ke perangkat yang menjalankan Android API level 21 atau yang lebih tinggi. Sekarang, baik Anda men-deploy ke perangkat atau membuat APK untuk rilis, plugin Android Gradle akan mengaktifkan multidex native untuk semua modul yang menetapkan minSdkVersion=21 atau lebih tinggi.

  • Plugin sekarang memberlakukan versi minimum dari plugin protobuf (0.8.6), plugin Kotlin (1.2.50), dan plugin Crashlytics (1.25.4).

  • Plugin modul fitur, com.android.feature, sekarang memberlakukan penggunaan huruf, angka, dan garis bawah saja saat menentukan nama modul. Misalnya, jika nama modul fitur Anda menyertakan tanda hubung, Anda akan mengalami error build. Perilaku ini sesuai dengan plugin modul fitur dinamis.

Perbaikan bug

3.1.0 (Maret 2018)

Plugin Android versi ini memerlukan:

  • Gradle 4.4 atau yang lebih tinggi. Untuk mempelajari lebih lanjut, baca bagian Mengupdate Gradle.
  • Build Tools 27.0.3 atau yang lebih tinggi. Perlu diingat, Anda tidak perlu lagi menentukan versi untuk build tools menggunakan properti android.buildToolsVersion. Plugin secara default menggunakan versi minimum yang diperlukan.

Compiler DEX baru, D8

Secara default, Android Studio sekarang menggunakan compiler DEX baru bernama D8. Kompilasi DEX adalah proses mengubah bytecode .class menjadi bytecode .dex untuk Android Runtime (atau Dalvik, untuk versi Android yang lebih lama). Dibanding compiler sebelumnya, yang bernama DX, D8 mengompilasi lebih cepat dan menghasilkan file DEX lebih kecil, dengan performa runtime aplikasi yang sama atau bahkan lebih baik.

D8 tidak mengubah alur kerja rutin pengembangan aplikasi Anda. Namun, jika mengalami masalah terkait compiler baru, silakan laporkan bug. Anda dapat untuk sementara menonaktifkan D8 dan menggunakan DX dengan menyertakan baris berikut dalam file gradle.properties project:

android.enableD8=false
    

Untuk project yang menggunakan fitur bahasa Java 8, desugaring inkremental diaktifkan secara default. Anda dapat menonaktifkannya dengan menentukan baris berikut dalam file gradle.properties project:

android.enableIncrementalDesugaring=false.
    

Pratinjau pengguna: Jika Anda sudah menggunakan versi pratinjau D8, ingatlah bahwa D8 sekarang membuat kompilasi berdasarkan library yang disertakan dalam SDK build tools—bukan JDK. Jadi, jika Anda mengakses API yang ada di JDK tetapi tidak ada di library SDK build tools, Anda akan mengalami error kompilasi.

Perubahan perilaku

  • Saat membuat multi-APK yang masing-masing menargetkan ABI berbeda, secara default plugin tidak lagi menghasilkan APK untuk ABI berikut: mips, mips64, dan armeabi.

    Jika ingin membuat APK yang menargetkan ABI ini, Anda harus menggunakan NDK r16b atau yang lebih lama dan menentukan ABI dalam file build.gradle Anda, seperti ditunjukkan di bawah ini:

        splits {
          abi {
              include 'armeabi', 'mips', 'mips64'
              ...
          }
        }
        
  • Saat membuat konfigurasi APK untuk Android Instant App, pemisahan konfigurasi bahasa kini dikelompokkan berdasarkan bahasa root secara default. Misalnya, jika aplikasi Anda menyertakan resource untuk lokal zh-TW atau zh-CN, Gradle akan mengemas resource tersebut pada pemisahan konfigurasi bahasa zh. Anda dapat mengganti perilaku ini dengan menentukan grup Anda sendiri menggunakan properti include, seperti ditunjukkan di bawah ini:

    splits {
            language {
                enable true
                // Each string defines a group of locales that
                // Gradle should package together.
                include "in,id",
                        "iw,he",
                        "fil,tl,tgl",
                        "yue,zh,zh-TW,zh-CN"
            }
        }
        
  • Cache build plugin Android sekarang menghapus entri cache yang berumur lebih dari 30 hari.

  • Meneruskan "auto" ke resConfig tidak lagi otomatis memilih resource string yang akan dikemas dalam APK Anda. Jika Anda terus menggunakan "auto", plugin akan mengemas semua resource string yang disediakan oleh aplikasi Anda dan dependensinya. Jadi, sebaiknya tentukan setiap lokal yang Anda ingin dikemas oleh plugin ke dalam APK Anda.

  • Karena modul lokal tidak dapat bergantung pada APK pengujian aplikasi Anda, menambahkan dependensi ke pengujian terinstrumentasi menggunakan konfigurasi androidTestApi, bukan androidTestImplementation, akan menyebabkan Gradle mengeluarkan peringatan berikut:

      WARNING: Configuration 'androidTestApi' is obsolete
          and has been replaced with 'androidTestImplementation'
        

Perbaikan

  • Memperbaiki masalah saat Android Studio tidak mengenali dependensi pada build gabungan.
  • Memperbaiki masalah saat mengalami error sinkronisasi project ketika memuat plugin Android berkali-kali dalam satu build–misalnya, saat beberapa subproject masing-masing menyertakan plugin Android pada classpath buildscript-nya.

3.0.0 (Oktober 2017)

Plugin Android Gradle 3.0.0 mencakup berbagai perubahan yang ditujukan untuk mengatasi masalah performa pada project berskala besar.

Misalnya, pada project sample skeleton dengan ~130 modul dan sejumlah besar dependensi eksternal (tetapi tanpa kode atau resource), Anda dapat menikmati peningkatan performa yang serupa dengan berikut ini:

Versi plugin Android + versi Gradle Plugin Android 2.2.0 + Gradle 2.14.1 Plugin Android 2.3.0 + Gradle 3.3 Plugin Android 3.0.0 + Gradle 4.1
Konfigurasi (misalnya, menjalankan ./gradlew --help ) ~2 mnt ~9 d ~2,5 d
Perubahan Java 1-line (perubahan implementasi) ~2 mnt 15 d ~29 d ~6,4 d

Beberapa perubahan ini merusak build yang ada. Jadi, sebaiknya pertimbangkan untuk memigrasikan project Anda sebelum menggunakan plugin baru ini.

Jika tidak merasakan peningkatan performa seperti yang dijelaskan di atas, laporkan bug dan sertakan rekaman aktivitas build menggunakan Gradle Profiler.

Plugin Android versi ini memerlukan:

  • Gradle 4.1 atau yang lebih tinggi. Untuk mempelajari lebih lanjut, baca bagian Mengupdate Gradle.
  • Build Tools 26.0.2 atau yang lebih tinggi. Dengan update ini, Anda tidak perlu lagi menentukan versi untuk build tools—plugin menggunakan versi minimum yang diperlukan secara default. Jadi, sekarang Anda dapat menghapus properti android.buildToolsVersion.

3.0.1 (November 2017)

Ini merupakan update minor untuk Android Studio 3.0.1, dan menyertakan perbaikan bug umum dan peningkatan performa.

Pengoptimalan

  • Paralelisme yang lebih baik untuk project multi-modul melalui grafik tugas yang mendetail.
  • Saat mengubah dependensi, Gradle melakukan build lebih cepat dengan tidak mengompilasi ulang modul yang tidak memiliki akses ke API dependensi tersebut. Sebaiknya Anda membatasi dependensi mana yang membocorkan API-nya ke modul lain menggunakan konfigurasi dependensi baru Gradle: implementation, api, compileOnly, dan runtimeOnly.
  • Peningkatan kecepatan build inkremental karena dexing per class. Setiap class sekarang dikompilasi ke dalam beberapa file DEX terpisah, dan hanya class yang dimodifikasi yang akan mengalami dexing ulang. Kecepatan build juga akan meningkat untuk aplikasi yang menetapkan minSdkVersion ke 20 atau yang lebih rendah, dan menggunakan multi-dex lama.
  • Peningkatan kecepatan build dengan mengoptimalkan penggunaan output yang di-cache untuk tugas-tugas tertentu. Untuk mendapatkan manfaat dari pengoptimalan ini, Anda perlu mengaktifkan cache build Gradle terlebih dahulu.
  • Peningkatan pemrosesan resource inkremental menggunakan AAPT2, yang kini diaktifkan secara default. Jika mengalami masalah saat menggunakan AAPT2, silakan laporkan bug. Anda juga dapat menonaktifkan AAPT2 dengan menetapkan android.enableAapt2=false dalam file gradle.properties dan memulai ulang daemon Gradle dengan menjalankan ./gradlew --stop dari command line.

Fitur baru

  • Pengelolaan dependensi berdasarkan varian. Saat membuat varian tertentu dari sebuah modul, sekarang plugin akan otomatis mencocokkan varian dependensi modul library lokal dengan varian modul yang Anda buat.
  • Menyertakan plugin modul Feature baru untuk mendukung Android Instant Apps dan Android Instant Apps SDK (yang dapat Anda download menggunakan SDK Manager). Untuk mempelajari lebih lanjut cara membuat modul Feature dengan plugin baru ini, baca Struktur aplikasi instan dengan multi-fitur.
  • Dukungan bawaan untuk penggunaan fitur bahasa Java 8 dan library Java 8 tertentu. Jack sekarang sudah tidak lagi digunakan dan diperlukan, terlebih dahulu Anda harus menonaktifkan Jack untuk menggunakan dukungan Java 8 yang telah disempurnakan dan tertanam dalam toolchain default. Untuk informasi selengkapnya, baca Menggunakan fitur bahasa Java 8.
  • Menambahkan dukungan untuk menjalankan pengujian dengan Android Test Orchestrator, yang memungkinkan Anda menjalankan setiap pengujian aplikasi di dalam pemanggilan Instrumentation-nya sendiri. Karena setiap pengujian berjalan dalam instance Instrumentation-nya sendiri, status apa pun yang dibagikan antar-pengujian tidak terakumulasi pada CPU atau memori perangkat Anda. Dan, meskipun satu pengujian mengalami error, hanya instance Instrumentation-nya itu saja yang akan dikeluarkan, sehingga pengujian lainnya akan tetap berjalan.
    • Menambahkan testOptions.execution untuk menentukan apakah akan menggunakan orkestrasi pengujian di perangkat atau tidak. Jika ingin menggunakan Android Test Orchestrator, Anda perlu menentukan ANDROID_TEST_ORCHESTRATOR, seperti ditunjukkan di bawah ini. Secara default, properti ini ditetapkan ke HOST, yang menonaktifkan orkestrasi di perangkat dan merupakan metode standar untuk menjalankan pengujian.
    android {
      testOptions {
        execution 'ANDROID_TEST_ORCHESTRATOR'
      }
    }
    
  • Konfigurasi dependensi androidTestUtil yang baru memungkinkan Anda menginstal APK helper pengujian lain sebelum menjalankan pengujian instrumentasi, seperti Android Test Orchestrator:
    dependencies {
      androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
      ...
    }
    
  • Menambahkan testOptions.unitTests.includeAndroidResources untuk mendukung pengujian unit yang memerlukan resource Android, seperti Roboelectric. Jika Anda menetapkan properti ini ke true, plugin akan melakukan penggabungan resource, aset, dan manifes sebelum menjalankan pengujian unit. Pengujian Anda selanjutnya dapat memeriksa com/android/tools/test_config.properties pada classpath untuk kunci berikut:
    • android_merged_assets: jalur absolut ke direktori aset gabungan.

      Catatan: Untuk modul library, aset gabungan tidak memuat aset dependensi (lihat masalah #65550419).

    • android_merged_manifest: jalur absolut ke file manifes gabungan.
    • android_merged_resources: jalur absolut ke direktori resource gabungan, yang memuat semua resource dari modul ini dan semua dependensinya.
    • android_custom_package: nama paket class R akhir. Jika Anda mengubah ID aplikasi secara dinamis, nama paket ini mungkin tidak cocok dengan atribut package dalam manifes aplikasi.
  • Dukungan untuk font sebagai resource (yang merupakan fitur baru yang diperkenalkan di Android 8.0 (API level 26)).
  • Dukungan untuk APK khusus bahasa dengan Android Instant Apps SDK 1.1 dan yang lebih tinggi. Untuk informasi selengkapnya, lihat Mengonfigurasi build untuk pemisahan murni.
  • Sekarang Anda dapat mengubah direktori output untuk project build native eksternal Anda, seperti yang ditunjukkan di bawah ini:
    android {
        ...
        externalNativeBuild {
            // For ndk-build, instead use the ndkBuild block.
            cmake {
                ...
                // Specifies a relative path for outputs from external native
                // builds. You can specify any path that's not a subdirectory
                // of your project's temporary build/ directory.
                buildStagingDirectory "./outputs/cmake"
            }
        }
    }
    
  • Sekarang Anda dapat menggunakan CMake 3.7 atau yang lebih tinggi saat membuat project native dari Android Studio.
  • Konfigurasi dependensi lintChecks baru memungkinkan Anda membuat JAR yang menentukan aturan lint kustom, dan mengemasnya ke dalam project AAR dan APK Anda. Aturan lint kustom Anda harus termasuk dalam project terpisah yang meng-output JAR tunggal dan hanya mencakup dependensi compileOnly. Modul aplikasi dan library lainnya selanjutnya dapat bergantung pada project lint Anda menggunakan konfigurasi lintChecks:
    dependencies {
        // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
        // and package it with your module. If the module is an Android library,
        // other projects that depend on it automatically use the lint checks.
        // If the module is an app, lint includes these rules when analyzing the app.
        lintChecks project(':lint-checks')
    }
    

Perubahan perilaku

  • Plugin Android 3.0.0 menghapus API tertentu, dan build Anda akan rusak jika menggunakan API tersebut. Misalnya, Anda tidak dapat lagi menggunakan Variants API untuk mengakses objek outputFile() atau menggunakan processManifest.manifestOutputFile() untuk mendapatkan file manifes untuk setiap varian. Untuk mempelajari lebih lanjut, baca Perubahan API.
  • Anda tidak perlu lagi menentukan versi untuk build tools (jadi, sekarang Anda dapat menghapus properti android.buildToolsVersion). Secara default, plugin otomatis menggunakan versi build tools minimum yang diperlukan untuk versi plugin Android yang Anda gunakan.
  • Sekarang Anda mengaktifkan pemrosesan PNG dalam blok buildTypes, seperti ditunjukkan di bawah. Pemrosesan PNG diaktifkan secara default untuk semua build kecuali build debug karena build tersebut meningkatkan waktu build untuk project yang mencantumkan banyak file PNG. Jadi, guna meningkatkan waktu build untuk jenis build yang lain, sebaiknya Anda menonaktifkan pemrosesan PNG atau mengonversi gambar menjadi WebP.
    android {
      buildTypes {
        release {
          // Disables PNG crunching for the release build type.
          crunchPngs false
        }
      }
    }
    
  • Plugin Android sekarang otomatis membuat target executable yang Anda konfigurasi di project CMake eksternal.
  • Sekarang Anda harus menambahkan pemroses anotasi ke classpath pemroses menggunakan konfigurasi dependensi annotationProcessor.
  • Penggunaan ndkCompile yang telah dihentikan kini semakin dibatasi. Sebagai gantinya, beralihlah ke CMake atau ndk-build untuk mengompilasi kode native yang ingin Anda kemas ke dalam APK. Untuk mempelajari lebih lanjut, baca Beralih dari ndkcompile.

2.3.0 (Februari 2017)

2.3.3 (Juni 2017)

Ini adalah update minor yang menambahkan kompatibilitas dengan Android Studio 2.3.3.

2.3.2 (Mei 2017)

Ini adalah update minor yang menambahkan kompatibilitas dengan Android Studio 2.3.2.

2.3.1 (April 2017)

Ini adalah update minor untuk plugin Android 2.3.0 yang memperbaiki masalah di mana beberapa perangkat Android fisik tidak berfungsi optimal dengan Instant Run (lihat Masalah #235879).

Dependensi:
Baru:
  • Menggunakan Gradle 3.3, yang menyertakan penyempurnaan performa dan fitur baru. Untuk detail selengkapnya, lihat Catatan rilis Gradle.
  • Cache build: menyimpan output tertentu yang dihasilkan plugin Android saat membuat project (seperti AAR yang tidak dikemas dan dependensi remote pre-dexed). Clean build Anda jauh lebih cepat saat menggunakan cache karena sistem build hanya dapat menggunakan kembali file yang tersimpan dalam cache pada waktu build berikutnya, daripada membuatnya kembali. Project yang menggunakan Android plugin 2.3.0 dan yang lebih tinggi menggunakan build cache secara default. Untuk mempelajari lebih lanjut, baca Meningkatkan Kecepatan Build dengan Cache Build.
    • Mencakup tugas cleanBuildCache yang menghapus cache build.
    • Jika Anda menggunakan cache build versi eksperimental (yang disertakan dalam plugin versi lama), Anda harus mengupdate plugin ke versi terbaru.
Perubahan:

2.2.0 (September 2016)

Dependensi:
Baru:
  • Menggunakan Gradle 2.14.1, yang mencakup peningkatan performa dan fitur baru, serta memperbaiki kerentanan keamanan yang memungkinkan eskalasi akses lokal saat menggunakan daemon Gradle. Lihat Catatan rilis Gradle untuk detail selengkapnya.
  • Menggunakan externalNativeBuild {} DSL, sekarang Gradle memungkinkan Anda menaut ke sumber native dan mengompilasi library native menggunakan CMake atau ndk-build. Setelah membuat library native, Gradle akan mengemasnya ke dalam APK Anda. Untuk mempelajari lebih lanjut cara menggunakan CMake dan ndk-build dengan Gradle, baca Menambahkan C dan C ++ Code ke Project Anda.
  • Jika Anda menjalankan build dari command line, sekarang Gradle akan berupaya mendownload otomatis komponen SDK atau update yang hilang yang menjadi dependensi project Anda. Untuk mempelajari lebih lanjut, baca Mendownload otomatis paket yang hilang dengan Gradle.
  • Fitur caching eksperimental baru memungkinkan Gradle mempercepat waktu build dengan melakukan pre-dexing, menyimpan, dan menggunakan kembali library versi pre-dexed. Untuk mempelajari lebih lanjut cara menggunakan fitur eksperimental ini, baca panduan Cache Build.
  • Meningkatkan performa build dengan mengadopsi pipeline pengemasan default baru yang menangani pembuatan zip, penandatanganan, dan zipaligning dalam satu tugas. Anda dapat kembali ke alat pengemasan lama dengan menambahkan android.useOldPackaging=true ke file gradle.properties Anda. Saat menggunakan alat pengemasan baru, tugas zipalignDebug tidak tersedia. Namun, Anda dapat membuatnya sendiri dengan memanggil metode createZipAlignTask(String taskName, File inputFile, File outputFile).
  • Penandatanganan APK kini menggunakan APK Signature Scheme v2 selain penandatanganan JAR tradisional. Semua platform Android akan menerima APK yang dihasilkan. Setiap modifikasi pada APK setelah penandatanganan akan menjadikan tanda tangan v2 tidak valid dan mencegah penginstalan pada perangkat. Untuk menonaktifkan fitur ini, tambahkan kode berikut ke file build.gradle level modul Anda:
        android {
          ...
          signingConfigs {
            config {
              ...
              v2SigningEnabled false
            }
          }
        }
        
  • Untuk build multidex, sekarang Anda dapat menggunakan aturan ProGuard untuk menentukan class mana yang harus dikompilasi Gradle ke dalam file DEX utama aplikasi Anda. Karena sistem Android memuat file DEX utama terlebih dahulu saat memulai aplikasi, Anda dapat memprioritaskan class tertentu selama proses startup dengan mengompilasinya ke dalam file DEX utama. Setelah membuat file konfigurasi ProGuard khusus untuk file DEX utama, teruskan jalur file konfigurasi ini ke Gradle menggunakan buildTypes.multiDexKeepProguard. Penggunaan DSL ini berbeda dengan penggunaan buildTypes.proguardFiles, yang menyediakan aturan ProGuard umum untuk aplikasi Anda dan tidak menentukan class untuk file DEX utama.
  • Menambahkan dukungan untuk tanda android:extractNativeLibs, yang dapat mengurangi ukuran aplikasi Anda saat diinstal di perangkat. Jika Anda menetapkan tanda ini ke false dalam elemen <application> manifes aplikasi Anda, Gradle akan mengemas versi library native yang tidak terkompresi dan telah diselaraskan ke dalam APK Anda. Akibatnya, PackageManager tidak akan menyalin library native dari APK ke sistem file perangkat selama penginstalan dan memberikan manfaat tambahan berupa ukuran update delta yang lebih kecil untuk aplikasi Anda.
  • Sekarang Anda dapat menetapkan versionNameSuffix dan applicationIdSuffix untuk ragam produk. (Masalah 59614)
Perubahan:
  • getDefaultProguardFile sekarang menampilkan file ProGuard default yang disediakan oleh plugin Android untuk Gradle dan tidak lagi menggunakan file ProGuard yang ada di Android SDK.
  • Peningkatan performa dan fitur kompiler Jack:
    • Sekarang Jack mendukung cakupan pengujian Jacoco jika testCoverageEnabled ditetapkan ke true.
    • Peningkatan dukungan untuk pemroses anotasi. Pemroses anotasi di classpath Anda, seperti dependensi compile, otomatis diterapkan ke build Anda. Anda juga dapat menentukan pemroses anotasi dalam argumen build dan pass menggunakan javaCompileOptions.annotationProcessorOptions {} DSL dalam file build.gradle level modul:
          android {
            ...
            defaultConfig {
              ...
              javaCompileOptions {
                annotationProcessorOptions {
                  className 'com.example.MyProcessor'
                  // Arguments are optional.
                  arguments = [ foo : 'bar' ]
                }
              }
            }
          }
          

      Jika ingin menerapkan pemroses anotasi selama proses kompilasi tetapi tidak ingin menyertakannya ke dalam APK, gunakan lingkup dependensi annotationProcessor:

          dependencies {
              compile 'com.google.dagger:dagger:2.0'
              annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
             // or use buildVariantAnnotationProcessor to target a specific build variant
          }
          
    • Anda dapat menetapkan tanda tambahan untuk Jack menggunakan jackOptions.additionalParameters(). Cuplikan kode berikut menetapkan parameter jack.incremental ke true:
          android {
            defaultConfig {
              ...
              jackOptions {
                enabled true
                additionalParameters("jack.incremental" : true)
              }
            }
          }
          

      Untuk daftar parameter yang dapat Anda tetapkan, jalankan perintah berikut dari command line:

          java -jar /build-tools/jack.jar --help-properties
          
    • Secara default, jika ukuran heap daemon Gradle setidaknya 1,5 GB, Jack akan berjalan dalam proses yang sama dengan Gradle. Untuk menyesuaikan ukuran heap daemon, tambahkan baris berikut ke file gradle.properties Anda:
          # This sets the daemon heap size to 1.5GB.
          org.gradle.jvmargs=-Xmx1536M
          

2.1.0 (April 2016)

2.1.3 (Agustus 2016)

Update ini memerlukan Gradle 2.14.1 dan yang lebih tinggi. Gradle 2.14.1 mencakup peningkatan performa, fitur baru, dan perbaikan keamanan penting. Untuk detail selengkapnya, lihat Catatan rilis Gradle.

Dependensi:
Baru:
  • Penambahan dukungan untuk N Developer Preview, JDK 8, dan berbagai fitur bahasa Java 8 yang menggunakan toolchain Jack. Untuk mengetahui lebih lanjut, baca Panduan N Preview.

    Catatan: Instant Run saat ini tidak berfungsi dengan Jack dan akan dinonaktifkan jika toolchain baru digunakan. Anda hanya perlu menggunakan Jack jika mengembangkan aplikasi untuk N Preview dan ingin menggunakan fitur bahasa Java 8 yang didukung.

  • Penambahan dukungan default untuk kompilasi Java inkremental guna mengurangi waktu kompilasi selama pengembangan. Ini dilakukan dengan hanya mengompilasi ulang bagian-bagian kode sumber yang telah berubah atau perlu dikompilasi ulang. Untuk menonaktifkan fitur ini, tambahkan kode berikut ke file build.gradle level modul:
        android {
          ...
          compileOptions {
            incremental false
          }
        }
        
  • Penambahan dukungan untuk dexing-in-process yang menjalankan dexing pada proses build, bukan dalam proses VM eksternal terpisah. Cara ini tidak hanya mempercepat proses build inkremental, tetapi juga build penuh. Fitur ini diaktifkan secara default untuk project yang telah menetapkan ukuran heap maksimum daemon Gradle ke setidaknya 2048 MB. Anda dapat melakukannya dengan menyertakan baris berikut ke dalam file gradle.properties project:

        org.gradle.jvmargs = -Xmx2048m
        

    Jika Anda telah menentukan nilai untuk javaMaxHeapSize dalam file build.gradle level modul, Anda harus menetapkan org.gradle.jvmargs ke nilai javaMaxHeapSize + 1024 MB. Misalnya, jika Anda telah menetapkan javaMaxHeapSize ke "2048m", Anda harus menambahkan berikut ini ke file gradle.properties project:

        org.gradle.jvmargs = -Xmx3072m
        

    Untuk menonaktifkan dexing-in-process, tambahkan kode berikut ke file build.gradle level modul:

        android {
          ...
          dexOptions {
              dexInProcess false
          }
        }
        

2.0.0 (April 2016)

Dependensi:
Baru:
  • Mengaktifkan Instant Run dengan mendukung injeksi bytecode, dan mengirim update kode dan resource ke aplikasi yang berjalan di emulator atau perangkat fisik.
  • Penambahan dukungan untuk build inkremental, bahkan saat aplikasi tidak berjalan. Waktu build penuh dipersingkat dengan mengirim perubahan inkremental melalui Android Debug Bridge ke perangkat yang terhubung.
  • Penambahan maxProcessCount untuk mengontrol jumlah proses dex slave yang dapat dibuat secara serentak. Kode berikut, dalam file build.gradle level modul, menetapkan jumlah maksimum proses serentak ke 4:
        android {
          ...
          dexOptions {
            maxProcessCount = 4 // this is the default value
          }
        }
        
  • Penambahan penyingkat kode eksperimental untuk mendukung pre-dexing dan mengurangi re-dexing dependensi, yang tidak didukung dengan Proguard. Pendekatan ini meningkatkan kecepatan build untuk varian build debug Anda. Karena penyingkat kode eksperimental ini tidak mendukung pengoptimalan dan obfuscation, sebaiknya Anda mengaktifkan Proguard untuk versi rilis. Untuk mengaktifkan penyingkat kode eksperimental untuk build debug, tambahkan kode berikut ke file build.gradle level modul:
        android {
          ...
          buildTypes {
            debug {
              minifyEnabled true
              useProguard false
            }
            release {
              minifyEnabled true
              useProguard true // this is a default setting
            }
          }
        }
        
  • Penambahan dukungan logging dan peningkatan performa untuk penyingkat kode resource. Penyingkat kode resource kini mencatat semua operasinya ke dalam file resources.txt yang berada di folder yang sama dengan file log Proguard.
Perilaku yang berubah:
  • Jika minSdkVersion ditetapkan ke 18 atau lebih tinggi, penandatanganan APK akan menggunakan SHA256.
  • Kunci DSA dan ECDSA kini dapat menandatangani paket APK.

    Catatan: Penyedia Android keystore tidak lagi mendukung kunci DSA pada Android 6.0 (API level 23) dan yang lebih tinggi.

Perbaikan masalah:
  • Memperbaiki masalah yang menyebabkan dependensi AAR duplikat dalam pengujian dan konfigurasi build utama.

Rilis sebelumnya