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 konusuna bakın.
SDK Derleme Araçları 30.0.2 30.0.2 SDK Derleme Araçlarını yükleyin veya yapılandırın.
450 Yok 21.4.7075529 Farklı bir NDK sürümü 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

Sürüm 4.2'den itibaren AGP, varsayılan olarak Java 8 dil düzeyini kullanacaktır. Java 8; lambda ifadeleri, yöntem referansları ve statik arayüz yöntemleri gibi yeni birçok dil özelliğine 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 eklenti 4.2 aracındaki yeni bir JVM kaynak derleyicisi, AAPT2 kaynak derleyicisinin bazı kısımlarının yerini alarak özellikle Windows makinelerinde derleme performansını potansiyel olarak artırır. Yeni JVM kaynak derleyicisi varsayılan olarak etkindir.

v3 ve v4 imzalama artık destekleniyor

Android Gradle Plugin 4.2 artık APK v3 ve APK v4 imzalama biçimlerini destekliyor. Derlemenizde bu biçimlerden birini veya her 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üklemesini kullanarak büyük APK'ları hızlı bir şekilde dağıtmanızı sağlar. Bu yeni işaret, dağıtım sürecindeki APK imzalama adımını halleder.

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

Artık Android Gradle eklentisinde her varyant için uygulama imzalamayı etkinleştirebilir veya devre dışı bırakabilirsiniz.

Bu örnekte, Kotlin veya Groovy'de onVariants() yöntemi kullanılarak varyant başına uygulama imzalamanın 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ında karmaşayı azaltmak amacıyla CMake ve ndk-build kullanan yerel derlemelerden gelen mesajları filtreleyerek varsayılan olarak yalnızca C/C++ derleyici çıkışını görüntüler. Önceden, oluşturulan her dosya için bir çıktı satırı oluşturuluyordu ve bu da büyük miktarda bilgi amaçlı mesajla sonuçlanıyordu.

Yerel çıkışı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ında ayarlayabilirsiniz.

gradle.properties
android.native.buildOutput=verbose

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

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

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

AGP 4.2'den itibaren, alt projelerdeki Gradle özelliklerini geçersiz kılmak artık mümkün değildir. Diğer bir deyişle, kök proje yerine bir alt projedeki gradle.properties dosyasında bir özellik tanımlarsanız 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 gibi değerleri okur. Uygulama modüllerinde, hem <var>projectDir</var>/gradle.properties hem de <var>projectDir</var>/app/gradle.properties içinde aynı Gradle özelliği varsa <var>projectDir</var>/app/gradle.properties öğesinden alınan değer öncelikli olur.

AGP 4.2'de bu davranış değiştirilmiştir.AGP, alt projelerde (ör.gradle.properties <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

Gradle oluşturma aracı, Android Studio'da çalışırken Studio'nun paket halinde sunulan JDK'sını kullanır. Önceki sürümlerde, JDK 8 Studio ile paket halinde sunuluyordu. Ancak 4.2 sürümünde JDK 11 artık paket halinde sunulmaktadır. Gradle'ı çalıştırmak için paket halinde sunulan yeni JDK'nın kullanılması, atık toplayıcıdaki değişikliklerden dolayı bazı uyumsuzluklara neden olabilir veya JVM performansını etkileyebilir. 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ı 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'nun kendisini çalıştırmak için kullanılan JDK'yi değiştirmez.

Android Gradle eklentisi (AGP) ile Studio uyumluluğu

Android Studio 4.2, AGP 3.1 ve sonraki sürümlerini kullanan 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 konusuna bakın.

Gradle derlemelerini JDK 11 için optimize etme

JDK 11'de paralel çöp toplayıcı, JDK 11'de ise G1 çöp toplayıcı kullanılır. Bu nedenle, JDK 11'e yapılan bu güncelleme JVM çöp toplayıcının varsayılan yapılandırmasını etkiler.

Derleme performansını potansiyel olarak 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 ayarlanmış başka seçenekler varsa 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 bölümüne bakın.

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

minSdk = 28 veya daha yüksek olduğunda AGP artık APK'larda sıkıştırılmamış DEX dosyalarını varsayılan olarak paketler. Bu durum APK boyutunda artışa neden olur, ancak cihazdaki yükleme boyutunun küçülmesine neden olur ve indirme boyutu hemen hemen aynıdır.

AGP'nin, DEX dosyalarını sıkıştırılmış olarak paketlemesini zorunlu kılmak için aşağıdaki kodu build.gradle dosyanıza ekleyebilirsiniz:

android {
    packagingOptions {
        dex {
            useLegacyPackaging true
        }
    }
}

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

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

android {
    packagingOptions {
        jniLibs {
            useLegacyPackaging true
        }
    }
}

useLegacyPackaging işareti, manifest özelliğinin yerini extractNativeLibs alıyor. Daha fazla bilgi için Varsayılan olarak sıkıştırılmamış şekilde paketlenmiş yerel kitaplıklar sürüm notuna bakın.