Android SDK Build-Tools เป็นคอมโพเนนต์ของ Android SDK ที่จําเป็นสําหรับการสร้างแอป Android ติดตั้งไว้ในไดเรกทอรี <sdk>/build-tools/
คุณควรอัปเดตคอมโพเนนต์เครื่องมือสร้างอยู่เสมอโดยดาวน์โหลดเวอร์ชันล่าสุดโดยใช้ Android SDK Manager หากคุณใช้ปลั๊กอิน Android สำหรับ Gradle 3.0.0 ขึ้นไป โปรเจ็กต์จะใช้เครื่องมือสร้างเวอร์ชันเริ่มต้นที่ปลั๊กอินระบุโดยอัตโนมัติ หากต้องการใช้เครื่องมือสร้างเวอร์ชันอื่น ให้ระบุโดยใช้ buildToolsVersion
ใน build.gradle
ของโมดูล ดังนี้
android { buildToolsVersion "34.0.0" ... }
android { buildToolsVersion = "34.0.0" ... }
การแก้ไข
ส่วนด้านล่างนี้จะแสดงหมายเหตุเกี่ยวกับรุ่นของเครื่องมือสร้าง หากต้องการดูว่าเครื่องมือสร้างเวอร์ชันใดบ้างที่ใช้ได้ใน SDK ให้ดูรายการแพ็กเกจที่ติดตั้งในเครื่องมือจัดการ SDK ของ Android
แก้ไขข้อบกพร่องทั่วไปและปรับปรุง
การอัปเดตนี้รวมถึงการรองรับการสร้างด้วย API ตัวอย่างของ Android 14
การอัปเดตนี้แก้ไขปัญหาต่อไปนี้
-
core-lambda-stubs.jar
เวอร์ชัน 33.0.0 จะแตกต่างกันใน macOS กับ Linux/Windows (ดูปัญหา #237299698)
การอัปเดตนี้แก้ไขปัญหาต่อไปนี้
- AIDL ไม่สำเร็จด้วยเครื่องมือสร้าง 33.0.0 (ดูปัญหา #236167971)
การอัปเดตนี้รองรับการสร้างด้วย API ของ Android 11 Preview
การอัปเดตนี้แก้ไขปัญหาต่อไปนี้
- ปัญหาการสร้างกับ Renderscript ใน macOS Catalina (ดูปัญหา #142590626)
การอัปเดตนี้แก้ไขปัญหาต่อไปนี้
การอัปเดตนี้รองรับการสร้างด้วย 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)