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 başlıklı makaleyi inceleyin.
SDK Build Tools 30.0.2 30.0.2 SDK oluşturma 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 dilinin 8. sürümü

AGP, 4.2 sürümünden itibaren varsayılan olarak Java 8 dil düzeyini kullanır. Java 8; lambda ifadeleri, yöntem referansları ve statik arayüz yöntemleri gibi bir dizi yeni dil özelliğine erişim sağlar. Desteklenen özelliklerin tam listesi için Java 8 dokümanlarına 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'deki yeni JVM kaynak derleyici, AAPT2 kaynak derleyicinin bölümlerinin yerini alarak özellikle Windows makinelerde derleme performansını artırabilir. 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 imza biçimlerini destekliyor. Bu biçimlerden birini veya ikisini derlemenizde 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'yi 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ı ele alır.

Varyant başına uygulama imzalamayı yapılandırma

Artık Android Gradle eklentisinde uygulama imzalamayı etkinleştirmek veya devre dışı bırakmak mümkün.

Bu örnekte, Kotlin veya Groovy'de onVariants() yöntemini kullanarak uygulama imzalama işleminin varyant başına nasıl ayarlanacağı gösterilmektedir:

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

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

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

Yerel çıktının tamamını görmek istiyorsanız yeni Gradle özelliğini android.native.buildOutput olarak ayarlayın.verbose

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'dır.

gradle.properties dosyalarıyla ilgili davranış değişikliği

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

Örneğin, önceki sürümlerde AGP, değerleri <var>projectDir</var>/gradle.properties, <var>projectDir</var>/app/gradle.properties, <var>projectDir</var>/library/gradle.properties vb. öğelerden okuyordu. Uygulama modüllerinde, aynı Gradle özelliği hem <var>projectDir</var>/gradle.properties hem de <var>projectDir</var>/app/gradle.properties içinde mevcutsa <var>projectDir</var>/app/gradle.properties'deki değer öncelikli oluyordu.

AGP 4.2'de bu davranış değiştirildi ve AGP, alt projelerdeki gradle.properties değerlerini yüklemiyor (ör. <var>projectDir</var>/app/gradle.properties). 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ıştırıldığında Gradle derleme aracı, Studio'nun paketlenmiş JDK'sını kullanır. Önceki sürümlerde JDK 8, Studio ile birlikte paketleniyordu. Ancak 4.2 sürümünde artık JDK 11 paketlenmiştir. Gradle'ı çalıştırmak için yeni paketlenmiş JDK'yı kullanırken çöp toplayıcıda yapılan değişiklikler nedeniyle bazı uyumsuzluklar oluşabilir veya JVM performansı etkilenebilir. Bu sorunlar aşağıda açıklanmıştır.

Not: Gradle'ı JDK 11 ile çalıştırmanızı önersek de Gradle'ı çalıştırmak için kullanılan JDK'yı Project Structure (Proje Yapısı) iletişim kutusunda değiştirebilirsiniz. Bu ayarın değiştirilmesi yalnızca Gradle'ı çalıştırmak için kullanılan JDK'yı değiştirir ve Studio'yu çalıştırmak için kullanılan JDK'yı değiştirmez.

Android Gradle eklentisi (AGP) ile Studio uyumluluğu

Android Studio 4.2, AGP 3.1 ve sonraki sürümlerin kullanıldığı projeleri açabilir. Bunun için AGP'nin Gradle 4.8.1 ve sonraki sürümlerini çalıştırması gerekir. 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 yönelik 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ıyı kullanmasıdır.

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

org.gradle.jvmargs=-XX:+UseParallelGC

Bu alanda başka seçenekler ayarlanmışsa yeni bir seçenek ekleyin:

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

Derleme hızını farklı yapılandırmalarla ö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 APK'lardaki DEX dosyalarını varsayılan olarak sıkıştırılmamış şekilde paketliyor. Bu durum APK boyutunun artmasına neden olur ancak cihazdaki yükleme boyutu küçülür ve indirme boyutu yaklaşık olarak aynı kalır.

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

android {
    packagingOptions {
        dex {
            useLegacyPackaging true
        }
    }
}

Sıkıştırılmış yerel kitaplıkları paketlemek için DSL'yi kullanma

Yerel kitaplıkları sıkıştırılmamış biçimde paketlemenizi öneririz. Bu sayede, kullanıcılarınız için daha küçük bir uygulama yükleme boyutu, daha küçük bir uygulama indirme boyutu ve daha hızlı uygulama yükleme süresi elde edersiniz. Ancak, Android Gradle eklentisinin uygulamanızı oluştururken sıkıştırılmış yerel kitaplıkları paketlemesini istiyorsanız uygulamanızın useLegacyPackaging dosyasında true değerini build.gradle olarak ayarlayın:

android {
    packagingOptions {
        jniLibs {
            useLegacyPackaging true
        }
    }
}

useLegacyPackaging işareti, manifest özelliğinin extractNativeLibs yerini alır. Daha fazla bilgi için Yerel kitaplıklar varsayılan olarak sıkıştırılmamış şekilde paketlenir başlıklı sürüm notunu inceleyin.