Android Gradle Eklentisi 4.2.0 (Mart 2021)

Uyumluluk

Minimum sürüm Varsayılan sürüm Notlar
Gradle 6.7.1 Yok Daha fazla bilgi edinmek için Gradle'ı güncelleme bölümünü inceleyin.
SDK Derleme Araçları 30.0.2 30.0.2 SDK Derleme Araçları'nı yükleyin veya yapılandırın.
NDK Yok 21.4.7075529 NDK'nın farklı bir sürümünü yükleyin veya yapılandırın.

Yeni özellikler

Android Gradle eklentisinin bu sürümü aşağıdaki yeni özellikleri içerir.

Varsayılan olarak Java dili sürüm 8

4.2 sürümünden itibaren AGP, varsayılan olarak Java 8 dil düzeyini kullanır. Java 8; lambda ifadeleri, yöntem referansları ve statik arayüz yöntemleri dahil olmak üzere daha yeni dil özelliklerine erişim sağlar. Desteklenen özelliklerin tam listesi için Java 8 belgelerine bakın.

Eski davranışı korumak için modül düzeyindeki build.gradle.kts veya build.gradle dosyanızda Java 7'yi açıkça belirtin:

// build.gradle
android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}
// build.gradle.kts
android {
  ...
  compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

Yeni JVM kaynak derleyicisi

Android Gradle eklentisi 4.2 aracındaki yeni bir JVM kaynak derleyicisi, AAPT2 kaynak derleyicisinin bazı bölümlerinin yerini alarak özellikle Windows makinelerde derleme performansını iyileştirebilir. Yeni JVM kaynak derleyicisi varsayılan olarak etkindir.

v3 ve v4 imzalama artık destekleniyor

Android Gradle eklentisi 4.2 artık APK v3 ve APK v4 imzalama biçimlerini destekliyor. Derlemenizde bu biçimlerden birini veya ikisini birden etkinleştirmek için modül düzeyindeki build.gradle veya build.gradle.kts dosyanıza aşağıdaki özellikleri ekleyin:

// build.gradle
android {
  ...
  signingConfigs {
    config {
        ...
        enableV3Signing true
        enableV4Signing true
    }
  }
}
// build.gradle.kts
android {
  ...
  signingConfigs {
      config {
          ...
          enableV3Signing = true
          enableV4Signing = true
      }
  }
}

APK v4 imzalama, Android 11'de ADB Artımlı APK yükleme özelliğini kullanarak büyük APK'ları hızlı bir şekilde dağıtmanıza olanak tanır. Bu yeni işaret, dağıtım sürecindeki APK imzalama adımını gerçekleştirir.

Uygulama imzalamayı varyant bazında yapılandırma

Artık Android Gradle eklentisinde varyant başına uygulama imzalamayı etkinleştirebilir veya devre dışı bırakabilirsiniz.

Bu örnekte, Kotlin veya Groovy'de onVariants() yöntemini kullanarak her varyant için uygulama imzalamanın nasıl ayarlanacağı gösterilmektedir:

androidComponents {
    onVariants(selector().withName("fooDebug")) {
        signingConfig {
            enableV1Signing false
            enableV2Signing true
        }
    }
}

Yeni Gradle özelliği: android.native.buildOutput

AGP 4.2, derleme çıkışındaki karmaşayı azaltmak için CMake ve ndk-build kullanan C/C++ derlemelerinden gelen mesajları filtreleyerek varsayılan olarak yalnızca C/C++ derleyici çıkışını gösterir. Daha önce, oluşturulan her dosya için bir çıkış satırı oluşturuluyordu. Bu da çok sayıda bilgilendirme mesajına neden oluyordu.

C/C++ çıkışının tamamını görmek istiyorsanız yeni Gradle özelliğini android.native.buildOutput, verbose olarak ayarlayın.

Bu özelliği gradle.properties dosyasında veya komut satırı üzerinden ayarlayabilirsiniz.

gradle.properties
android.native.buildOutput=verbose

Komut satırı
-Pandroid.native.buildOutput=verbose

Bu özelliğin varsayılan değeri quiet şeklindedir.

gradle.properties dosyaları için davranış değişikliği

AGP 4.2'den itibaren, alt projelerden Gradle özelliklerini geçersiz kılmak artık mümkün değildir. Diğer bir deyişle, bir özelliği kök proje yerine alt projedeki bir gradle.properties dosyasında bildirirseniz bu özellik yoksayılır.

Örneğin, önceki sürümlerde AGP; <var>projectDir</var>/gradle.properties, <var>projectDir</var>/app/gradle.properties, <var>projectDir</var>/library/gradle.properties vb. dosyalardaki değerleri okurdu. Uygulama modülleri için aynı Gradle özelliği hem <var>projectDir</var>/gradle.properties hem de <var>projectDir</var>/app/gradle.properties dosyasında mevcutsa <var>projectDir</var>/app/gradle.properties dosyasındaki değer öncelikli olurdu.

AGP 4.2'de bu davranış değiştirildi ve AGP, alt projelerdeki (ör. <var>projectDir</var>/app/gradle.properties) gradle.properties değerlerini yüklemeyecek. Bu değişiklik, yeni Gradle davranışını yansıtır ve yapılandırma önbelleğe almayı destekler.

gradle.properties dosyalarında değer ayarlama hakkında daha fazla bilgi için Gradle belgelerine bakın.

Gradle uyumluluğu ve yapılandırma değişiklikleri

Android Studio'da çalışırken Gradle derleme aracı, Studio'nun paket halinde sunulan JDK'sını kullanır. Önceki sürümlerde JDK 8, Studio ile birlikte sunuluyordu. Ancak 4.2 sürümünde JDK 11 paket olarak sunulmaktadır. Gradle'ı çalıştırmak için yeni paketlenmiş JDK'yi kullanırken, çöp toplayıcıda yapılan değişiklikler nedeniyle bazı uyumsuzluklar yaşanabilir veya JVM performansı etkilenebilir. Bu sorunlar aşağıda açıklanmıştır.

Not: Gradle'ı JDK 11 ile çalıştırmanızı öneririz ancak Gradle'ı çalıştırmak için kullanılan JDK'yi Proje Yapısı iletişim kutusundan değiştirebilirsiniz. Bu ayarın değiştirilmesi yalnızca Gradle'ı çalıştırmak için kullanılan JDK'yi değiştirir, Studio'yu çalıştırmak için kullanılan JDK'yi değiştirmez.

Studio'nun Android Gradle eklentisi (AGP) ile uyumluluğu

Android Studio 4.2, AGP'nin Gradle 4.8.1 ve sonraki sürümlerini çalıştırması koşuluyla AGP 3.1 ve sonraki sürümleri kullanan projeleri açabilir. Gradle uyumluluğu hakkında daha fazla bilgi için Gradle'ı güncelleme başlıklı makaleyi inceleyin.

Gradle derlemelerini JDK 11 için optimize etme

JDK 11'e yapılan bu güncelleme, JVM çöp toplayıcısının varsayılan yapılandırmasını etkiler. Bunun nedeni, JDK 8'in paralel çöp toplayıcıyı, JDK 11'in ise G1 çöp toplayıcısını kullanmasıdır.

Derleme performansını artırmak için Gradle derlemelerinizi paralel çöp toplayıcı ile test etmenizi öneririz. gradle.properties içinde aşağıdakileri ayarlayın:

org.gradle.jvmargs=-XX:+UseParallelGC

Bu alanda önceden ayarlanmış başka seçenekler varsa yeni bir seçenek ekleyin:

org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC

Farklı yapılandırmalarla derleme hızını ölçmek için Derlemenizin profilini oluşturma başlıklı makaleyi inceleyin.

minSdk = 28 veya daha yüksek olduğunda APK'larda sıkıştırılmamış DEX dosyaları

AGP artık minSdk = 28 veya daha yüksek olduğunda DEX dosyalarını varsayılan olarak APK'larda sıkıştırılmamış şekilde paketler. Bu, APK boyutunun artmasına neden olur ancak cihazdaki yükleme boyutunun küçülmesini sağlar ve indirme boyutu yaklaşık olarak aynı kalır.

AGP'yi DEX dosyalarını sıkıştırılmış olarak paketlemeye zorlamak için build.gradle dosyanıza aşağıdakileri ekleyebilirsiniz:

android {
    packagingOptions {
        dex {
            useLegacyPackaging true
        }
    }
}

Sıkıştırılmış C/C++ kitaplıklarını paketlemek için DSL'yi kullanma

C/C++ kitaplıklarını sıkıştırılmamış biçimde paketlemenizi öneririz. Bu sayede, uygulamanızın yükleme ve indirme boyutu küçülür ve kullanıcılarınız için uygulama yükleme süresi kısalır. Ancak Android Gradle eklentisinin, uygulamanızı derlerken sıkıştırılmış C/C++ kitaplıklarını paketlemesini istiyorsanız uygulamanızın build.gradle dosyasında useLegacyPackaging değerini true olarak ayarlayın:

android {
    packagingOptions {
        jniLibs {
            useLegacyPackaging true
        }
    }
}

useLegacyPackaging işareti, extractNativeLibs manifest özelliğinin yerini alır. Daha fazla bilgi için Yerel kitaplıklar varsayılan olarak sıkıştırılmadan paketlenir sürüm notuna bakın.