ปลั๊กอิน Android Gradle 4.2.0 (มีนาคม 2021)

ความเข้ากันได้

  เวอร์ชันต่ำสุด เวอร์ชันเริ่มต้น หมายเหตุ
แกรเดิล 6.7.1 ไม่มี ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle
เครื่องมือสร้าง SDK 30.0.2 30.0.2 ติดตั้งหรือกำหนดค่าเครื่องมือสร้าง SDK
NDK ไม่มี 21.4.7075529 ติดตั้งหรือกำหนดค่า NDK เวอร์ชันอื่น

ฟีเจอร์ใหม่

ปลั๊กอิน Android Gradle เวอร์ชันนี้มีฟีเจอร์ใหม่ดังต่อไปนี้

ภาษา Java เวอร์ชัน 8 โดยค่าเริ่มต้น

ตั้งแต่เวอร์ชัน 4.2 เป็นต้นไป AGP จะใช้ระดับภาษาของ Java 8 โดยค่าเริ่มต้น Java 8 ให้คุณเข้าถึงฟีเจอร์ใหม่ๆ มากมายทางภาษา รวมถึง lambda นิพจน์ การอ้างอิงเมธอด และวิธีอินเทอร์เฟซแบบคงที่ หากต้องการดูรายการทั้งหมด ดูฟีเจอร์ที่รองรับในเอกสารประกอบของ Java 8

หากต้องการรักษาลักษณะการทำงานแบบเดิมไว้ ให้ระบุ Java 7 อย่างชัดเจนในระดับโมดูล ไฟล์ build.gradle.kts หรือ build.gradle:

// 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"
  }
}

คอมไพเลอร์ทรัพยากร JVM ใหม่

คอมไพเลอร์ทรัพยากร JVM ใหม่ในปลั๊กอิน Android Gradle 4.2 เข้ามาแทนที่ส่วนต่างๆ ของคอมไพเลอร์ทรัพยากร AAPT2 เพื่อปรับปรุงประสิทธิภาพในการสร้างสรรค์ โดยเฉพาะในเครื่อง Windows JVM ใหม่ ระบบจะเปิดใช้คอมไพเลอร์ทรัพยากรโดยค่าเริ่มต้น

รองรับการรับรองเวอร์ชัน 3 และ v4 แล้ว

ปลั๊กอิน Android Gradle 4.2 รองรับ APK v3 แล้ว และรูปแบบการรับรอง APK v4 หากต้องการเปิดใช้รูปแบบใดรูปแบบหนึ่งหรือทั้ง 2 รูปแบบต่อไปนี้ใน สร้าง ให้เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงใน build.gradle ระดับโมดูล หรือ build.gradle.kts ไฟล์:

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

การรับรอง APK v4 ช่วยให้คุณทำให้ APK ขนาดใหญ่ใช้งานได้อย่างรวดเร็วโดยใช้ ADB การติดตั้ง APK ที่เพิ่มขึ้นใน Android 11 แฟล็กใหม่นี้ใช้สำหรับขั้นตอนการลงนาม APK ในการทำให้ใช้งานได้ ขั้นตอนได้

กำหนดค่า App Signing ตามตัวแปร

คุณจะเปิดหรือปิดใช้ App Signing ใน Android Gradle ได้ ต่อตัวแปรเท่านั้น

ตัวอย่างนี้แสดงวิธีตั้งค่า App Signing ตามตัวแปรโดยใช้ onVariants() ใน Kotlin หรือ Groovy

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

พร็อพเพอร์ตี้ Gradle ใหม่: android.native.buildOutput

AGP 4.2 จะกรองข้อความเพื่อลดความยุ่งเหยิงในเอาต์พุตบิลด์ จากบิลด์ดั้งเดิมที่ใช้ CMake และ ndk-build ซึ่งแสดงเฉพาะเอาต์พุตของคอมไพเลอร์ C/C++ โดยค่าเริ่มต้น ก่อนหน้านี้ เอาต์พุตหนึ่งบรรทัด สำหรับทุกไฟล์ที่สร้างขึ้น ส่งผลให้ข้อมูลจำนวนมาก ที่ให้ข้อมูล

