Plugin Android Gradle 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 DSL externalNativeBuild {}, sekarang Gradle memungkinkan Anda menautkan ke sumber native dan mengompilasi library native menggunakan CMake atau ndk-build. Setelah mem-build library native, Gradle akan memaketkannya ke dalam APK. Untuk mempelajari lebih lanjut cara menggunakan CMake dan ndk-build dengan Gradle, baca Menambahkan Kode C dan C++ ke Project Anda.
  • Jika menjalankan build dari command line, Gradle akan berupaya mendownload otomatis komponen SDK yang hilang atau update yang menjadi dependensi project Anda. Untuk mempelajari lebih lanjut, baca Mendownload otomatis paket yang tidak ditemukan 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:

    Groovy

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("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, Gradle akan memaketkan versi library native yang tidak terkompresi dan telah diselaraskan ke dalam APK. 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 kualitas 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:

      Groovy

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className = "com.example.MyProcessor"
              // Arguments are optional.
              arguments(mapOf(foo to "bar"))
            }
          }
        }
      }
          

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

      Groovy

      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
      }
          

      Kotlin

      dependencies {
          implementation("com.google.dagger:dagger:2.0")
          annotationProcessor("com.google.dagger:dagger-compiler:2.0")
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          
    • 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