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 için Gradle'i güncelleme başlıklı makaleyi inceleyin.
SDK Oluşturma 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

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 dahil olmak üzere bir dizi yeni 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 eklentisi 4.2 aracındaki yeni JVM kaynak derleyicisi, AAPT2 kaynak derleyicisinin bazı bölümlerini değiştirerek özellikle Windows makinelerde derleme performansını iyileştirebilir. Yeni JVM kaynak derleyici varsayılan olarak etkindir.

v3 ve v4 imzalama artık destekleniyor

Android Gradle Eklentisi 4.2 artık APK v3'ü destekliyor ve APK v4 imzalama biçimlerine göz atın. 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 özelliği, ADB aracını kullanarak büyük APK'ları hızlı bir şekilde dağıtmanıza olanak tanır. artımlı APK yüklemesi Android 11. Bu yeni işaret, dağıtımdaki APK imzalama adımını halleder bahsedeceğim.

Uygulama imzalamayı varyant başına yapılandırma

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

Bu örnekte, Kotlin veya Groovy'da onVariants() yöntemi kullanılarak uygulama imzalamanın 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 çıkışındaki dağınıklığı azaltmak için CMake ve ndk-build kullanan yerel derlemelerdeki mesajları filtreler ve varsayılan olarak yalnızca C/C++ derleyici çıkışını gösterir. Önceden, bir çıktı satırı her dosya için ayrı olarak üretildi ve bu da çok miktarda düşünebilirsiniz.

Yerel çıktının tamamını görmek istiyorsanız yeni Gradle mülkü android.native.buildOutputverbose olarak ayarlayın.

Bu özelliği gradle.properties dosyasında veya komut satırından erişebilirsiniz.

gradle.properties
android.native.buildOutput=verbose

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

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

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

AGP 4.2'den itibaren Gradle özelliklerini geçersiz kılmak artık mümkün değildir alt projelerde kullanılabilir. Diğer bir deyişle, gradle.properties dosyası, kök yerine bir alt projede yoksa 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 uygulama modülleri için de aynı Gradle mülkü her iki <var>projectDir</var>/gradle.properties. ve <var>projectDir</var>/app/gradle.properties, değeri <var>projectDir</var>/app/gradle.properties öncelikli hale gelecektir.

AGP 4.2'de bu davranış değiştirilmiştir ve AGP, Alt projelerde gradle.properties (ör. <var>projectDir</var>/app/gradle.properties) bilgileri gösterilir. Bu değişiklik, yeni Gradle davranışı ve özellikleri yapılandırmayı önbelleğe alma

gradle.properties ürününde değer ayarlama hakkında daha fazla bilgi hakkında daha fazla bilgi edinmek için Gradle dokümanları.

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

Gradle derleme aracı, Android Studio'da çalışırken Studio'nun paket halinde sunulan JDK'sini kullanır. Önceki sürümlerde JDK 8, Studio ile birlikte sunuluyordu. Ancak 4.2'de bunun yerine JDK 11 paketlenmiştir. Gradle'i çalıştırmak için yeni paketlenmiş JDK kullanıldığında bu durum bazı uyumsuzluklara neden olabilir veya çöp toplayıcıdaki değişiklikler nedeniyle 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 kutusu. Bu ayarın değiştirilmesi yalnızca Gradle'i çalıştırmak için kullanılan JDK'yi değiştirir ve Studio'yu çalıştırmak için kullanılan JDK'yi değiştirmez.

Studio'nun Android Gradle eklentisiyle (AGP) uyumluluğu

Android Studio 4.2, AGP'de Gradle 4.8.1 ve sonraki sürümlerin çalıştırıldığı durumlarda AGP 3.1 ve sonraki sürümleri kullanan projeleri açabilir. Daha fazla Gradle uyumluluğu hakkında bilgi için bkz. Gradle'ı güncelleyin.

Gradle derlemelerini JDK 11 için optimize etme

JDK 11'e yapılan bu güncelleme, JVM çöp kutusunun varsayılan yapılandırmasını etkiler çünkü JDK 8 paralel çöp toplayıcı kullanırken JDK 11 G1 çöp toplayıcı.

Derleme performansını artırabilmek için Gradle derlemelerinizi test ederek yardımcı olur. gradle.properties içinde şunları ayarlayın:

org.gradle.jvmargs=-XX:+UseParallelGC

Bu alanda halihazırda 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 Derlemenizi profilleme 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 DEX dosyalarını minSdk = 28 veya daha yüksek olabilir. Bu, APK boyutunda artışa neden olur ancak cihazdaki yükleme boyutunu küçültür ve indirme boyutu yaklaşık olarak aynı kalır.

AGP'nin sıkıştırılmış DEX dosyalarını paketlemeye zorlamak için build.gradle dosyanıza eklenecek:

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, uygulama yükleme boyutunun ve uygulama indirme boyutunun küçülmesine ve kullanıcılarınız için uygulama yükleme süresinin kısalmasına neden olur. Ancak Android Gradle eklentisinin, uygulamanızı derleyip sıkıştırılmış yerel kitaplıkları 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 Varsayılan olarak sıkıştırılmamış şekilde paketlenmiş yerel kitaplıklar sürüm notuna bakın.