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

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

เวอร์ชันต่ำสุด เวอร์ชันเริ่มต้น หมายเหตุ
Gradle 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 ขนาดใหญ่ใช้งานได้อย่างรวดเร็วโดยใช้การติดตั้ง APK แบบเพิ่มทีละรายการของ ADB ใน 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 เดียวกันมีอยู่ในทั้ง <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 เนื่องจาก 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
        }
    }
}

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