ปลั๊กอิน Android Gradle 8.1.0 (กรกฎาคม 2023)

ปลั๊กอิน Android Gradle 8.1.0 เป็นเวอร์ชันสำคัญที่มีฟีเจอร์ใหม่ๆ มากมาย ฟีเจอร์และการปรับปรุงต่างๆ

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

เวอร์ชันต่ำสุด เวอร์ชันเริ่มต้น หมายเหตุ
เกรเดิล 8.0 8.0 ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle
เครื่องมือสร้าง SDK 33.0.1 33.0.1 ติดตั้งหรือกำหนดค่าเครื่องมือสร้าง SDK
NDK ไม่มี 25.1.8937393 ติดตั้งหรือกำหนดค่า NDK เวอร์ชันอื่น
JDK 17 17 ดูข้อมูลเพิ่มเติมได้ที่การตั้งค่าเวอร์ชัน JDK

Kotlin DSL เป็นค่าเริ่มต้นสำหรับการกำหนดค่าบิลด์

ตอนนี้โปรเจ็กต์ใหม่ใช้ Kotlin DSL (build.gradle.kts) โดยค่าเริ่มต้นสําหรับบิลด์ การกำหนดค่า ฟีเจอร์นี้จะมอบประสบการณ์การตัดต่อที่ดีกว่า Groovy DSL (build.gradle) ที่มีการไฮไลต์ไวยากรณ์ การเติมโค้ด และการไปยัง ประกาศ โปรดทราบว่าหากใช้ AGP 8.1 และ Kotlin DSL สำหรับบิลด์ คุณควรใช้ Gradle 8.1 เพื่อประสบการณ์การใช้งานที่ดีที่สุด หากต้องการทราบข้อมูลเพิ่มเติม โปรดดูคำแนะนำในการย้ายข้อมูล Kotlin DSL

การสนับสนุนภาษาต่อแอปโดยอัตโนมัติ

ตั้งแต่ Android Studio Giraffe Canary 7 และ AGP 8.1.0-alpha07 คุณจะทำสิ่งต่อไปนี้ได้ กำหนดค่าแอปของคุณให้รองรับภาษาของแต่ละแอป การตั้งค่าเริ่มต้นโดยอัตโนมัติ อิงตาม ทรัพยากรของโปรเจ็กต์, ปลั๊กอิน Android Gradle สร้างไฟล์ LocaleConfig และเพิ่มการอ้างอิงไปยังไฟล์นี้ในไฟล์ Manifest สุดท้าย คุณจึงไม่ต้อง ด้วยตนเองก็ได้ AGP ใช้ทรัพยากรในโฟลเดอร์ res ของโมดูลแอป และทรัพยากร Dependency ของโมดูลไลบรารีทั้งหมดเพื่อกําหนดภาษาที่จะรวมไว้ในไฟล์ LocaleConfig

โปรดทราบว่าฟีเจอร์ภาษาที่ใช้ในแอปอัตโนมัติรองรับแอปที่ใช้ Android 13 (API ระดับ 33) ขึ้นไป หากต้องการใช้ฟีเจอร์นี้ คุณต้องตั้งค่า compileSdkVersion ถึง 33 ขึ้นไป วิธีกำหนดค่ากำหนดภาษาของแต่ละแอป สำหรับ Android เวอร์ชันก่อนหน้า คุณยังต้อง ใช้ API และเครื่องมือเลือกภาษาในแอป

หากต้องการเปิดใช้การรองรับภาษาต่อแอปโดยอัตโนมัติ ให้ระบุภาษาเริ่มต้นดังนี้

  1. ในโฟลเดอร์ res ของโมดูลแอป ให้สร้างไฟล์ใหม่ชื่อ resources.properties
  2. ในไฟล์ resources.properties ให้ตั้งค่าภาษาเริ่มต้นด้วย ป้ายกำกับ unqualifiedResLocale ในการสร้างชื่อภาษา ให้รวม รหัสภาษาที่มีสคริปต์และรหัสภูมิภาคซึ่งไม่บังคับ โดยคั่นแต่ละรายการ ด้วยเครื่องหมายขีดกลาง:

    • ภาษา: ใช้ตัวอักษร 2 หรือ 3 ตัว ISO 639-1 โค้ด
    • สคริปต์ (ไม่บังคับ): ใช้ ISO 15924
    • ภูมิภาค (ไม่บังคับ): ใช้ตัวอักษร 2 ตัว ISO 3166-1-alpha-2 หรือรหัส 3 หลัก UN_M.49 โค้ด

    ตัวอย่างเช่น หากภาษาเริ่มต้นเป็นอังกฤษแบบอเมริกัน

        unqualifiedResLocale=en-US
        

AGP จะเพิ่มภาษาเริ่มต้นนี้และภาษา ภูมิภาคอื่น ที่คุณระบุไว้ โดยใช้ไดเรกทอรี values-* ในโฟลเดอร์ res ไปยังส่วน LocaleConfig ที่สร้างขึ้นโดยอัตโนมัติ