หากคุณต้องการดูเอาต์พุตเนทีฟทั้งหมด ให้ตั้งค่า พร็อพเพอร์ตี้ Gradle android.native.buildOutput ถึง verbose

คุณสามารถตั้งค่าพร็อพเพอร์ตี้นี้ในไฟล์ gradle.properties หรือผ่าน บรรทัดคำสั่ง

gradle.properties
android.native.buildOutput=verbose

บรรทัดคำสั่ง
-Pandroid.native.buildOutput=verbose

ค่าเริ่มต้นของคุณสมบัตินี้คือ quiet

การเปลี่ยนแปลงลักษณะการทำงานของไฟล์ gradle.properties

เริ่มตั้งแต่ AGP 4.2 คุณจะลบล้างคุณสมบัติ Gradle ไม่ได้อีก จากโปรเจ็กต์ย่อย กล่าวคือ หากคุณประกาศพร็อพเพอร์ตี้ใน gradle.properties ไฟล์ในโปรเจ็กต์ย่อยแทนที่จะเป็นรูท ระบบจะไม่สนใจโปรเจ็กต์ดังกล่าว

ตัวอย่างเช่น ในรุ่นก่อนหน้า AGP จะอ่านค่าจาก <var>projectDir</var>/gradle.properties, <var>projectDir</var>/app/gradle.properties, <var>projectDir</var>/library/gradle.properties, เป็นต้น สำหรับโมดูลแอป หากมีพร็อพเพอร์ตี้ Gradle เดียวกันในทั้ง 2 แบบ <var>projectDir</var>/gradle.properties และ <var>projectDir</var>/app/gradle.properties, ค่าจาก วันที่ <var>projectDir</var>/app/gradle.properties จะมีความสำคัญเหนือกว่า

ใน AGP 4.2 ได้มีการเปลี่ยนแปลงลักษณะการทำงานนี้ และ AGP จะไม่โหลดค่าจาก gradle.properties ในโปรเจ็กต์ย่อย (เช่น <var>projectDir</var>/app/gradle.properties) การเปลี่ยนแปลงนี้สะท้อนให้เห็นถึง ลักษณะการทำงานใหม่ของ Gradle และรองรับ การแคชการกำหนดค่า

ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าใน gradle.properties ได้ โปรดดู เอกสาร Gradle

การเปลี่ยนแปลงการกำหนดค่าและความเข้ากันได้ของ Gradle

เมื่อใช้งานใน Android Studio เครื่องมือสร้าง Gradle จะใช้ JDK ที่รวมอยู่ในแพ็กเกจของ Studio ในรุ่นก่อนหน้า JDK 8 ได้มาพร้อมกับ Studio ใน 4.2 แต่รวม JDK 11 เข้าด้วยกันแทนแล้ว เมื่อใช้ JDK แพ็กเกจใหม่เพื่อเรียกใช้ Gradle อาจส่งผลให้เกิดความไม่เข้ากันบางอย่าง หรือส่งผลกระทบต่อประสิทธิภาพ JVM เนื่องจากมีการเปลี่ยนแปลงเครื่องมือเก็บขยะ เราได้อธิบายปัญหาเหล่านี้ไว้ด้านล่าง

หมายเหตุ: แม้ว่าเราจะแนะนำให้ใช้ Gradle กับ JDK 11 แต่ คุณสามารถเปลี่ยน JDK ที่ใช้ในการเรียกใช้ Gradle ใน โครงสร้างของโครงการ กล่องโต้ตอบ การเปลี่ยนการตั้งค่านี้จะเปลี่ยนเฉพาะ JDK ที่ใช้ในการเรียกใช้ Gradle และ จะไม่เปลี่ยน JDK ที่ใช้ในการเรียกใช้ Studio

