บันทึกประจำรุ่นสำหรับเครื่องมือสร้าง SDK

Android SDK Build-Tools เป็นคอมโพเนนต์ของ Android SDK ที่จําเป็นสําหรับการสร้างแอป Android ติดตั้งไว้ในไดเรกทอรี <sdk>/build-tools/

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

GroovyKotlin
android {
    buildToolsVersion "34.0.0"
    ...
}
android {
    buildToolsVersion = "34.0.0"
    ...
}

การแก้ไข

ส่วนด้านล่างนี้จะแสดงหมายเหตุเกี่ยวกับรุ่นของเครื่องมือสร้าง หากต้องการดูว่าเครื่องมือสร้างเวอร์ชันใดบ้างที่ใช้ได้ใน SDK ให้ดูรายการแพ็กเกจที่ติดตั้งในเครื่องมือจัดการ SDK ของ Android

เครื่องมือสร้าง เวอร์ชัน 34.0.0 RC3(เมษายน 2023)

แก้ไขข้อบกพร่องทั่วไปและปรับปรุง

การอัปเดตนี้รวมถึงการรองรับการสร้างด้วย API ตัวอย่างของ Android 14

การอัปเดตนี้แก้ไขปัญหาต่อไปนี้

  • core-lambda-stubs.jar เวอร์ชัน 33.0.0 จะแตกต่างกันใน macOS กับ Linux/Windows (ดูปัญหา #237299698)

การอัปเดตนี้แก้ไขปัญหาต่อไปนี้

  • AIDL ไม่สำเร็จด้วยเครื่องมือสร้าง 33.0.0 (ดูปัญหา #236167971)

การอัปเดตนี้รองรับการสร้างด้วย API ของ Android 11 Preview

การอัปเดตนี้แก้ไขปัญหาต่อไปนี้

การอัปเดตนี้แก้ไขปัญหาต่อไปนี้

การอัปเดตนี้รองรับการสร้างด้วย API ระดับ 29

การอัปเดตนี้รองรับปลั๊กอิน Android Gradle 3.2.0 และแก้ไขปัญหาต่อไปนี้

  • แก้ไขข้อบกพร่องของไลบรารี JNI ที่ทำให้แอปขัดข้องเมื่อเรียกใช้ androidx.renderscript.RenderScript.create()
  • แก้ไขข้อบกพร่องที่ทําให้เกิดข้อผิดพลาดProgram type already presentในบิลด์เมื่อใช้ทรัพยากรandroidx.annotation

มี D8 เวอร์ชันล่าสุด

ปรับปรุงการรองรับการคอมไพล์ Lambda เมื่อคุณเปิดใช้ฟีเจอร์ภาษา Java 8

ปรับปรุงการรองรับฟีเจอร์ภาษาของ Java 8

เพิ่มการรองรับ MultiDex แบบเดิมสําหรับ APK ทดสอบ (ปัญหา #37324038)

นอกเหนือจากการแก้ไขข้อบกพร่องทั่วไปแล้ว เวอร์ชันนี้ยังมีการอัปเดตต่อไปนี้ด้วย

  • การอัปเดต apksigner เป็นเวอร์ชัน 0.8 มีดังนี้
    • ความเข้ากันได้กับ Java 9 (ปัญหา #37137869)
    • พารามิเตอร์ --pass-encoding ใหม่สำหรับจัดการคีย์สโตร์และคีย์ที่เข้ารหัสโดยใช้รหัสผ่านที่ไม่ใช่ ASCII หากคุณเปลี่ยนไปใช้ Java 9 และ apksigner ถอดรหัสคีย์สโตร์หรือคีย์ไม่ได้ ให้ใช้พารามิเตอร์นี้เพื่อระบุการเข้ารหัสอักขระที่คุณใช้สร้างคีย์สโตร์หรือคีย์ ดูข้อมูลเพิ่มเติมได้ที่apksigner Documentation หรือเรียกใช้ apksigner sign --help จากบรรทัดคำสั่ง
    • ข้อความแสดงข้อผิดพลาดที่ดีขึ้นเมื่อ apksigner ยืนยันลายเซ็น JAR ไม่ได้เนื่องจากมี Digest หรืออัลกอริทึมลายเซ็นที่ไม่รองรับ (ปัญหา #63525618)
  • รองรับโหมด Daemon ของ AAPT2 เมื่อใช้ปลั๊กอิน Android สำหรับ Gradle 3.0.0-beta7 ขึ้นไป

นอกเหนือจากการแก้ไขข้อบกพร่องทั่วไปแล้ว เวอร์ชันนี้ยังคืนค่า apksigner ให้กับแพ็กเกจเครื่องมือสร้าง (มีการละเว้นไปโดยไม่ได้ตั้งใจในเวอร์ชัน 26.0.0) และมีการอัปเดตเครื่องมือต่อไปนี้ด้วย

  • เพิ่มการรองรับ PKCS #11 เพื่ออนุญาตให้ลงนามด้วยคีย์ที่อยู่ในฮาร์ดแวร์ที่ปลอดภัย (ปัญหา #37140484)
  • เพิ่มการรองรับการโหลดผู้ให้บริการ JCA เพิ่มเติมก่อนลงนาม
  • ปฏิบัติตาม android:targetSandboxVersion เมื่อยืนยัน APK
  • เมื่อลงนาม จะปฏิเสธ APK ที่มีไฟล์ที่มีอักขระพิเศษ "CR" (carriage return), "LF" (line feed) หรือ "NUL" (null) ในชื่อไฟล์
  • แก้ไข apksigner.bat ให้จัดการพารามิเตอร์ที่มีเว้นวรรคได้อย่างถูกต้อง (ปัญหา #38132450)
  • แก้ไขข้อบกพร่องในการยืนยันลายเซ็น JAR เมื่อมีการรวมข้อมูลเมตาหลายรายการสำหรับรายการเดียวกันใน MANIFEST.MF (ปัญหา #38497270)

เพิ่มการรองรับการสร้างด้วย API ระดับ 26 และมีการแก้ไขข้อบกพร่องทั่วไป

การอัปเดตสำหรับ apksigner

  • เพิ่มพารามิเตอร์ --in เพื่อให้สมดุลกับพารามิเตอร์ --out ที่มีอยู่
  • หากคุณไม่ได้ระบุรหัสผ่านคีย์โดยใช้ --key-pass apksignerจะใช้รหัสผ่านคีย์สโตร์เป็นรหัสผ่านคีย์ อย่างไรก็ตาม หากคีย์ต้องใช้รหัสผ่านอื่น ระบบจะแจ้งให้คุณป้อนรหัสผ่านของคีย์จากบรรทัดคำสั่ง (ปัญหา #37134986)
  • เพิ่มความเข้ากันได้กับ jarsigner สำหรับรหัสผ่านที่ไม่ใช่ ASCII (ปัญหา #37135737)

แก้ไขข้อบกพร่อง

รุ่นนี้มีการแก้ไขข้อบกพร่องและการปรับปรุงapksignerต่อไปนี้

  • รองรับ APK ที่มีชื่อรายการ JAR ที่มีการสร้างความสับสน
  • ตอนนี้สวิตช์ --print-certs จะแสดงลายนิ้วมือ MD5 ด้วย

การแก้ไขข้อบกพร่องสำหรับชุดเครื่องมือ Jack

  • แก้ไขปัญหาเกี่ยวกับ Jack ที่รองรับไฟล์ต้นทางที่ไม่ใช่ ASCII (ปัญหา #218892)
  • แก้ไขปัญหาที่ทำให้เกิด AssertionError ระหว่างการคอมไพล์ (ปัญหา #208414)
  • เพิ่ม apksigner ซึ่งเป็นเครื่องมือสำหรับรับรอง APK ที่จะมาแทนที่ jarsigner โดยค่าเริ่มต้น apksigner จะลงชื่อ APK โดยใช้รูปแบบการรับรอง JAR แบบดั้งเดิม (ซึ่ง jarsigner ใช้) และ APK Signature Scheme v2 ที่เปิดตัวใน Android 7.0 (API ระดับ 24) การแก้ไข APK ที่ลงนามด้วย APK Signature Scheme v2 จะทําให้ลายเซ็นของ APK นั้นใช้งานไม่ได้ ดังนั้น การประมวลผล APK หลังการประมวลผล เช่น zipalign ต้องดำเนินการก่อนเรียกใช้ apksigner ไม่ใช่หลังจากเรียกใช้ การเรียกใช้ zipalign ก่อน apksigner จะทํางานได้เพราะ apksigner จะรักษาการจัดแนวและการบีบอัด APK ไว้ (ต่างจาก jarsigner)
  • แก้ไขปัญหาในไลบรารีสนับสนุน RenderScript บนอุปกรณ์ที่ใช้ ARM64
  • แก้ไขปัญหาในไลบรารีสนับสนุน RenderScript ในอุปกรณ์ Jelly Bean บางรุ่น
  • รองรับ renderscriptTargetAPI 21+ เมื่อใช้ปลั๊กอิน Android สำหรับ Gradle เวอร์ชัน 2.1.0 ขึ้นไป
  • ปรับปรุงประสิทธิภาพการผสานของเครื่องมือ dx
  • แก้ไขปัญหาในคอมไพเลอร์ RenderScript สำหรับ Windows

แก้ไขปัญหาในเครื่องมือ RenderScript

เพิ่มการรองรับรุ่น Android 6.0 (API ระดับ 23)

แก้ไขปัญหาความเข้ากันได้กับเคอร์เนล RenderScript ในอุปกรณ์ Android 4.4 (API ระดับ 19) ถึง Android 4.1 (API ระดับ 16)

เพิ่มการรองรับ Android 5.1 (API ระดับ 22)

แก้ไขปัญหาการสร้างเลย์เอาต์ข้อมูลในโหมด 32 บิต

แก้ไขปัญหาสคริปต์ MultiDex

เพิ่มการรองรับไฟล์ MultiDex สำหรับ APK และการรองรับ Jack เพื่อจัดการกับขีดจำกัดการอ้างอิงเมธอด 64 KB

อัปเดต Eclipse ADT ให้เสร็จสมบูรณ์เพื่อแก้ปัญหาความไม่เสถียรบนแพลตฟอร์ม Windows

การอัปเดตครั้งแรกสําหรับ Eclipse ADT ใน Windows โปรดใช้ Revision 21.0.2

หมายเหตุทั่วไป
  • เพิ่มการรองรับ Android 5.0 (API ระดับ 21)
  • ตอนนี้ RenderScript รองรับการดำเนินการแบบ 32/64 บิตอย่างราบรื่นสำหรับ API ระดับ 21 ขึ้นไป
  • แก้ปัญหาเกี่ยวกับระบบการบิลด์ Gradle เมื่อใช้ปลั๊กอิน JaCoCo (ปัญหา 69174)
  • เพิ่มตัวเลือก input-list สำหรับใช้กับบรรทัดคำสั่งที่ยาวใน Windows
หมายเหตุทั่วไป
  • เพิ่มการรองรับ Android Wear
หมายเหตุทั่วไป
  • เพิ่ม zipalign ลงในเครื่องมือสร้าง
  • แก้ไข aapt เพื่อละเว้นไฟล์ XML ที่คอมไพล์ไม่สำเร็จ

แก้ไขปัญหาการรองรับ RenderScript

แก้ไขปัญหาเกี่ยวกับบิลด์ RenderScript ต่อไปนี้
  • แก้ไขปัญหาเกี่ยวกับการเข้ารหัสบิตโค้ดของ RenderScript (ปัญหา 64775)
  • แก้ไขปัญหาเกี่ยวกับ RenderScript ที่ขาดสัญลักษณ์ทางคณิตศาสตร์ (ข้อบกพร่อง 64110)

แก้ไขปัญหาต่างๆ เกี่ยวกับการสร้าง
  • แก้ไขการรองรับการคอมไพล์ RenderScript ในโหมด NDK ด้วย Gradle
  • แก้ไขปัญหา BufferOverflowException ในบิลด์ dx (ปัญหา 61710)

เพิ่มการรองรับเป้าหมายการสร้าง Android 4.4 (API ระดับ 19)

แก้ไขปัญหาเล็กน้อยหลายประการเกี่ยวกับบิลด์

แก้ไขปัญหาเกี่ยวกับโหมดการสนับสนุน RenderScript

เพิ่มการรองรับเป้าหมายการสร้าง Android 4.3 (API ระดับ 18)

การเผยแพร่ครั้งแรก

หมายเหตุทั่วไป
  • รองรับการกำหนดเป้าหมายการสร้าง Android 4.2 (API ระดับ 17)
  • แยกคอมโพเนนต์เฉพาะบิลด์ของ Android SDK ออกจากคอมโพเนนต์ platform-tools เพื่อให้อัปเดตเครื่องมือสร้างได้โดยไม่ขึ้นอยู่กับคอมโพเนนต์สภาพแวดล้อมการพัฒนาแบบรวม (IDE)