การรองรับภาษาต่อแอปโดยอัตโนมัติจะปิดไว้โดยค่าเริ่มต้น หากต้องการเปิดฟีเจอร์ ใช้การตั้งค่า generateLocaleConfig ในบล็อก androidResources {} ของ ไฟล์ build.gradle.kts ระดับโมดูล (build.gradle ไฟล์หากคุณใช้ น่าสนใจ):

Kotlin

android {
  androidResources {
    generateLocaleConfig = true
  }
}

ดึงดูด

android {
  androidResources {
    generateLocaleConfig true
  }
}

Android Lint มีไบต์โค้ดที่กำหนดเป้าหมายเป็น JVM 17

ตั้งแต่ AGP 8.1.0-alpha04 เป็นต้นไป Android Lint มีไบต์โค้ดที่กำหนดเป้าหมายเป็น JVM 17. ถ้าคุณเขียนการตรวจสอบ Lint แบบกำหนดเอง คุณจะต้องคอมไพล์ด้วย JDK 17 ขึ้นไป และระบุ jvmTarget = '17' ในตัวเลือกคอมไพเลอร์ Kotlin

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเครื่องมือ Lint โปรดดูที่ ปรับปรุงโค้ดโดยใช้ Lint ตรวจสอบ

ย้ายการตั้งค่าการบีบอัดไลบรารีแบบเนทีฟไปยัง DSL แล้ว

เริ่มตั้งแต่ AGP 8.1.0-alpha10 คุณจะได้รับคำเตือนหากไม่กำหนดค่า การบีบอัดไลบรารีแบบเนทีฟโดยใช้ DSL แทนไฟล์ Manifest คำแนะนำต่อไปนี้อธิบายวิธีอัปเดตการกำหนดค่าเพื่อใช้ DSL ถึง รับความช่วยเหลือในการอัปเดตเหล่านี้ ใช้ AGP Upgrade Assistant (เครื่องมือ > AGP Upgrade Assistant)

หากต้องการใช้ไลบรารีเนทีฟที่ไม่ได้บีบอัด ให้นำ android::extractNativeLibs ออก จากไฟล์ Manifest และเพิ่มโค้ดต่อไปนี้ในระดับโมดูล build.gradle.kts ไฟล์ (build.gradle ไฟล์หากคุณใช้ Groovy):

Kotlin

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging = false
    }
  }
}

ดึงดูด

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging false
    }
  }
}

แฟล็กบิลด์ทดลอง

รายการเหล่านี้เป็นแฟล็กทดลองสำหรับการกำหนดค่าบิลด์ที่พร้อมใช้งานใน AGP 8.1

ตั้งค่าสถานะ เพิ่มใน ค่าเริ่มต้น หมายเหตุ
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes AGP 8.0 false การเปิดใช้การตั้งค่านี้โดยไม่ได้ระบุการกำหนดค่าการรับรองจะทำให้ AGP ใช้เมธอด การกำหนดค่าการลงชื่อแก้ไขข้อบกพร่องเริ่มต้นเมื่อเรียกใช้โปรไฟล์ที่สามารถแก้ไขข้อบกพร่องหรือแก้ไขข้อบกพร่องได้ งานสร้าง การตั้งค่าสถานะนี้ถูกปิดใช้งานโดยค่าเริ่มต้นเพื่อสนับสนุนผู้เขียนบิลด์ ประกาศการกำหนดค่าการลงชื่อโปรไฟล์ที่เฉพาะเจาะจง
android.experimental.library.desugarAndroidTest AGP 8.0 false แฟล็กนี้ช่วยให้เครื่องมือสร้างไลบรารีเปิดใช้การนำไลบรารีหลักออกสำหรับ ทดสอบ APK โดยไม่กระทบกับ AAR ที่ผลิต เช่น ผ่านการวิเคราะห์โค้ด เราวางแผนที่จะรองรับลักษณะการทำงานนี้ใน Variant API
android.experimental.testOptions.managedDevices.customDevice AGP 8.0 false หากเปิดใช้ อุปกรณ์ที่มีการจัดการของ Gradle จะอนุญาตอุปกรณ์ที่กำหนดเองที่ผู้ใช้กำหนดได้ ประเภทที่ปลั๊กอินระบุได้ ต้องเปิดใช้แฟล็กนี้หากคุณ ต้องการใช้ปลั๊กอิน Firebase Test Lab
android.lint.printStackTrace AGP 8.0 false หากเปิดใช้ Android Lint จะพิมพ์สแต็กเทรซหากข้อขัดข้อง ธงนี้ มีความสามารถเหมือนกับ LINT_PRINT_STACKTRACE ตัวแปรสภาพแวดล้อม
android.experimental.testOptions.managedDevices.maxConcurrentDevices AGP 8.0 ไม่มี ระบุจำนวนอุปกรณ์ที่มีการจัดการโดย Gradle พร้อมกันสูงสุด (AVD) ทำงาน ณ เวลาใดเวลาหนึ่ง หากค่าเป็น 0 หรือ เป็นลบ ไม่มีจำนวนอุปกรณ์สูงสุด
android.experimental.testOptions.installApkTimeout AGP 8.0 ไม่มี ระยะหมดเวลาเป็นวินาทีในการติดตั้ง APK หากค่าเป็น 0 หรือลบ ก็จะมีการตั้งค่า UTP เป็นค่าเริ่มต้น