ความเข้ากันได้ของ Studio กับ Android ปลั๊กอิน Gradle (AGP)

Android Studio 4.2 สามารถเปิดโปรเจ็กต์ที่ใช้ AGP 3.1 และ หาก AGP ต้องใช้ Gradle 4.8.1 ขึ้นไป สำหรับข้อมูลเพิ่มเติม ข้อมูลเกี่ยวกับความเข้ากันได้ของ Gradle โปรดดู อัปเดต Gradle

การเพิ่มประสิทธิภาพบิลด์ Gradle สำหรับ JDK 11

การอัปเดต JDK 11 นี้จะส่งผลต่อการกำหนดค่าเริ่มต้นของ JVM Garbage เนื่องจาก JDK 8 ใช้ตัวรวบรวมขยะแบบขนาน แต่ JDK 11 ใช้ เครื่องมือเก็บขยะ G1

เราขอแนะนำเพื่อเพิ่มโอกาสในการปรับปรุงประสิทธิภาพของบิลด์ ทดสอบบิลด์ของ Gradle เครื่องมือเก็บขยะแบบขนานกัน ใน gradle.properties ให้ตั้งค่าต่อไปนี้

org.gradle.jvmargs=-XX:+UseParallelGC

หากมีตัวเลือกอื่นๆ ที่ตั้งค่าไว้แล้วในช่องนี้ ให้เพิ่มตัวเลือกใหม่ดังนี้

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

หากต้องการวัดความเร็วของบิลด์ด้วยการกำหนดค่าต่างๆ โปรดดู ทำโปรไฟล์บิลด์

ไฟล์ DEX ที่ไม่ได้บีบอัดใน APK เมื่อ minSdk = 28 ขึ้นไป

ตอนนี้ AGP จะจัดแพ็กเกจไฟล์ DEX ที่ไม่บีบอัดใน APK โดยค่าเริ่มต้นเมื่อ minSdk = 28 หรือ สูงขึ้น ซึ่งทำให้ขนาด APK เพิ่มขึ้น แต่ขนาดจะเล็กลง อุปกรณ์และขนาดการดาวน์โหลดจะเท่ากันโดยประมาณ

หากต้องการบังคับให้ AGP รวมไฟล์ DEX ที่บีบอัดแทน คุณสามารถเพิ่มเมธอด ต่อไปนี้ไปที่ไฟล์ build.gradle ของคุณ:

android {
    packagingOptions {
        dex {
            useLegacyPackaging true
        }
    }
}

ใช้ DSL เพื่อสร้างแพ็กเกจไลบรารีแบบเนทีฟที่บีบอัด

เราขอแนะนำให้รวมไลบรารีเนทีฟในรูปแบบที่ไม่มีการบีบอัด เนื่องจาก ส่งผลให้แอปมีขนาดติดตั้งเล็กลง ขนาดการดาวน์โหลดแอปเล็กลง และแอปเร็วขึ้น เวลาที่ใช้ในการโหลดสำหรับผู้ใช้ แต่หากคุณต้องการให้ปลั๊กอิน Android Gradle สร้างแพ็กเกจไลบรารีเนทีฟที่บีบอัดเมื่อสร้างแอปของคุณ ตั้งค่า useLegacyPackaging ไปยัง true ในไฟล์ build.gradle ของแอป

android {
    packagingOptions {
        jniLibs {
            useLegacyPackaging true
        }
    }
}

แฟล็ก useLegacyPackaging แทนที่แอตทริบิวต์ไฟล์ Manifest extractNativeLibs หากต้องการทราบข้อมูลพื้นฐานเพิ่มเติม โปรดดูบันทึกประจำรุ่น แพ็กเกจไลบรารีเนทีฟที่ไม่ได้บีบอัดโดยค่าเริ่มต้น