ต่อไปนี้คือหมายเหตุประจำรุ่นของ Android Studio 3.6 และต่ำกว่า รวมถึงปลั๊กอิน Android Gradle 3.6.0 และต่ำกว่า
Android Studio เวอร์ชันเก่า
3.6 (กุมภาพันธ์ 2020)
Android Studio 3.6 เป็นรุ่นหลักที่มีฟีเจอร์ใหม่ๆ และการปรับปรุงมากมาย
นอกจากนี้ เราขอขอบคุณผู้มีส่วนร่วมในชุมชนทุกท่านที่ช่วยในการเปิดตัวครั้งนี้
3.6.3 (เมษายน 2020)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องหลายรายการ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
3.6.2 (มีนาคม 2020)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องหลายรายการ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
3.6.1 (กุมภาพันธ์ 2020)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องหลายรายการ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
เครื่องมือออกแบบ
Android Studio เวอร์ชันนี้มีการอัปเดตเครื่องมือออกแบบหลายอย่าง รวมถึงเครื่องมือสร้างเลย์เอาต์และเครื่องมือจัดการทรัพยากร
การแยกมุมมองและซูมในโปรแกรมแก้ไขการออกแบบ

การอัปเดตต่อไปนี้ในโปรแกรมแก้ไขการออกแบบภาพจะรวมอยู่ในการเผยแพร่นี้
-
ตอนนี้โปรแกรมแก้ไขการออกแบบ เช่น Layout Editor และ Navigation Editor มีมุมมองแยกที่ช่วยให้คุณเห็นทั้งมุมมองการออกแบบและโค้ดของ UI ได้พร้อมกัน ที่มุมขวาบน ของหน้าต่างเอดิเตอร์ ตอนนี้มีปุ่ม 3 ปุ่ม
สำหรับสลับระหว่างตัวเลือกการดู-
หากต้องการเปิดใช้มุมมองแบบแยก ให้คลิกไอคอนแยก
-
หากต้องการเปิดใช้มุมมองแหล่งที่มา XML ให้คลิกไอคอนแหล่งที่มา
-
หากต้องการเปิดใช้มุมมองการออกแบบ ให้คลิกไอคอนการออกแบบ
-
หากต้องการเปิดใช้มุมมองแบบแยก ให้คลิกไอคอนแยก
-
การควบคุมสำหรับการซูมและการเลื่อนภายในโปรแกรมแก้ไขการออกแบบได้ย้ายไป อยู่ที่แผงลอยที่มุมขวาล่างของหน้าต่างโปรแกรมแก้ไข
ดูข้อมูลเพิ่มเติมได้ที่สร้าง UI ด้วยเครื่องมือแก้ไขการออกแบบ
แท็บทรัพยากรตัวเลือกสี
IDE จะป้อนค่าทรัพยากรสีให้คุณโดยอัตโนมัติเพื่อช่วยให้คุณอัปเดตค่าทรัพยากรสีในแอปได้อย่างรวดเร็วเมื่อใช้ เครื่องมือเลือกสีใน XML หรือเครื่องมือออกแบบ

เครื่องมือจัดการทรัพยากร
Resource Manager มีการอัปเดตต่อไปนี้
- ขณะนี้ Resource Manager รองรับทรัพยากรส่วนใหญ่แล้ว
- เมื่อค้นหาทรัพยากร ตอนนี้ Resource Manager จะแสดงผลลัพธ์จาก โมดูลโปรเจ็กต์ทั้งหมด ก่อนหน้านี้ การค้นหาจะแสดงผลลัพธ์จากโมดูลที่เลือกเท่านั้น
- ปุ่มตัวกรองช่วยให้คุณดูทรัพยากรจากโมดูลที่ขึ้นต่อกันในเครื่อง ไลบรารีภายนอก และเฟรมเวิร์ก Android ได้ นอกจากนี้ คุณยังใช้ตัวกรองเพื่อ แสดงแอตทริบิวต์ธีมได้ด้วย
- ตอนนี้คุณเปลี่ยนชื่อทรัพยากรในระหว่างกระบวนการนำเข้าได้แล้วโดยคลิกใน กล่องข้อความเหนือทรัพยากร
ดูข้อมูลเพิ่มเติมได้ที่ จัดการทรัพยากร UI ของแอปด้วย Resource Manager
การปรับปรุงปลั๊กอิน Android Gradle
ปลั๊กอิน Android Gradle เวอร์ชันล่าสุดมีการอัปเดตหลายอย่าง รวมถึงการเพิ่มประสิทธิภาพความเร็วในการสร้าง การรองรับปลั๊กอินการเผยแพร่ Maven และการรองรับ View Binding ดูข้อมูลเพิ่มเติมได้ในบันทึกประจำรุ่นฉบับเต็ม
ดูการเชื่อมโยง
View Binding ช่วยให้คุณเขียนโค้ดที่โต้ตอบกับ View ได้ง่ายขึ้นโดยการสร้างคลาส Binding สำหรับไฟล์เลย์เอาต์ XML แต่ละไฟล์ คลาสเหล่านี้มีข้อมูลอ้างอิงโดยตรงไปยังมุมมองทั้งหมดที่มี รหัสในเลย์เอาต์ที่เกี่ยวข้อง
เนื่องจากแทนที่ findViewById() การเชื่อมโยงมุมมองจึงช่วยลด
ความเสี่ยงของข้อยกเว้นตัวชี้ค่าว่างที่เกิดจากรหัสมุมมองที่ไม่ถูกต้อง
หากต้องการเปิดใช้ View Binding คุณต้องใช้ปลั๊กอิน Android Gradle
3.6.0 ขึ้นไป และรวมข้อมูลต่อไปนี้ไว้ในไฟล์
build.gradle ของแต่ละโมดูล
Groovy
android { buildFeatures.viewBinding = true }
Kotlin
android { buildFeatures.viewBinding = true }
ใช้การเปลี่ยนแปลง
ตอนนี้คุณเพิ่มคลาสแล้วนําการเปลี่ยนแปลงโค้ดนั้นไปใช้กับแอปที่กําลังทํางานได้โดย คลิกใช้การเปลี่ยนแปลงโค้ด หรือใช้การเปลี่ยนแปลงและรีสตาร์ทกิจกรรม
ดูข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่างระหว่างการดำเนินการทั้ง 2 อย่างนี้ได้ที่ ใช้การเปลี่ยนแปลง
ปรับโครงสร้างตัวเลือกเมนูเพื่อเปิดใช้การรองรับ Instant App
ตอนนี้คุณเปิดใช้โมดูลฐานได้ทันทีทุกเมื่อหลังจากสร้างโปรเจ็กต์แอป โดยทำดังนี้
- เปิดแผงโปรเจ็กต์โดยเลือกดู > หน้าต่างเครื่องมือ > โปรเจ็กต์ จากแถบเมนู
- คลิกขวาที่โมดูลฐาน ซึ่งโดยปกติจะมีชื่อว่า "app" แล้วเลือก Refactor > Enable Instant Apps Support
- ในกล่องโต้ตอบที่ปรากฏขึ้น ให้เลือกโมดูลฐานจากเมนูแบบเลื่อนลง
- คลิกตกลง
หมายเหตุ: เราได้นำตัวเลือกในการเปิดใช้โมดูลแอปฐานทันที จากวิซาร์ดสร้างโปรเจ็กต์ใหม่ออกแล้ว
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของ Google Play Instant
ยกเลิกการปกปิดโค้ดไบต์ของคลาสและเมธอดในตัววิเคราะห์ APK
เมื่อใช้ APK Analyzer เพื่อ ตรวจสอบไฟล์ DEX คุณจะถอดรหัสซอร์สโค้ดที่สร้างความสับสนของคลาสและไบต์โค้ดของเมธอดได้โดยทำดังนี้
- เลือกบิลด์ > วิเคราะห์ APK จากแถบเมนู
- ในกล่องโต้ตอบที่ปรากฏขึ้น ให้ไปที่ APK ที่ต้องการตรวจสอบ แล้วเลือก
- คลิกเปิด
- ในเครื่องมือวิเคราะห์ APK ให้เลือกไฟล์ DEX ที่ต้องการตรวจสอบ
- ในโปรแกรมดูไฟล์ DEX ให้โหลดไฟล์การแมป ProGuardสำหรับ APK ที่คุณ วิเคราะห์
- คลิกขวาที่คลาสหรือเมธอดที่ต้องการตรวจสอบ แล้วเลือก แสดงไบต์โค้ด
เครื่องมือเนทีฟ
ข้อมูลอัปเดตต่อไปนี้รองรับการพัฒนาแอปเนทีฟ (C/C++) ใน Android Studio
การรองรับ Kotlin
ฟีเจอร์ NDK ต่อไปนี้ใน Android Studio ซึ่งก่อนหน้านี้รองรับใน Java ตอนนี้รองรับใน Kotlin ด้วย
-
ไปยังฟังก์ชันการใช้งานที่เกี่ยวข้องจากประกาศ JNI ใน C/C++ ดูการแมปนี้โดยวางเมาส์เหนือเครื่องหมายรายการ C หรือ C++ ใกล้ หมายเลขบรรทัดในไฟล์ซอร์สโค้ดที่มีการจัดการ
-
สร้างฟังก์ชันการใช้งาน Stub สำหรับการประกาศ JNI โดยอัตโนมัติ กำหนดการประกาศ JNI ก่อน แล้วพิมพ์ "jni" หรือชื่อเมธอดใน ไฟล์ C/C++ เพื่อเปิดใช้งาน

-
ฟังก์ชันการใช้งานเนทีฟที่ไม่ได้ใช้จะไฮไลต์เป็นคำเตือนในซอร์สโค้ด นอกจากนี้ ระบบยังไฮไลต์การประกาศ JNI ที่ไม่มีการติดตั้งใช้งานเป็นข้อผิดพลาดด้วย
-
เมื่อคุณเปลี่ยนชื่อ (ปรับโครงสร้าง) ฟังก์ชันการใช้งานเนทีฟ ระบบจะอัปเดตประกาศ JNI ที่เกี่ยวข้องทั้งหมด เปลี่ยนชื่อการประกาศ JNI เพื่อ อัปเดตฟังก์ชันการใช้งานเนทีฟ
-
การตรวจสอบลายเซ็นสำหรับการติดตั้งใช้งาน JNI ที่เชื่อมโยงโดยนัย
การปรับปรุง JNI อื่นๆ
ตอนนี้เครื่องมือแก้ไขโค้ดใน Android Studio รองรับเวิร์กโฟลว์การพัฒนา JNI ที่ราบรื่นยิ่งขึ้น รวมถึงคำแนะนำประเภท การเติมข้อความอัตโนมัติ การตรวจสอบ และ การปรับโครงสร้างโค้ดที่ได้รับการปรับปรุง
การโหลด APK ซ้ำสำหรับไลบรารีแบบเนทีฟ {:#3.6-reload-apk}
คุณไม่จำเป็นต้องสร้างโปรเจ็กต์ใหม่เมื่อ APK ในโปรเจ็กต์ได้รับการอัปเดตภายนอก IDE Android Studio จะตรวจหาการเปลี่ยนแปลงใน APK และให้ตัวเลือกในการนำเข้าอีกครั้ง

แนบแหล่งที่มาของ APK ที่มีเฉพาะ Kotlin
ตอนนี้คุณแนบแหล่งที่มาของ APK ภายนอกที่เป็น Kotlin เท่านั้นได้แล้วเมื่อทำโปรไฟล์ และแก้ไขข้อบกพร่องของ APK ที่สร้างไว้ล่วงหน้า ดูข้อมูลเพิ่มเติมได้ที่ แนบแหล่งที่มาของ Kotlin/Java
การตรวจหาการรั่วไหลในเครื่องมือสร้างโปรไฟล์หน่วยความจำ
เมื่อวิเคราะห์การดัมพ์ฮีปใน Memory Profiler ตอนนี้คุณสามารถกรองข้อมูลการทำโปรไฟล์ที่ Android Studio คิดว่าอาจบ่งบอกถึงหน่วยความจำรั่วสำหรับอินสแตนซ์ Activity และ Fragment ในแอปได้แล้ว
ประเภทข้อมูลที่ตัวกรองแสดงมีดังนี้
-
อินสแตนซ์
Activityที่ถูกทำลายไปแล้วแต่ยังคง มีการอ้างอิงอยู่ -
Fragmentที่ไม่มีFragmentManagerแต่ยังคง มีการอ้างอิง
แนบแหล่งที่มาของ APK ที่มีเฉพาะ Kotlin
ตอนนี้คุณแนบแหล่งที่มาของ APK ภายนอกที่เป็น Kotlin เท่านั้นได้แล้วเมื่อทำโปรไฟล์ และแก้ไขข้อบกพร่องของ APK ที่สร้างไว้ล่วงหน้า ดูข้อมูลเพิ่มเติมได้ที่ แนบแหล่งที่มาของ Kotlin/Java
การตรวจหาการรั่วไหลในเครื่องมือสร้างโปรไฟล์หน่วยความจำ
เมื่อวิเคราะห์การดัมพ์ฮีปใน Memory Profiler ตอนนี้คุณสามารถกรองข้อมูลการทำโปรไฟล์ที่ Android Studio คิดว่าอาจบ่งบอกถึงหน่วยความจำรั่วสำหรับอินสแตนซ์ Activity และ Fragment ในแอปได้แล้ว
ประเภทข้อมูลที่ตัวกรองแสดงมีดังนี้
-
อินสแตนซ์
Activityที่ถูกทำลายไปแล้วแต่ยังคง มีการอ้างอิงอยู่ -
Fragmentที่ไม่มีFragmentManagerแต่ยังคงมีการอ้างอิง
ในบางสถานการณ์ เช่น สถานการณ์ต่อไปนี้ ตัวกรองอาจให้ผลลัพธ์ที่ผิดพลาด
- ระบบสร้าง
Fragmentแล้ว แต่ยังไม่ได้ใช้ - ระบบกำลังแคช
Fragmentแต่ไม่ได้แคชเป็นส่วนหนึ่งของFragmentTransaction
หากต้องการใช้ฟีเจอร์นี้ ก่อนอื่นให้ บันทึก Heap Dump หรือนำเข้าไฟล์ Heap Dump ลงใน Android Studio หากต้องการแสดง Fragment และกิจกรรมที่อาจ ทำให้หน่วยความจำรั่ว ให้เลือกช่องทำเครื่องหมายการรั่วไหลของกิจกรรม/Fragment ในแผง Heap Dump ของ Memory Profiler
การกรองฮีปดัมป์เพื่อหาหน่วยความจำรั่วไหล
โปรแกรมจำลอง
Android Studio 3.6 ช่วยให้คุณใช้ประโยชน์จากการอัปเดตหลายรายการที่รวมอยู่ใน Android Emulator 29.2.7 ขึ้นไปได้ ดังที่อธิบายไว้ด้านล่าง
ปรับปรุงการรองรับสถานที่ตั้ง
Android Emulator 29.2.7 ขึ้นไปรองรับการจำลองพิกัด GPS และข้อมูลเส้นทางเพิ่มเติม เมื่อเปิดโปรแกรมจำลอง การควบคุมเพิ่มเติม ตัวเลือกในแท็บตำแหน่งจะจัดระเบียบไว้ใน 2 แท็บ ได้แก่ จุดเดียวและเส้นทาง
คะแนนเดียว
ในแท็บจุดเดียว คุณสามารถใช้ WebView ของ Google Maps เพื่อค้นหา จุดที่น่าสนใจได้เช่นเดียวกับตอนที่ใช้ Google Maps บนโทรศัพท์หรือ เบราว์เซอร์ เมื่อค้นหาหรือคลิกตำแหน่งในแผนที่ คุณจะบันทึก ตำแหน่งได้โดยเลือก "บันทึกจุด" ที่ด้านล่างของแผนที่ สถานที่ตั้งที่บันทึกไว้ทั้งหมดจะแสดงทางด้านขวาของหน้าต่างการควบคุมเพิ่มเติม
หากต้องการตั้งค่าตำแหน่งของโปรแกรมจำลองให้เป็นตำแหน่งที่คุณเลือกบนแผนที่ ให้คลิกปุ่มตั้งค่าตำแหน่งที่ด้านล่างขวาของหน้าต่าง การควบคุมเพิ่มเติม

เส้นทาง
แท็บเส้นทางจะแสดง WebView ของ Google Maps ที่คุณใช้สร้างเส้นทางระหว่างสถานที่ 2 แห่งขึ้นไปได้ ซึ่งคล้ายกับแท็บจุดเดียว หากต้องการสร้างและบันทึกเส้นทาง ให้ทำดังนี้
- ในมุมมองแผนที่ ให้ใช้ช่องข้อความเพื่อค้นหาจุดหมายแรกใน เส้นทาง
- เลือกสถานที่จากผลการค้นหา
- เลือกปุ่มไปยังส่วนต่างๆ
- เลือกจุดเริ่มต้นของเส้นทางจากแผนที่
- (ไม่บังคับ) คลิกเพิ่มจุดหมายเพื่อเพิ่มจุดแวะพักอื่นๆ ลงในเส้นทาง
- บันทึกเส้นทางโดยคลิกบันทึกเส้นทางในมุมมองแผนที่
- ระบุชื่อเส้นทาง แล้วคลิกบันทึก
หากต้องการจำลองโปรแกรมจำลองตามเส้นทางที่คุณบันทึกไว้ ให้เลือกเส้นทางจากรายการเส้นทางที่บันทึกไว้ แล้วคลิกเล่นเส้นทางที่ด้านขวาล่างของหน้าต่างการควบคุมเพิ่มเติม หากต้องการหยุดการจำลอง ให้คลิกหยุดเส้นทาง

หากต้องการจำลองโปรแกรมจำลองอย่างต่อเนื่องตามเส้นทางที่ระบุ ให้เปิดสวิตช์ ข้างเล่นซ้ำ หากต้องการเปลี่ยนความเร็วที่โปรแกรมจำลองเคลื่อนที่ตามเส้นทางที่ระบุ ให้เลือกตัวเลือกจากเมนูแบบเลื่อนลงความเร็วในการเล่น
การรองรับหลายจอภาพ
ตอนนี้ Android Emulator ช่วยให้คุณสามารถติดตั้งใช้งานแอปในหลายจอแสดงผลได้ ซึ่งรองรับขนาดที่ปรับแต่งได้และช่วยให้คุณทดสอบแอปที่รองรับหลายหน้าต่างและหลายจอแสดงผลได้ ขณะที่อุปกรณ์เสมือนทำงานอยู่ คุณเพิ่มจอแสดงผลเพิ่มเติมได้สูงสุด 2 จอโดยทำดังนี้
-
เปิด การควบคุมเพิ่มเติม แล้วไปที่แท็บจอแสดงผล
-
เพิ่มจอแสดงผลอื่นโดยคลิกเพิ่มจอแสดงผลรอง
-
จากเมนูแบบเลื่อนลงในส่วนจอแสดงผลรอง ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
-
เลือกสัดส่วนภาพที่กำหนดไว้ล่วงหน้า
-
เลือกกำหนดเอง แล้วตั้งค่าความสูง ความกว้าง และ DPI สำหรับ จอแสดงผลที่กำหนดเอง
-
(ไม่บังคับ) คลิกเพิ่มจอแสดงผลรองเพื่อเพิ่มจอแสดงผลที่ 3
-
คลิกใช้การเปลี่ยนแปลงเพื่อเพิ่มจอแสดงผลที่ระบุลงในอุปกรณ์เสมือนที่ทำงานอยู่

อุปกรณ์เสมือนและเทมเพลตโปรเจ็กต์ใหม่สำหรับ Android Automotive OS
เมื่อสร้างโปรเจ็กต์ใหม่โดยใช้ Android Studio ตอนนี้คุณสามารถเลือกจาก เทมเพลต 3 แบบจากแท็บ Automotive ในวิซาร์ดสร้างโปรเจ็กต์ใหม่ ได้แก่ ไม่มีกิจกรรม บริการสื่อ และบริการรับส่งข้อความ สำหรับโปรเจ็กต์ที่มีอยู่ คุณสามารถเพิ่มการรองรับอุปกรณ์ Android Automotive ได้โดยเลือกไฟล์ > ใหม่ > โมดูลใหม่จากแถบเมนู แล้วเลือกโมดูลยานยนต์ จากนั้นวิซาร์ดสร้างโมดูลใหม่จะแนะนำ วิธีสร้างโมดูลใหม่โดยใช้เทมเพลตโปรเจ็กต์ Android Automotive อย่างใดอย่างหนึ่ง

นอกจากนี้ ตอนนี้คุณยังสร้างอุปกรณ์เสมือน Android (AVD) สำหรับอุปกรณ์ Android Automotive OS ได้โดยเลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้ ในแท็บ Automotive ในวิซาร์ดการกำหนดค่าอุปกรณ์เสมือน
- Polestar 2: สร้าง AVD ที่จำลองยูนิตส่วนหัวของ Polestar 2
- ยานยนต์ (แนวนอน 1024p): สร้าง AVD สำหรับยูนิตส่วนหัวของ Android Automotive ขนาด 1024 x 768 พิกเซลทั่วไป

การดาวน์โหลด SDK ที่สามารถดำเนินการต่อได้
เมื่อดาวน์โหลดคอมโพเนนต์และเครื่องมือ SDK โดยใช้ SDK Manager ตอนนี้ Android Studio จะช่วยให้คุณดาวน์โหลดต่อจากที่หยุดชะงักได้ (เช่น เนื่องจากปัญหาเกี่ยวกับเครือข่าย) แทนที่จะเริ่มดาวน์โหลดใหม่ตั้งแต่ต้น การปรับปรุงนี้มีประโยชน์อย่างยิ่งสำหรับการดาวน์โหลดขนาดใหญ่ เช่น Android Emulator หรืออิมเมจระบบ เมื่อการเชื่อมต่ออินเทอร์เน็ตไม่เสถียร
นอกจากนี้ หากคุณมีงานดาวน์โหลด SDK ที่ทำงานในเบื้องหลัง คุณจะ หยุดชั่วคราวหรือดาวน์โหลดต่อได้โดยใช้ตัวควบคุมในแถบสถานะ
งานดาวน์โหลดในพื้นหลังในแถบสถานะพร้อมตัวควบคุมใหม่ ที่ให้คุณหยุดชั่วคราวหรือดาวน์โหลดต่อได้
เลิกใช้งาน Win32 แล้ว
Android Studio เวอร์ชัน 32 บิตสำหรับ Windows จะไม่ได้รับการอัปเดตอีกต่อไป หลังจากเดือนธันวาคม 2019 และจะไม่ได้รับการสนับสนุนอีกต่อไปหลังจากเดือนธันวาคม 2020 คุณจะยังใช้ Android Studio ต่อไปได้ อย่างไรก็ตาม หากต้องการรับการอัปเดตเพิ่มเติม โปรดอัปเกรดเวิร์กสเตชันเป็น Windows เวอร์ชัน 64 บิต
ดูข้อมูลเพิ่มเติมได้ที่บล็อกเกี่ยวกับการเลิกใช้งาน Windows 32 บิต
ตัวเลือกใหม่สำหรับการเพิ่มประสิทธิภาพเวลาในการซิงค์ Gradle
ในรุ่นก่อนหน้า Android Studio จะดึงรายการงาน Gradle ทั้งหมด ระหว่างการซิงค์ Gradle สำหรับโปรเจ็กต์ขนาดใหญ่ การดึงข้อมูลรายการงานอาจทำให้ เวลาในการซิงค์ช้าลง
หากต้องการปรับปรุงประสิทธิภาพการซิงค์ Gradle ให้ไปที่ไฟล์ > การตั้งค่า > ฟีเจอร์ทดลอง แล้วเลือก "อย่าสร้างรายการงาน Gradle ระหว่างการซิงค์ Gradle"
เมื่อเปิดใช้ตัวเลือกนี้ Android Studio จะข้ามการสร้างรายการงานระหว่างการซิงค์ ซึ่งจะช่วยให้การซิงค์ Gradle เสร็จเร็วขึ้นและปรับปรุงการตอบสนองของ UI โปรดทราบว่าเมื่อ IDE ข้ามการสร้างรายการงาน รายการงานในแผง Gradle จะว่างเปล่า และการเติมข้อความอัตโนมัติของชื่องานในไฟล์บิลด์จะใช้ไม่ได้
ตำแหน่งใหม่สำหรับเปิด/ปิดโหมดออฟไลน์ของ Gradle
หากต้องการเปิดหรือปิดโหมดออฟไลน์ของ Gradle ให้เลือกดู > หน้าต่างเครื่องมือ > Gradle จากแถบเมนูก่อน จากนั้นคลิกสลับโหมดออฟไลน์
ที่ด้านบนของหน้าต่าง Gradle
IntelliJ IDEA 2019.2
เราได้อัปเดต IDE หลักของ Android Studio ด้วยการปรับปรุงจาก IntelliJ IDEA ผ่านรุ่น 2019.2
ดูข้อมูลเพิ่มเติมเกี่ยวกับการปรับปรุงจาก IntelliJ เวอร์ชันอื่นๆ ที่รวมไว้กับเวอร์ชัน 2019.2 ได้ที่หน้าต่อไปนี้
ผู้ร่วมให้ข้อมูลในชุมชน
ขอขอบคุณผู้มีส่วนร่วมในชุมชนทุกท่านที่ช่วยเราค้นพบข้อบกพร่อง และวิธีอื่นๆ ในการปรับปรุง Android Studio 3.6 โดยเฉพาะอย่างยิ่ง เราขอขอบคุณบุคคลต่อไปนี้ที่รายงานข้อบกพร่อง
|
|
|
|
3.5 (สิงหาคม 2019)
Android Studio 3.5 เป็นรุ่นหลักและเป็นผลลัพธ์ของ Project Marble ตั้งแต่การเปิดตัว Android Studio 3.3 เป็นต้นมา โครงการริเริ่ม Project Marble ได้ครอบคลุมการเปิดตัวหลายครั้งที่มุ่งเน้นการ ปรับปรุง 3 ด้านหลักของ IDE ได้แก่ การทำงานที่มีประสิทธิภาพของระบบ การปรับปรุงฟีเจอร์ และการแก้ไขข้อบกพร่อง
ดูข้อมูลเกี่ยวกับการอัปเดต Project Marble เหล่านี้และอื่นๆ ได้ใน บล็อกโพสต์ของนักพัฒนาแอป Android หรือส่วนต่างๆ ด้านล่าง
นอกจากนี้ เราขอขอบคุณผู้ร่วมให้ข้อมูลในชุมชนทุกท่านที่ช่วยเราในการเปิดตัวครั้งนี้
3.5.3 (ธันวาคม 2019)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพต่างๆ
3.5.2 (พฤศจิกายน 2019)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพต่างๆ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
3.5.1 (ตุลาคม 2019)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพต่างๆ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
Project Marble: สถานะของระบบ
ส่วนนี้อธิบายการเปลี่ยนแปลงใน Android Studio 3.5 ที่มุ่งเน้นการปรับปรุงประสิทธิภาพของระบบ
การตั้งค่าความทรงจำที่แนะนำ
ตอนนี้ Android Studio จะแจ้งให้คุณทราบหากตรวจพบว่าคุณสามารถปรับปรุงประสิทธิภาพได้ โดยการเพิ่มจำนวน RAM สูงสุดที่ระบบปฏิบัติการควรจัดสรรให้แก่กระบวนการของ Android Studio เช่น IDE หลัก, Gradle Daemon และ Kotlin Daemon คุณ จะยอมรับการตั้งค่าที่แนะนำโดยคลิกลิงก์การดำเนินการในการ แจ้งเตือน หรือจะปรับการตั้งค่าเหล่านี้ด้วยตนเองโดยเลือก File > Settings (หรือ Android Studio > Preferences ใน macOS) แล้วค้นหาส่วนการตั้งค่าหน่วยความจำในส่วน Appearance & Behavior > System Settings ดูข้อมูลเพิ่มเติมได้ที่ขนาดฮีปสูงสุด
การแจ้งเตือนเกี่ยวกับการตั้งค่าหน่วยความจำที่แนะนำ
รายงานการใช้หน่วยความจำ
บางครั้งปัญหาเกี่ยวกับหน่วยความจำใน Android Studio ก็จำลองและรายงานได้ยาก Android Studio ช่วยให้คุณสร้างรายงานการใช้หน่วยความจำได้โดยคลิกความช่วยเหลือ > วิเคราะห์การใช้หน่วยความจำจากแถบเมนู เมื่อคุณทำเช่นนั้น IDE จะปรับแต่งข้อมูลในเครื่องเพื่อปกปิดข้อมูลส่วนบุคคลก่อน ถามว่าคุณต้องการส่งข้อมูลดังกล่าวให้ทีม Android Studio เพื่อช่วยระบุ แหล่งที่มาของปัญหาเกี่ยวกับหน่วยความจำหรือไม่ ดูข้อมูลเพิ่มเติมได้ที่เรียกใช้รายงานการใช้หน่วยความจำ
รายงานการใช้งานหน่วยความจำ
Windows: การเพิ่มประสิทธิภาพ I/O ของไฟล์ในโปรแกรมป้องกันไวรัส
ตอนนี้ Android Studio จะตรวจสอบโดยอัตโนมัติว่าไดเรกทอรีโปรเจ็กต์บางรายการ ได้รับการยกเว้นจากการสแกนไวรัสแบบเรียลไทม์หรือไม่ เมื่อมีการปรับเปลี่ยนเพื่อ ปรับปรุงประสิทธิภาพของบิลด์ Android Studio จะแจ้งให้คุณทราบและแสดงวิธีการ เพิ่มประสิทธิภาพการกำหนดค่าโปรแกรมป้องกันไวรัส ดูข้อมูลเพิ่มเติมได้ที่ ลดผลกระทบของซอฟต์แวร์ป้องกันไวรัสต่อความเร็วในการบิลด์
Project Marble: การปรับปรุงฟีเจอร์
ส่วนนี้อธิบายการเปลี่ยนแปลงใน Android Studio 3.5 ที่มุ่งเน้นการปรับปรุงฟีเจอร์ที่มีอยู่
ใช้การเปลี่ยนแปลง
ฟีเจอร์ "ใช้การเปลี่ยนแปลง" ช่วยให้คุณพุชการเปลี่ยนแปลงโค้ดและทรัพยากรไปยังแอปที่กําลังทํางานได้ โดยไม่ต้องรีสตาร์ทแอป และในบางกรณีก็ไม่ต้องรีสตาร์ทกิจกรรมปัจจุบันด้วย "ใช้การเปลี่ยนแปลง" จะใช้แนวทางใหม่ทั้งหมดในการรักษา สถานะของแอป ฟีเจอร์ใช้การเปลี่ยนแปลงจะกำหนดคลาสใหม่ได้ทันทีโดยใช้ประโยชน์จากการตรวจสอบรันไทม์ที่รองรับใน Android 8.0 (API ระดับ 26) ขึ้นไป ซึ่งแตกต่างจาก Instant Run ที่เขียนไบต์โค้ดของ APK ใหม่
ดูข้อมูลเพิ่มเติมได้ที่ใช้การเปลี่ยนแปลง
ปุ่มในแถบเครื่องมือสำหรับฟีเจอร์ "ใช้การเปลี่ยนแปลง"
ขั้นตอนการติดตั้งใช้งานแอป
IDE มีเมนูแบบเลื่อนลงใหม่ที่ช่วยให้คุณเลือกอุปกรณ์ที่ต้องการ นําแอปไปใช้งานได้อย่างรวดเร็ว เมนูนี้ยังมีตัวเลือกใหม่ที่ให้คุณ เรียกใช้แอปในอุปกรณ์หลายเครื่องพร้อมกันได้ด้วย
เมนูแบบเลื่อนลงของอุปกรณ์เป้าหมาย
ปรับปรุงการซิงค์ Gradle และการตรวจหาแคช
ตอนนี้ IDE จะตรวจหาได้ดีขึ้นเมื่อ Gradle ล้างแคชการบิลด์เป็นระยะๆ เพื่อ ลดการใช้ฮาร์ดดิสก์ ในเวอร์ชันก่อนหน้า สถานะนี้ทำให้ IDE รายงานการขึ้นต่อกันที่ขาดหายไปและทำให้การซิงค์ Gradle ไม่สำเร็จ ตอนนี้ IDE จะดาวน์โหลดทรัพยากร Dependency ตามที่จำเป็นเพื่อให้การซิงค์ Gradle เสร็จสมบูรณ์ เรียบร้อยแล้ว
ปรับปรุงเอาต์พุตข้อผิดพลาดในการบิลด์
ตอนนี้หน้าต่างบิลด์
มีการรายงานข้อผิดพลาดที่ดีขึ้น เช่น ลิงก์ไปยังไฟล์และบรรทัด
ของข้อผิดพลาดที่รายงาน สำหรับกระบวนการบิลด์ต่อไปนี้
- การคอมไพล์และการลิงก์ AAPT
- R8 และ ProGuard
- Dexing
- การผสานทรัพยากร
- การแยกวิเคราะห์ไฟล์ XML
- การคอมไพล์ Javac, Kotlinc และ CMake
การอัปเกรดโปรเจ็กต์
ปรับปรุงประสบการณ์การอัปเดตเพื่อให้ข้อมูลและการดำเนินการเพิ่มเติมเพื่อช่วยคุณ อัปเดต IDE และปลั๊กอิน Android Gradle เช่น ข้อผิดพลาดในการซิงค์และบิลด์เพิ่มเติม รวมถึงการดำเนินการที่จะช่วยลดข้อผิดพลาดเมื่ออัปเดต
โปรดทราบว่าคุณสามารถอัปเดต IDE แยกจากคอมโพเนนต์อื่นๆ เช่น ปลั๊กอิน Android Gradle ได้ ดังนั้น คุณจึงอัปเดต IDE ได้อย่างปลอดภัยทันทีที่เวอร์ชันใหม่กว่าพร้อมใช้งาน และอัปเดตคอมโพเนนต์อื่นๆ ในภายหลัง
เครื่องมือสร้างเลย์เอาต์
Android Studio 3.5 มีการปรับปรุงการแสดงภาพเลย์เอาต์ การจัดการ และการโต้ตอบหลายอย่าง
เมื่อทำงานกับ ConstraintLayout ส่วนข้อจำกัดใหม่ในแผงแอตทริบิวต์จะแสดงความสัมพันธ์ของข้อจำกัดของ
คอมโพเนนต์ UI ที่เลือก คุณเลือกข้อจำกัดได้จากทั้งพื้นที่ออกแบบ
หรือจากรายการข้อจำกัดเพื่อไฮไลต์ข้อจำกัดในทั้ง 2 พื้นที่
ความสัมพันธ์ของข้อจํากัดสําหรับองค์ประกอบ UI ที่เลือก
ในทำนองเดียวกัน ตอนนี้คุณสามารถลบข้อจำกัดได้โดยเลือกข้อจำกัดแล้วกดปุ่ม
Delete นอกจากนี้ คุณยังลบข้อจำกัดได้โดยกดปุ่ม
Control (Command ใน macOS) ค้างไว้ แล้วคลิกที่จุดยึดของ
ข้อจำกัด โปรดทราบว่าเมื่อกดปุ่ม Control หรือ
Command ค้างไว้และวางเมาส์เหนือจุดยึด ข้อจำกัดที่เกี่ยวข้อง
จะเปลี่ยนเป็นสีแดงเพื่อระบุว่าคุณคลิกเพื่อลบได้
เมื่อเลือกมุมมองแล้ว คุณจะสร้างข้อจํากัดได้โดยคลิกไอคอน + ในส่วนวิดเจ็ตข้อจํากัดของแผงแอตทริบิวต์ ดังที่แสดงในรูปภาพต่อไปนี้ เมื่อสร้างข้อจำกัดใหม่ ตอนนี้เครื่องมือสร้างเลย์เอาต์ จะเลือกและไฮไลต์ข้อจำกัด ซึ่งช่วยให้เห็นผลลัพธ์ ทันทีสำหรับสิ่งที่คุณเพิ่งเพิ่ม
การใช้วิดเจ็ตข้อจำกัดเพื่อสร้างข้อจำกัด
เมื่อสร้างข้อจำกัด ตอนนี้เครื่องมือสร้างเลย์เอาต์จะแสดงเฉพาะจุดยึดที่มีสิทธิ์ ซึ่งคุณสามารถจำกัดได้ ก่อนหน้านี้เครื่องมือสร้างเลย์เอาต์จะไฮไลต์จุดยึดทั้งหมด ในทุกมุมมอง ไม่ว่าคุณจะจำกัดจุดยึดเหล่านั้นได้หรือไม่ก็ตาม นอกจากนี้ ตอนนี้การวางซ้อนสีน้ำเงินจะไฮไลต์เป้าหมายของข้อจํากัด การไฮไลต์นี้มีประโยชน์อย่างยิ่งเมื่อพยายามจำกัดให้เหลือเฉพาะคอมโพเนนต์ที่ซ้อนทับกับคอมโพเนนต์อื่น
การสร้างข้อจำกัดสำหรับคอมโพเนนต์ที่ทับซ้อนกันใน Android Studio 3.4
การสร้างข้อจำกัดสำหรับคอมโพเนนต์ที่ซ้อนทับกันใน Android Studio 3.5
นอกจากข้อมูลอัปเดตข้างต้นแล้ว Android Studio 3.5 ยังมีการปรับปรุงเครื่องมือสร้างเลย์เอาต์ดังต่อไปนี้ด้วย
- ตอนนี้วิดเจ็ตข้อจำกัดและเมนูแบบเลื่อนลงของระยะขอบเริ่มต้น อนุญาตให้คุณใช้ทรัพยากรมิติข้อมูลสำหรับระยะขอบได้แล้ว
- ในแถบเครื่องมือของเครื่องมือแก้ไขเลย์เอาต์ เราได้อัปเดตรายการอุปกรณ์ที่กำหนดขนาดของ พื้นที่ออกแบบแล้ว นอกจากนี้ เรายังปรับปรุงลักษณะการทำงานของการสแนปขณะ ปรับขนาด และตอนนี้แฮนเดิลปรับขนาดในพื้นที่ออกแบบจะ แสดงอยู่เสมอ เมื่อปรับขนาด ภาพซ้อนทับใหม่จะปรากฏขึ้นเพื่อแสดงขนาดอุปกรณ์ทั่วไป
- เครื่องมือสร้างเลย์เอาต์มีรูปแบบสีใหม่ที่ช่วยปรับปรุงความสอดคล้องและลด คอนทราสต์ระหว่างคอมโพเนนต์ ข้อความ และข้อจำกัด
- ตอนนี้โหมดพิมพ์เขียวรองรับข้อความสำหรับคอมโพเนนต์บางอย่างที่ไม่ได้แสดงข้อความ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงเหล่านี้ได้ที่ Project Marble ของ Android Studio: เครื่องมือสร้างเลย์เอาต์
การเชื่อมโยงข้อมูล
นอกเหนือจากการเพิ่มการรองรับการประมวลผลคำอธิบายประกอบแบบเพิ่มทีละรายการ สำหรับการเชื่อมโยงข้อมูลแล้ว IDE ยังปรับปรุงฟีเจอร์และประสิทธิภาพของเครื่องมือแก้ไขอัจฉริยะ เมื่อสร้างนิพจน์การเชื่อมโยงข้อมูลใน XML
ประสิทธิภาพของตัวแก้ไขโค้ดใน Android Studio 3.4
ประสิทธิภาพการแก้ไขโค้ดที่ดียิ่งขึ้นใน Android Studio 3.5
ปรับปรุงการรองรับโปรเจ็กต์ C/C++
Android Studio 3.5 มีการเปลี่ยนแปลงหลายอย่างที่ช่วยปรับปรุงการรองรับโปรเจ็กต์ C/C++
การปรับปรุงแผงตัวแปรบิลด์สำหรับการซิงค์ตัวแปรเดียว
ตอนนี้คุณระบุทั้งตัวแปรบิลด์ที่ใช้งานอยู่และ ABI ที่ใช้งานอยู่ได้ในแผงตัวแปรบิลด์ ฟีเจอร์นี้ช่วยลดความซับซ้อนในการกำหนดค่าบิลด์ต่อโมดูล และยังช่วยปรับปรุงประสิทธิภาพการซิงค์ Gradle ได้อีกด้วย
ดูข้อมูลเพิ่มเติมได้ที่เปลี่ยนตัวแปรบิลด์
แผงตัวแปรบิลด์ที่มีการเลือกรูปแบบเดียวตาม ABI
NDK เวอร์ชันที่ติดตั้งควบคู่กัน
ตอนนี้คุณใช้ NDK หลายเวอร์ชันควบคู่กันได้แล้ว ฟีเจอร์นี้ช่วยให้คุณมีความยืดหยุ่นมากขึ้นเมื่อกำหนดค่าโปรเจ็กต์ เช่น หากคุณมีโปรเจ็กต์ที่ใช้ NDK เวอร์ชันต่างๆ ในเครื่องเดียวกัน
หากโปรเจ็กต์ใช้ปลั๊กอิน Android Gradle 3.5.0 ขึ้นไป คุณยังระบุ เวอร์ชันของ NDK ที่แต่ละโมดูลในโปรเจ็กต์ควรใช้ได้ด้วย คุณใช้ฟีเจอร์นี้เพื่อสร้างบิลด์ที่ทำซ้ำได้และเพื่อลดปัญหาความไม่เข้ากัน ระหว่าง NDK เวอร์ชันต่างๆ กับปลั๊กอิน Android Gradle ได้
ดูข้อมูลเพิ่มเติมได้ที่ติดตั้งและกำหนดค่า NDK, CMake และ LLDB
การสนับสนุน ChromeOS
ตอนนี้ Android Studio รองรับอุปกรณ์ ChromeOS อย่างเป็นทางการแล้ว เช่น HP Chromebook x360 14, Acer Chromebook 13/Spin 13 และอื่นๆ ที่คุณอ่านได้ ในข้อกำหนดของระบบ หากต้องการเริ่มต้นใช้งาน ให้ดาวน์โหลด Android Studio ในอุปกรณ์ ChromeOS ที่รองรับ แล้วทำตามวิธีการติดตั้ง
หมายเหตุ: ขณะนี้ Android Studio ใน ChromeOS รองรับการติดตั้งใช้งานแอปกับ อุปกรณ์ฮาร์ดแวร์ที่เชื่อมต่อเท่านั้น ดูข้อมูลเพิ่มเติมได้ที่ เรียกใช้แอปในอุปกรณ์ ฮาร์ดแวร์
การนำส่งตามเงื่อนไขสำหรับโมดูลฟีเจอร์
การนำส่งแบบมีเงื่อนไขช่วยให้คุณตั้งค่าข้อกำหนดการกำหนดค่าอุปกรณ์บางอย่าง เพื่อให้ระบบดาวน์โหลดโมดูลฟีเจอร์โดยอัตโนมัติในระหว่างการติดตั้งแอปได้ เช่น คุณสามารถกำหนดค่าโมดูลฟีเจอร์ที่มี ฟังก์ชันการทำงานสำหรับเทคโนโลยีความจริงเสริม (AR) ให้พร้อมใช้งานเมื่อติดตั้งแอปสำหรับ อุปกรณ์ที่รองรับ AR เท่านั้น
ปัจจุบันกลไกการนำส่งนี้รองรับการควบคุมการดาวน์โหลดโมดูล ในเวลาที่ติดตั้งแอปตามการกำหนดค่าอุปกรณ์ต่อไปนี้
- ฟีเจอร์ฮาร์ดแวร์และซอฟต์แวร์ของอุปกรณ์ รวมถึงเวอร์ชัน OpenGL ES
- ประเทศของผู้ใช้
- ระดับ API
หากอุปกรณ์ไม่เป็นไปตามข้อกำหนดทั้งหมดที่คุณระบุ ระบบจะไม่ดาวน์โหลดโมดูล ในเวลาที่ติดตั้งแอป อย่างไรก็ตาม แอปของคุณอาจขอดาวน์โหลดโมดูลตามคำขอในภายหลังโดยใช้ไลบรารี Play Core ดูข้อมูลเพิ่มเติมได้ที่กำหนดค่าการนำส่งแบบมีเงื่อนไข
IntelliJ IDEA 2019.1
เราได้อัปเดต IDE หลักของ Android Studio ด้วยการปรับปรุงจาก IntelliJ IDEA ผ่านรุ่น 2019.1 เช่น การปรับแต่งธีม
IntelliJ เวอร์ชันล่าสุดที่รวมอยู่ใน Android Studio คือ 2018.3.4 ดูข้อมูลเพิ่มเติมเกี่ยวกับการปรับปรุงจาก IntelliJ เวอร์ชันอื่นๆ ซึ่งรวมอยู่ในการเปิดตัว Android Studio เวอร์ชันนี้ด้วย ได้ที่ข้อมูลอัปเดตการแก้ไขข้อบกพร่องต่อไปนี้
- IntelliJ IDEA 2018.3.6{: .external-link}
- IntelliJ IDEA 2018.3.5{: .external-link}
การอัปเดตปลั๊กอิน Android Gradle 3.5.0
ดูข้อมูลเกี่ยวกับฟีเจอร์ใหม่ในปลั๊กอิน Android Gradle 3.5.0 เช่น การรองรับการประมวลผลคำอธิบายประกอบแบบเพิ่มทีละรายการและการทำ Unit Test ที่แคชได้ที่บันทึกประจำรุ่น
ผู้ร่วมให้ข้อมูลในชุมชน
ขอขอบคุณผู้ร่วมให้ข้อมูลในชุมชนทุกท่านที่ช่วยเราค้นพบข้อบกพร่อง และวิธีอื่นๆ ในการปรับปรุง Android Studio 3.5 โดยเฉพาะอย่างยิ่ง เราขอขอบคุณบุคคลต่อไปนี้ที่รายงานข้อบกพร่องระดับ P0 และ P1
|
|
|
3.4 (เมษายน 2019)
Android Studio 3.4 เป็นรุ่นหลักที่มีฟีเจอร์ใหม่ๆ และการปรับปรุงมากมาย
3.4.2 (กรกฎาคม 2019)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพต่างๆ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
3.4.1 (พฤษภาคม 2019)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพต่างๆ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
ปัญหาที่ทราบในเวอร์ชัน 3.4.0
การสร้างโปรไฟล์จะปิดใช้เมื่อติดตั้งใช้งานแอปในอุปกรณ์ ที่ใช้ Android Q เบต้า
- เมื่อใช้ Data Binding Library
LiveDataListener.onChanged()อาจล้มเหลวด้วย NPE การแก้ไข ปัญหานี้จะรวมอยู่ใน Android Studio 3.4.1 และพร้อมใช้งานแล้ว ในเวอร์ชันตัวอย่างล่าสุด ของ Android Studio 3.5 (ดู ปัญหา #122066788)
IntelliJ IDEA 2018.3.4
เราได้อัปเดต IDE หลักของ Android Studio ด้วยการปรับปรุงจาก IntelliJ IDEA ผ่านรุ่น 2018.3.4
ข้อมูลอัปเดตปลั๊กอิน Android Gradle 3.4.0
ดูข้อมูลเกี่ยวกับฟีเจอร์ใหม่ในปลั๊กอิน Android Gradle 3.4.0 ได้ที่บันทึกประจำรุ่น
กล่องโต้ตอบโครงสร้างโปรเจ็กต์ใหม่
กล่องโต้ตอบโครงสร้างโปรเจ็กต์ใหม่ (PSD) ช่วยให้คุณอัปเดต การอ้างอิงและกำหนดค่าแง่มุมต่างๆ ของโปรเจ็กต์ได้ง่ายขึ้น เช่น โมดูล ตัวแปรบิลด์ การกำหนดค่าการลงนาม และตัวแปรบิลด์
คุณเปิด PSD ได้โดยเลือกไฟล์ > โครงสร้างโปรเจ็กต์จากแถบเมนู
นอกจากนี้ คุณยังเปิด PSD ได้โดยกด Ctrl+Shift+Alt+S ใน Windows และ
Linux หรือ Command+; (เครื่องหมายอัฒภาค) ใน macOS คุณสามารถดูคำอธิบายของส่วนใหม่และส่วนที่อัปเดตบางส่วนของ PSD ได้ที่ด้านล่าง
ตัวแปร
ส่วนตัวแปรใหม่ของ PSD ช่วยให้คุณสร้างและจัดการตัวแปรบิลด์ ได้ เช่น ตัวแปรที่ใช้เก็บหมายเลขเวอร์ชันของ Dependency ให้สอดคล้องกัน ในโปรเจ็กต์

- ดูและแก้ไขตัวแปรบิลด์ที่มีอยู่ในสคริปต์บิลด์ Gradle ของโปรเจ็กต์อย่างรวดเร็ว
- เพิ่มตัวแปรบิลด์ใหม่ที่ระดับโปรเจ็กต์หรือโมดูลโดยตรงจาก PSD
หมายเหตุ: หากไฟล์การกำหนดค่าบิลด์ที่มีอยู่กำหนดค่า ผ่านสคริปต์ Groovy ที่ซับซ้อน คุณอาจแก้ไขค่าเหล่านั้น ผ่าน PSD ไม่ได้ นอกจากนี้ คุณยังแก้ไขไฟล์บิลด์ที่เขียนด้วย Kotlin โดยใช้ PSD ไม่ได้
โมดูล
กำหนดค่าพร็อพเพอร์ตี้ที่จะใช้กับตัวแปรบิลด์ทั้งหมดในโมดูลที่มีอยู่
หรือเพิ่มโมดูลใหม่ลงในโปรเจ็กต์จากส่วนโมดูล เช่น คุณสามารถกําหนดค่าพร็อพเพอร์ตี้ defaultConfig หรือจัดการการกําหนดค่าการลงนามได้ที่นี่
การขึ้นต่อกัน
ตรวจสอบและแสดงภาพการขึ้นต่อกันแต่ละรายการในกราฟการขึ้นต่อกันของ โปรเจ็กต์ตามที่ Gradle แก้ไขระหว่างการซิงค์โปรเจ็กต์โดยทำตามขั้นตอนต่อไปนี้
- เลือกการขึ้นต่อกันในแผงด้านซ้ายของ PSD
- ในแผงโมดูล ให้เลือกโมดูลที่ต้องการตรวจสอบ การอ้างอิงที่แก้ไขแล้ว
- ทางด้านขวาของ PSD ให้เปิดบานหน้าต่างการอ้างอิงที่แก้ไขแล้ว ซึ่ง แสดงอยู่ด้านล่าง

นอกจากนี้ คุณยังค้นหาและเพิ่มการอ้างอิงลงในโปรเจ็กต์ได้อย่างรวดเร็วโดยเริ่มจาก เลือกโมดูลจากส่วนการอ้างอิงของ PSD แล้วคลิก ปุ่ม (+) ในส่วนการอ้างอิงที่ประกาศ และเลือกประเภท ของการอ้างอิงที่ต้องการเพิ่ม
คุณควรเห็นกล่องโต้ตอบที่คล้ายกับกล่องโต้ตอบด้านล่าง ซึ่งจะช่วยให้คุณเพิ่มการอ้างอิงลงในโมดูลได้ ทั้งนี้ขึ้นอยู่กับประเภทของการอ้างอิงที่คุณเลือก

ตัวแปรบิลด์
ในส่วนนี้ของ PSD ให้สร้างและกำหนดค่าตัวแปรบิลด์และรสชาติของผลิตภัณฑ์ สำหรับแต่ละโมดูลในโปรเจ็กต์ คุณสามารถเพิ่มตัวยึดตำแหน่งของไฟล์ Manifest, เพิ่มไฟล์ ProGuard, กำหนดคีย์การลงนาม และอื่นๆ

คำแนะนำ
ดูการอัปเดตที่แนะนำสำหรับทรัพยากร Dependency ของโปรเจ็กต์และตัวแปรการสร้างได้ในส่วนคำแนะนำตามที่แสดงด้านล่าง

เครื่องมือจัดการทรัพยากรใหม่
Resource Manager เป็นหน้าต่างเครื่องมือใหม่สำหรับการนำเข้า สร้าง จัดการ และ ใช้ทรัพยากรในแอป คุณสามารถเปิดหน้าต่างเครื่องมือได้โดยเลือกดู > หน้าต่างเครื่องมือ > Resource Manager จากแถบเมนู Resource Manager ช่วยให้คุณทำสิ่งต่อไปนี้ได้

- แสดงภาพทรัพยากร: คุณสามารถดูตัวอย่าง Drawable, สี และเลย์เอาต์เพื่อ ค้นหาทรัพยากรที่ต้องการได้อย่างรวดเร็ว
- การนำเข้าหลายรายการ: คุณสามารถนำเข้าชิ้นงาน Drawable หลายรายการพร้อมกันได้โดย ลากและวางลงในหน้าต่างเครื่องมือตัวจัดการทรัพยากร หรือ ใช้ตัวช่วยสร้างนำเข้า Drawable หากต้องการเข้าถึงวิซาร์ด ให้เลือกปุ่ม (+) ที่มุมซ้ายบนของหน้าต่างเครื่องมือ แล้วเลือกนำเข้า Drawable จากเมนูแบบเลื่อนลง
-
แปลง SVG เป็นออบเจ็กต์
VectorDrawable: คุณสามารถใช้ วิซาร์ดนำเข้า Drawable เพื่อแปลงรูปภาพ SVG เป็นออบเจ็กต์VectorDrawableได้ - ลากและวางชิ้นงาน: จากหน้าต่างเครื่องมือเครื่องมือจัดการทรัพยากร คุณสามารถ ลากและวาง Drawable ลงในทั้งมุมมองการออกแบบและมุมมอง XML ของ Layout Editor
- ดูเวอร์ชันอื่น: ตอนนี้คุณสามารถดูเวอร์ชันอื่นของ ทรัพยากรได้โดยดับเบิลคลิกทรัพยากรภายในหน้าต่างเครื่องมือ มุมมองนี้ แสดงเวอร์ชันต่างๆ ที่คุณสร้างขึ้นและตัวระบุที่รวมอยู่
- มุมมองแบบไทล์และแบบรายการ: คุณเปลี่ยนมุมมองภายในหน้าต่างเครื่องมือเพื่อ แสดงภาพทรัพยากรในรูปแบบต่างๆ ได้
ดูข้อมูลเพิ่มเติมได้ในคำแนะนำเกี่ยวกับวิธี จัดการทรัพยากรของแอป
ตรวจสอบรหัสบิลด์เมื่อทำโปรไฟล์และแก้ไขข้อบกพร่องของ APK
เมื่อคุณระบุไฟล์สัญลักษณ์การแก้ไขข้อบกพร่องสำหรับ.soไลบรารีที่แชร์ภายใน
APK ของคุณ Android Studio จะตรวจสอบว่ารหัสบิลด์ของไฟล์สัญลักษณ์ที่ระบุตรงกับรหัสบิลด์ของ.soไลบรารีภายใน APK หรือไม่
หากคุณสร้างไลบรารีที่มาพร้อมเครื่องใน APK ด้วยรหัสบิลด์ Android Studio จะตรวจสอบว่ารหัสบิลด์ในไฟล์สัญลักษณ์ตรงกับรหัสบิลด์ใน ไลบรารีที่มาพร้อมเครื่องหรือไม่ และจะปฏิเสธไฟล์สัญลักษณ์หากไม่ตรงกัน หากคุณไม่ได้สร้างด้วย Build ID การระบุไฟล์สัญลักษณ์ที่ไม่ถูกต้องอาจทำให้เกิดปัญหาในการแก้ไขข้อบกพร่อง
เปิดใช้ R8 โดยค่าเริ่มต้น
R8 ผสานรวมการยกเลิกการลดรูป การลดขนาด การปกปิดโค้ด การเพิ่มประสิทธิภาพ และการแปลงเป็น DEX ทั้งหมดในขั้นตอนเดียว ซึ่งส่งผลให้ประสิทธิภาพการบิลด์ดีขึ้นอย่างเห็นได้ชัด R8 เปิดตัวในปลั๊กอิน Android Gradle 3.3.0 และ ตอนนี้เปิดใช้โดยค่าเริ่มต้นสำหรับทั้งแอปและโปรเจ็กต์ไลบรารี Android ที่ใช้ ปลั๊กอิน 3.4.0 ขึ้นไป
รูปภาพด้านล่างแสดงภาพรวมระดับสูงของกระบวนการคอมไพล์ ก่อนที่จะมีการเปิดตัว R8

ตอนนี้ R8 จะดำเนินการ Desugaring, การลดขนาด, การปกปิดโค้ด, การเพิ่มประสิทธิภาพ และการแปลงเป็น DEX (D8) ทั้งหมดในขั้นตอนเดียว ดังที่แสดงด้านล่าง

โปรดทราบว่า R8 ออกแบบมาให้ทำงานร่วมกับกฎ ProGuard ที่มีอยู่แล้ว ดังนั้น คุณจึงไม่จำเป็นต้องดำเนินการใดๆ เพื่อรับประโยชน์จาก R8 อย่างไรก็ตาม เนื่องจากเป็นเทคโนโลยีที่แตกต่างจาก ProGuard ซึ่งออกแบบมาสำหรับโปรเจ็กต์ Android โดยเฉพาะ การลดขนาดและการเพิ่มประสิทธิภาพจึงอาจส่งผลให้มีการนำโค้ดที่ ProGuard อาจไม่ได้นำออก ดังนั้น ในกรณีที่ไม่น่าจะเกิดขึ้นนี้ คุณอาจต้อง เพิ่มกฎเพิ่มเติมเพื่อให้โค้ดนั้นอยู่ในเอาต์พุตบิลด์
หากพบปัญหาในการใช้ R8 โปรดอ่านคำถามที่พบบ่อยเกี่ยวกับความเข้ากันได้ของ R8
เพื่อดูว่ามีวิธีแก้ปัญหาของคุณหรือไม่ หากไม่มีการบันทึกโซลูชัน
โปรดรายงานข้อบกพร่อง
คุณปิดใช้ R8 ได้โดยเพิ่มบรรทัดต่อไปนี้บรรทัดใดบรรทัดหนึ่งลงในไฟล์
gradle.properties ของโปรเจ็กต์
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
หมายเหตุ: สำหรับประเภทบิลด์ที่กำหนด หากคุณตั้งค่า
useProguard เป็น false ในไฟล์ build.gradle ของโมดูลแอป
ปลั๊กอิน Android Gradle จะใช้ R8 เพื่อลดขนาดโค้ดของแอป
สำหรับประเภทบิลด์นั้น ไม่ว่าคุณจะปิดใช้ R8 ในไฟล์ gradle.properties ของโปรเจ็กต์หรือไม่ก็ตาม
ตอนนี้ Navigation Editor รองรับอาร์กิวเมนต์ทุกประเภทแล้ว
ตอนนี้ Navigation Editor รองรับอาร์กิวเมนต์ทุกประเภทที่คอมโพเนนต์การนำทางรองรับแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่รองรับได้ที่ ส่งข้อมูลระหว่างปลายทาง
การปรับปรุงเครื่องมือสร้างเลย์เอาต์ {:#layout-editor}
เราได้ปรับปรุงบานหน้าต่างแอตทริบิวต์ในเครื่องมือสร้างเลย์เอาต์ให้เป็นหน้าเดียว ที่มีส่วนต่างๆ ซึ่งคุณขยายเพื่อดูแอตทริบิวต์ที่กำหนดค่าได้ แผงแอตทริบิวต์ยังมีการอัปเดตต่อไปนี้ด้วย
- ส่วนแอตทริบิวต์ที่ประกาศใหม่จะแสดงแอตทริบิวต์ที่ไฟล์เลย์เอาต์ ระบุและช่วยให้คุณเพิ่มแอตทริบิวต์ใหม่ได้อย่างรวดเร็ว
- ตอนนี้บานหน้าต่างแอตทริบิวต์ยังมีตัวบ่งชี้ข้างแอตทริบิวต์แต่ละรายการ ซึ่งจะเป็นสีทึบเมื่อค่าของแอตทริบิวต์เป็นการอ้างอิงทรัพยากร และว่าง ในกรณีอื่นๆ
- ตอนนี้เราจะไฮไลต์แอตทริบิวต์ที่มีข้อผิดพลาดหรือคำเตือนแล้ว การไฮไลต์สีแดง แสดงข้อผิดพลาด (เช่น เมื่อคุณใช้ค่าเลย์เอาต์ที่ไม่ถูกต้อง) และ การไฮไลต์สีส้มแสดงคำเตือน (เช่น เมื่อคุณใช้ค่าที่ฮาร์ดโค้ด ไว้)
การดำเนินการตามความตั้งใจใหม่เพื่อนำเข้าการอ้างอิงอย่างรวดเร็ว
หากคุณเริ่มใช้คลาส Jetpack และ Firebase บางคลาสในโค้ด การดำเนินการตั้งใจใหม่จะแนะนำให้เพิ่มการอ้างอิงไลบรารี Gradle ที่จำเป็นลงในโปรเจ็กต์ หากคุณยังไม่ได้ดำเนินการดังกล่าว ตัวอย่างเช่น หากคุณอ้างอิงคลาส WorkManager โดยไม่ได้นำเข้าการอ้างอิง android.arch.work:work-runtime ที่จำเป็นก่อน การดำเนินการตั้งใจจะช่วยให้คุณทำเช่นนั้นได้อย่างง่ายดายในคลิกเดียว ดังที่แสดงด้านล่าง

โดยเฉพาะอย่างยิ่งเนื่องจาก Jetpack ได้จัดแพ็กเกจไลบรารีการสนับสนุนใหม่เป็นแพ็กเกจที่แยกกัน ซึ่งจัดการและอัปเดตได้ง่ายขึ้น การดำเนินการนี้จึงช่วยให้คุณ เพิ่มเฉพาะการขึ้นต่อที่คุณต้องการสำหรับคอมโพเนนต์ Jetpack ที่ต้องการ ใช้ได้อย่างรวดเร็ว
3.3 (มกราคม 2019)
Android Studio 3.3 เป็นรุ่นสำคัญที่มีฟีเจอร์ใหม่ๆ และการปรับปรุงมากมาย
3.3.2 (มีนาคม 2019)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพต่างๆ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
3.3.1 (กุมภาพันธ์ 2019)
การอัปเดตเล็กน้อยนี้มีการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพต่างๆ
IntelliJ IDEA 2018.2.2
เราได้อัปเดต IDE หลักของ Android Studio ด้วยการปรับปรุงจาก IntelliJ IDEA ผ่านรุ่น 2018.2.2
การอัปเดตปลั๊กอิน Android Gradle
ดูข้อมูลเกี่ยวกับฟีเจอร์ใหม่ในปลั๊กอิน Android Gradle ได้ที่บันทึกประจำรุ่น
เครื่องมือแก้ไขการนำทาง
Navigation Editor ช่วยให้คุณเห็นภาพและสร้างการนำทางในแอปได้อย่างรวดเร็วโดยใช้คอมโพเนนต์สถาปัตยกรรมการนำทาง

ดูข้อมูลเพิ่มเติมได้ที่ ใช้การนำทางด้วยคอมโพเนนต์สถาปัตยกรรมการนำทาง
ลบไดเรกทอรี Android Studio ที่ไม่ได้ใช้
เมื่อเรียกใช้ Android Studio เวอร์ชันหลักเป็นครั้งแรก ระบบจะค้นหาไดเรกทอรีที่มีแคช การตั้งค่า ดัชนี และบันทึกสำหรับ Android Studio เวอร์ชันที่หาการติดตั้งที่เกี่ยวข้องไม่พบ จากนั้นกล่องโต้ตอบลบไดเรกทอรี Android Studio ที่ไม่ได้ใช้จะแสดงตำแหน่ง ขนาด และเวลาที่แก้ไขล่าสุดของไดเรกทอรีที่ไม่ได้ใช้เหล่านี้ พร้อมตัวเลือกในการลบ
ไดเรกทอรีที่ Android Studio พิจารณาว่าควรลบมีดังนี้
- Linux:
~/.AndroidStudio[Preview]X.Y - Mac:
~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]X.Y - Windows:
%USER%.AndroidStudio[Preview]X.Y

การปรับปรุง Lint
เมื่อเรียกใช้จาก Gradle, Lint จะทำงานได้เร็วขึ้นอย่างมาก โปรเจ็กต์ขนาดใหญ่จะ คาดหวังได้ว่า Lint จะทำงานได้เร็วขึ้นถึง 4 เท่า
วิซาร์ดสร้างโปรเจ็กต์ใหม่
วิซาร์ดสร้างโปรเจ็กต์ใหม่มีรูปลักษณ์ใหม่และมีการอัปเดตที่จะช่วย เพิ่มประสิทธิภาพการสร้างโปรเจ็กต์ Android Studio ใหม่

ดูข้อมูลเพิ่มเติมได้ที่สร้างโปรเจ็กต์
การอัปเดต Profiler
Android Studio 3.3 มีการอัปเดต Profiler แต่ละรายการหลายรายการ
ประสิทธิภาพเพิ่มขึ้น
เราได้ปรับปรุงประสิทธิภาพการแสดงผลขณะใช้โปรไฟล์เลอร์อย่างมากตามความคิดเห็นของผู้ใช้ โปรดส่งความคิดเห็นต่อไป โดยเฉพาะหากยังคงพบปัญหาด้านประสิทธิภาพ
ตัวเลือกการติดตามการจัดสรรหน่วยความจำของ Profiler
ตอนนี้ Memory Profiler จะสุ่มตัวอย่างการจัดสรรหน่วยความจำเป็นระยะๆ โดยค่าเริ่มต้นเพื่อปรับปรุงประสิทธิภาพของแอปขณะทำการโปรไฟล์ หากต้องการ คุณสามารถเปลี่ยนลักษณะการทำงานนี้ได้โดยใช้เมนูแบบเลื่อนลงการติดตามการจัดสรรเมื่อทดสอบในอุปกรณ์ที่ใช้ Android 8.0 (API ระดับ 26) ขึ้นไป

คุณเลือกโหมดต่อไปนี้ได้โดยใช้เมนูแบบเลื่อนลงการติดตามการจัดสรร
-
เต็ม: บันทึกการจัดสรรหน่วยความจำของออบเจ็กต์ทั้งหมด โปรดทราบว่าหากคุณมีแอป ที่จัดสรรออบเจ็กต์จำนวนมาก คุณอาจเห็นปัญหาด้านประสิทธิภาพที่สำคัญ ขณะทำการโปรไฟล์
-
สุ่มตัวอย่าง: บันทึกตัวอย่างการจัดสรรหน่วยความจำของออบเจ็กต์เป็นระยะ ซึ่งเป็นลักษณะการทำงานเริ่มต้นและส่งผลต่อประสิทธิภาพของแอปน้อยลงขณะทำการโปรไฟล์ คุณอาจพบปัญหาด้านประสิทธิภาพกับแอปที่จัดสรรออบเจ็กต์จำนวนมากภายในระยะเวลาอันสั้น
-
ปิด: ปิดการจัดสรรหน่วยความจำ หากยังไม่ได้เลือก โหมดนี้จะเปิดใช้โดยอัตโนมัติขณะบันทึก CPU แล้วกลับไปที่การตั้งค่าก่อนหน้าเมื่อบันทึกเสร็จ คุณเปลี่ยนลักษณะการทำงานนี้ได้ ในกล่องโต้ตอบการกำหนดค่าการบันทึก CPU
การติดตามจะส่งผลต่อทั้งออบเจ็กต์ Java และการอ้างอิง JNI
ตรวจสอบข้อมูลการแสดงผลเฟรม
ใน CPU Profiler ตอนนี้คุณสามารถตรวจสอบระยะเวลาที่แอป Java ใช้ในการแสดงผลแต่ละเฟรมในเทรด UI หลักและ RenderThread ได้แล้ว ข้อมูลนี้อาจมีประโยชน์เมื่อตรวจสอบคอขวดที่ ทำให้ UI กระตุกและมีอัตราเฟรมต่ำ เช่น เฟรมแต่ละเฟรมที่ใช้เวลานานกว่า 16 มิลลิวินาทีที่จำเป็นต่อการรักษาอัตราเฟรมที่ราบรื่นจะแสดงเป็นสีแดง
หากต้องการดูข้อมูลการแสดงผลเฟรม ให้บันทึกการติดตาม โดยใช้การกำหนดค่าที่ช่วยให้คุณติดตามการเรียกใช้ระบบได้ หลังจากบันทึก การติดตามแล้ว ให้มองหาข้อมูลเกี่ยวกับแต่ละเฟรมตามไทม์ไลน์ของการบันทึก ในส่วนที่ชื่อว่า FRAMES ดังที่แสดงด้านล่าง

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

ดูข้อความที่จัดรูปแบบสำหรับเพย์โหลดการเชื่อมต่อในโปรไฟล์เครือข่าย
ก่อนหน้านี้ โปรแกรมสร้างโปรไฟล์เครือข่ายจะแสดงเฉพาะข้อความดิบจากเพย์โหลดการเชื่อมต่อ ตอนนี้ Android Studio 3.3 จะจัดรูปแบบข้อความบางประเภทโดยค่าเริ่มต้น ซึ่งรวมถึง JSON, XML และ HTML ในแท็บคำตอบและคำขอ ให้คลิกลิงก์ดูที่แยกวิเคราะห์แล้วเพื่อแสดงข้อความที่จัดรูปแบบแล้ว และคลิกลิงก์ดูแหล่งที่มาเพื่อแสดงข้อความดิบ

ดูข้อมูลเพิ่มเติมได้ที่ ตรวจสอบการรับส่งข้อมูลในเครือข่ายด้วย Network Profiler
การดาวน์โหลดคอมโพเนนต์ SDK โดยอัตโนมัติ
เมื่อโปรเจ็กต์ต้องการคอมโพเนนต์ SDK จากแพลตฟอร์ม SDK, NDK หรือ CMake ตอนนี้ Gradle จะพยายามดาวน์โหลดแพ็กเกจที่จำเป็นโดยอัตโนมัติตราบใดที่คุณ ยอมรับข้อตกลงใบอนุญาตที่เกี่ยวข้องก่อนหน้านี้โดยใช้ SDK Manager
ดูข้อมูลเพิ่มเติมได้ที่ ดาวน์โหลดแพ็กเกจที่ขาดหายไปโดยอัตโนมัติด้วย Gradle
การรองรับ Clang-Tidy
ตอนนี้ Android Studio รองรับการวิเคราะห์โค้ดแบบคงที่โดยใช้ Clang-Tidy สำหรับโปรเจ็กต์ที่มีโค้ดเนทีฟ หากต้องการเปิดใช้การรองรับ Clang-Tidy ให้อัปเดต NDK เป็น r18 ขึ้นไป
จากนั้นคุณจะเปิดใช้หรือเปิดใช้การตรวจสอบอีกครั้งได้โดยเปิดกล่องโต้ตอบการตั้งค่าหรือ ค่ากำหนด แล้วไปที่ Editor > Inspections > C/C++ > General > Clang-Tidy เมื่อเลือกการตรวจสอบนี้ในกล่องโต้ตอบการตั้งค่าหรือค่ากำหนด คุณจะเห็นรายการการตรวจสอบ Clang-Tidy ที่เปิดและปิดใช้ในส่วนตัวเลือกของแผงด้านขวาสุดด้วย หากต้องการเปิดใช้การตรวจสอบเพิ่มเติม ให้เพิ่มการตรวจสอบลงในรายการ แล้วคลิกใช้
หากต้องการกำหนดค่า Clang-Tidy ด้วยตัวเลือกเพิ่มเติม ให้คลิกกำหนดค่าตัวเลือกการตรวจสอบ Clang-Tidy แล้วเพิ่มตัวเลือกในกล่องโต้ตอบที่ เปิดขึ้น
การนำตัวเลือกสำหรับการปรับแต่ง C++ ออก
ระบบได้นำตัวเลือกต่อไปนี้ออกจากกล่องโต้ตอบปรับแต่งการรองรับ C++
- การรองรับข้อยกเว้น (-fexceptions)
- การรองรับข้อมูลประเภทรันไทม์ (-ftti)
ระบบจะเปิดใช้ลักษณะการทำงานที่เกี่ยวข้องสำหรับโปรเจ็กต์ทั้งหมดที่สร้างผ่าน Android Studio
CMake เวอร์ชัน 3.10.2
ตอนนี้ SDK Manager มี CMake เวอร์ชัน 3.10.2 แล้ว โปรดทราบว่า Gradle ยังคงใช้เวอร์ชัน 3.6.0 โดยค่าเริ่มต้น
หากต้องการระบุเวอร์ชัน CMake ให้ Gradle ใช้ ให้เพิ่มโค้ดต่อไปนี้ลงใน
ไฟล์ build.gradle ของโมดูล
android {
...
externalNativeBuild {
cmake {
...
version "3.10.2"
}
}
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า CMake ใน build.gradle ได้ที่
กำหนดค่า Gradle ด้วยตนเอง
ไวยากรณ์ "+" ใหม่เพื่อระบุเวอร์ชัน CMake ขั้นต่ำ
เมื่อระบุเวอร์ชันของ CMake ในไฟล์ build.gradle ของโมดูลหลัก
ตอนนี้คุณสามารถต่อท้าย "+" เพื่อให้ตรงกับลักษณะการทำงานของคำสั่ง cmake_minimum_required()
ของ CMake ได้แล้ว
ข้อควรระวัง: ไม่แนะนำให้ใช้ไวยากรณ์ "+" กับการขึ้นต่อกันของบิลด์อื่นๆ เนื่องจาก Dependency แบบไดนามิกอาจทำให้เกิดการอัปเดตเวอร์ชันที่ไม่คาดคิดและ แก้ไขความแตกต่างของเวอร์ชันได้ยาก
ตอนนี้ Android App Bundle รองรับ Instant App แล้ว
ตอนนี้ Android Studio ช่วยให้คุณสร้าง Android App Bundle ได้โดย รองรับ Google Play Instant อย่างเต็มรูปแบบ กล่าวคือ ตอนนี้คุณสามารถสร้างและติดตั้งใช้งานทั้งแอปที่ติดตั้งและประสบการณ์แบบใช้งานได้ทันทีจากโปรเจ็กต์ Android Studio เดียว และรวมไว้ใน Android App Bundle เดียวได้แล้ว
หากคุณสร้างโปรเจ็กต์ Android Studio ใหม่โดยใช้กล่องโต้ตอบสร้างโปรเจ็กต์ใหม่ โปรดเลือกช่องข้าง กำหนดค่าโปรเจ็กต์ > โปรเจ็กต์นี้จะรองรับ Instant Apps จากนั้น Android Studio จะสร้างโปรเจ็กต์แอปใหม่ตามปกติ แต่จะรวมพร็อพเพอร์ตี้ต่อไปนี้ไว้ในไฟล์ Manifest เพื่อเพิ่มการรองรับ Instant App ลงในโมดูลฐานของแอป
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
<dist:module dist:instant="true" />
...
</manifest>
จากนั้นคุณจะ สร้างฟีเจอร์ที่เปิดใช้ทันที ได้โดยเลือกไฟล์ > ใหม่ > โมดูลใหม่จากแถบเมนู แล้วเลือก โมดูลฟีเจอร์แบบไดนามิกที่เปิดใช้ทันทีจากกล่องโต้ตอบสร้างโมดูลใหม่ โปรดทราบว่าการสร้างโมดูลนี้จะเปิดใช้โมดูลฐานของแอปทันทีด้วย
หากต้องการติดตั้งใช้งานแอปในอุปกรณ์ภายในเครื่องเป็นประสบการณ์แบบใช้งานได้ทันที ให้ แก้ไขการกำหนดค่าการเรียกใช้ แล้วเลือกช่องข้าง ทั่วไป > ติดตั้งใช้งานเป็นแอปด่วน
การซิงค์โปรเจ็กต์ที่มีตัวแปรเดียว
การซิงค์โปรเจ็กต์กับการกำหนดค่าบิลด์ เป็นขั้นตอนสำคัญที่ช่วยให้ Android Studio เข้าใจโครงสร้างของโปรเจ็กต์ ของคุณ อย่างไรก็ตาม กระบวนการนี้อาจใช้เวลานานสำหรับโปรเจ็กต์ขนาดใหญ่ หากโปรเจ็กต์ใช้ตัวแปรบิลด์หลายตัว ตอนนี้คุณสามารถเพิ่มประสิทธิภาพการซิงค์โปรเจ็กต์ได้โดยจำกัดให้ซิงค์เฉพาะตัวแปรที่คุณเลือกในปัจจุบัน
คุณต้องใช้ Android Studio 3.3 ขึ้นไปกับปลั๊กอิน Android Gradle 3.3.0 ขึ้นไปเพื่อเปิดใช้การเพิ่มประสิทธิภาพนี้ เมื่อมีคุณสมบัติตรงตามข้อกำหนดเหล่านี้ IDE จะแจ้งให้คุณเปิดใช้การเพิ่มประสิทธิภาพนี้เมื่อซิงค์โปรเจ็กต์ ระบบจะเปิดใช้การเพิ่มประสิทธิภาพในโปรเจ็กต์ใหม่โดยค่าเริ่มต้นด้วย
หากต้องการเปิดใช้การเพิ่มประสิทธิภาพนี้ด้วยตนเอง ให้คลิก File > Settings > Experimental > Gradle (Android Studio > Preferences > Experimental > Gradle ใน Mac) แล้วเลือก ช่องทำเครื่องหมายซิงค์เฉพาะตัวแปรที่ใช้งานอยู่
หมายเหตุ: ปัจจุบันการเพิ่มประสิทธิภาพนี้รองรับโปรเจ็กต์ที่มีเฉพาะภาษาโปรแกรม Java เท่านั้น เช่น หาก IDE ตรวจพบโค้ด Kotlin หรือ C++ ในโปรเจ็กต์ของคุณ ระบบจะไม่เปิดใช้การเพิ่มประสิทธิภาพนี้โดยอัตโนมัติ และคุณไม่ควรเปิดใช้ด้วยตนเอง
ดูข้อมูลเพิ่มเติมได้ที่ เปิดใช้การซิงค์โปรเจ็กต์แบบตัวแปรเดียว
แสดงความคิดเห็นอย่างรวดเร็ว
หากเลือกแชร์สถิติการใช้งานเพื่อช่วยปรับปรุง Android Studio คุณจะเห็นไอคอนใหม่ 2 รายการนี้ในแถบสถานะที่ด้านล่างของหน้าต่าง IDE
เพียงคลิกไอคอนที่แสดงถึงประสบการณ์ปัจจุบันของคุณกับ IDE ได้ดีที่สุด เมื่อดำเนินการดังกล่าว IDE จะส่งสถิติการใช้งานซึ่งช่วยให้ทีม Android Studio เข้าใจความรู้สึกของคุณได้ดียิ่งขึ้น ในบางกรณี เช่น เมื่อคุณระบุประสบการณ์การใช้งาน IDE ในเชิงลบ คุณจะมีโอกาสให้ความคิดเห็นเพิ่มเติม
หากยังไม่ได้ดำเนินการ คุณสามารถเปิดใช้การแชร์สถิติการใช้งานได้โดย เปิดกล่องโต้ตอบการตั้งค่า ค่ากำหนดใน Mac) ไปที่ ลักษณะที่ปรากฏและลักษณะการทำงาน > การตั้งค่าระบบ > การแชร์ข้อมูล แล้วเลือก ส่งสถิติการใช้งานไปยัง Google
3.2 (กันยายน 2018)
Android Studio 3.2 เป็นรุ่นหลักที่มีฟีเจอร์ใหม่ๆ และการปรับปรุงมากมาย
3.2.1 (ตุลาคม 2018)
การอัปเดต Android Studio 3.2 นี้มีการเปลี่ยนแปลงและการแก้ไขต่อไปนี้
- ตอนนี้ Kotlin เวอร์ชันที่รวมไว้คือ 1.2.71
- ตอนนี้เวอร์ชันเครื่องมือบิลด์เริ่มต้นคือ 28.0.3
- ในไลบรารีการนำทาง เราได้เปลี่ยนชื่อประเภทอาร์กิวเมนต์จาก
typeเป็นargType - เราได้แก้ไขข้อบกพร่องต่อไปนี้แล้ว
- เมื่อใช้ไลบรารีการเชื่อมโยงข้อมูล ชื่อตัวแปรที่มีขีดล่าง ทำให้เกิดข้อผิดพลาดในการคอมไพล์
- CMake ทำให้ IntelliSense และฟีเจอร์อื่นๆ ของ CLion ทำงานไม่สำเร็จ
- การเพิ่ม
SliceProviderทำให้เกิดข้อผิดพลาดในการคอมไพล์ ในโปรเจ็กต์ที่ไม่ได้ใช้ไลบรารีandroidx.* - ไม่ได้เรียกใช้การทดสอบหน่วย Kotlin บางรายการ
- ปัญหาเกี่ยวกับการเชื่อมโยงข้อมูลทำให้เกิด
PsiInvalidElementAccessException <merge>บางครั้งทำให้ Layout Editor ขัดข้อง
ปัญหาที่ทราบในเวอร์ชัน 3.2.0
หมายเหตุ: ปัญหาเหล่านี้ได้รับการแก้ไขแล้วใน Android Studio 3.2.1
เราไม่แนะนำอย่างยิ่งให้ใช้ Kotlin เวอร์ชัน 1.2.70
Kotlin เวอร์ชัน 1.2.61 แก้ไขข้อบกพร่องที่อาจทำให้ Android Studio ค้าง แต่ Kotlin 1.2.70 ไม่มีการแก้ไขนี้
แต่ Kotlin เวอร์ชัน 1.2.71 ขึ้นไปมีการแก้ไขนี้
-
แม้ว่าโดยปกติแล้วคุณไม่จำเป็นต้องระบุเวอร์ชันเครื่องมือสร้าง แต่เมื่อใช้ปลั๊กอิน Android Gradle 3.2.0 กับ
renderscriptSupportModeEnabledที่ตั้งค่าเป็นtrueคุณ จะต้องรวมข้อมูลต่อไปนี้ไว้ในไฟล์build.gradleของแต่ละโมดูลandroid.buildToolsVersion "28.0.3"
ผู้ช่วย "มีอะไรใหม่"
ผู้ช่วยคนใหม่จะแจ้งให้คุณทราบเกี่ยวกับการเปลี่ยนแปลงล่าสุดใน Android Studio
ผู้ช่วยจะเปิดขึ้นเมื่อคุณเริ่ม Android Studio หลังจากติดตั้งใหม่หรือ อัปเดต หากตรวจพบว่ามีข้อมูลใหม่ที่ต้องแสดง นอกจากนี้ คุณยังเปิด ผู้ช่วยได้โดยเลือกความช่วยเหลือ > มีอะไรใหม่ใน Android Studio
Android Jetpack
Android Jetpack ช่วยเร่งการพัฒนา Android ด้วยคอมโพเนนต์ เครื่องมือ และคำแนะนำที่จะช่วยลดงานที่ต้องทำซ้ำๆ และช่วยให้คุณสร้างแอปคุณภาพสูงที่ทดสอบได้ง่ายและรวดเร็วยิ่งขึ้น Android Studio มีการอัปเดตต่อไปนี้ เพื่อรองรับ Jetpack ดูข้อมูลเพิ่มเติมได้ใน เอกสารประกอบของ Jetpack
เครื่องมือแก้ไขการนำทาง
เครื่องมือแก้ไขการนำทางแบบใหม่ผสานรวมกับคอมโพเนนต์การนำทางของ Android Jetpack เพื่อให้มุมมองแบบกราฟิกสำหรับการสร้างโครงสร้างการนำทางของ แอปของคุณ เครื่องมือแก้ไขการนำทางช่วยลดความซับซ้อนในการออกแบบและการติดตั้งใช้งาน การนำทางระหว่างปลายทางในแอป
ใน Android Studio 3.2 เครื่องมือแก้ไขการนำทางเป็นฟีเจอร์เวอร์ชันทดลอง หากต้องการ เปิดใช้ Navigation Editor ให้คลิกไฟล์ > การตั้งค่า (Android Studio > ค่ากำหนดใน Mac) เลือกหมวดหมู่ทดลอง ในแผงด้านซ้าย เลือกช่องข้างเปิดใช้ Navigation Editor แล้ว รีสตาร์ท Android Studio
ดูข้อมูลเพิ่มเติมได้ใน เอกสารประกอบของ Navigation Editor
การย้ายข้อมูล AndroidX
เรากำลังย้ายข้อมูลไลบรารีการสนับสนุนของ Android ไปยังไลบรารีส่วนขยาย Android ใหม่โดยใช้เนมสเปซ androidx ซึ่งเป็นส่วนหนึ่งของ Jetpack
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของ AndroidX
Android Studio 3.2 จะช่วยคุณในกระบวนการนี้ด้วยฟีเจอร์การย้ายข้อมูลใหม่
หากต้องการย้ายข้อมูลโปรเจ็กต์ที่มีอยู่ไปยัง AndroidX ให้เลือกปรับโครงสร้าง > ย้ายข้อมูลไปยัง AndroidX หากคุณมีการขึ้นต่อกันของ Maven ที่ยังไม่ได้ย้ายข้อมูลไปยังเนมสเปซ AndroidX ระบบบิลด์ของ Android Studio จะแปลงการขึ้นต่อกันของโปรเจ็กต์เหล่านั้นโดยอัตโนมัติด้วย
ปลั๊กอิน Android Gradle มีค่าสถานะส่วนกลางต่อไปนี้ที่คุณตั้งค่าได้
ในไฟล์ gradle.properties
android.useAndroidX: เมื่อตั้งค่าเป็นtrueแฟล็กนี้ จะบ่งชี้ว่าคุณต้องการเริ่มใช้ AndroidX ตั้งแต่นี้เป็นต้นไป หากไม่มีแฟล็ก Android Studio จะทำงานเสมือนว่าตั้งค่าแฟล็กเป็นfalseandroid.enableJetifier: เมื่อตั้งค่าเป็นtrueแฟล็กนี้ จะระบุว่าคุณต้องการให้มีการรองรับเครื่องมือ (จากปลั๊กอิน Android Gradle ) เพื่อแปลงไลบรารีของบุคคลที่สามที่มีอยู่โดยอัตโนมัติราวกับว่าไลบรารีเหล่านั้น เขียนขึ้นสำหรับ AndroidX หากไม่มีแฟล็ก Android Studio จะทำงานเสมือนว่าได้ตั้งค่าแฟล็กเป็นfalse
ระบบจะตั้งค่าทั้ง 2 แฟล็กเป็น true เมื่อคุณใช้คำสั่ง
ย้ายข้อมูลไปยัง AndroidX
หากต้องการเริ่มใช้ไลบรารี AndroidX ทันทีและไม่จำเป็นต้อง
แปลงไลบรารีของบุคคลที่สามที่มีอยู่ คุณสามารถตั้งค่า
ฟีเจอร์แฟล็ก android.useAndroidX เป็น true และ
ฟีเจอร์แฟล็ก android.enableJetifier เป็น false
Android App Bundle
Android App Bundle เป็นรูปแบบการอัปโหลดใหม่ซึ่งมีโค้ดและทรัพยากรที่คอมไพล์แล้วทั้งหมดของแอป แต่จะเลื่อนการสร้างและลงนาม APK ไปยัง Google Play Store
จากนั้นโมเดลการนำส่งแอปแบบใหม่ของ Google Play จะใช้ App Bundle เพื่อสร้างและนำส่ง APK ที่เพิ่มประสิทธิภาพสำหรับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละราย ดังนั้นผู้ใช้แต่ละรายจะดาวน์โหลดเฉพาะโค้ดและทรัพยากรที่จำเป็นในการเรียกใช้แอปของคุณเท่านั้น คุณจึงไม่ต้องสร้าง ลงนาม และจัดการ APK หลายรายการอีกต่อไป และผู้ใช้จะได้รับการดาวน์โหลดที่มีขนาดเล็กลงและเพิ่มประสิทธิภาพมากขึ้น
นอกจากนี้ คุณยังเพิ่มโมดูลฟีเจอร์ลงในโปรเจ็กต์แอปและ รวมไว้ใน App Bundle ได้ด้วย จากนั้นผู้ใช้จะ ดาวน์โหลดและติดตั้งฟีเจอร์ของแอปได้ตามต้องการ
หากต้องการสร้างแพ็กเกจ ให้เลือกสร้าง > สร้างแพ็กเกจ/APK > สร้างแพ็กเกจ
ดูข้อมูลเพิ่มเติม รวมถึงวิธีการสร้างและวิเคราะห์ Android App Bundle ได้ที่ Android App Bundle
ข้อมูลตัวอย่างในเครื่องมือแก้ไขเลย์เอาต์
เลย์เอาต์ Android หลายรายการมีข้อมูลรันไทม์ที่อาจทำให้การแสดงภาพลักษณะ
และรูปแบบของเลย์เอาต์ในระหว่างขั้นตอนการออกแบบของการพัฒนาแอปเป็นเรื่องยาก ตอนนี้คุณดูตัวอย่างมุมมองในเครื่องมือแก้ไขเลย์เอาต์ที่เติมข้อมูลตัวอย่างได้อย่างง่ายดายแล้ว เมื่อเพิ่มมุมมอง ปุ่ม
จะปรากฏใต้มุมมองในหน้าต่างการออกแบบ คลิกปุ่มนี้เพื่อตั้งค่า
แอตทริบิวต์มุมมองขณะออกแบบ คุณเลือกได้
จากเทมเพลตข้อมูลตัวอย่างที่หลากหลาย และระบุจำนวนรายการตัวอย่าง
ที่จะใช้เพื่อป้อนข้อมูลในมุมมอง
หากต้องการลองใช้ข้อมูลตัวอย่าง ให้เพิ่ม
RecyclerView
ลงในเลย์เอาต์ใหม่ คลิกปุ่มแอตทริบิวต์ขณะออกแบบ
ใต้มุมมอง แล้วเลือกจากภาพสไลด์ของเทมเพลตข้อมูลตัวอย่าง
Slice
Slice เป็นวิธีใหม่ในการฝังฟังก์ชันการทำงานบางส่วนของแอปใน อินเทอร์เฟซผู้ใช้อื่นๆ บน Android ตัวอย่างเช่น Slice ช่วยให้แสดงฟังก์ชันการทำงานและเนื้อหาของแอปในคำแนะนำของ Google Search ได้
Android Studio 3.2 มีเทมเพลตในตัวที่จะช่วยคุณขยายแอปด้วย Slice Provider API ใหม่ รวมถึงการตรวจสอบ Lint ใหม่เพื่อให้แน่ใจว่าคุณ ปฏิบัติตามแนวทางปฏิบัติแนะนำเมื่อสร้าง Slice
หากต้องการเริ่มต้นใช้งาน ให้คลิกขวาโฟลเดอร์โปรเจ็กต์ แล้วเลือก ใหม่ > อื่นๆ > ผู้ให้บริการสไลซ์
ดูข้อมูลเพิ่มเติม รวมถึงวิธีทดสอบการโต้ตอบของ Slice ได้ที่คู่มือเริ่มต้นใช้งาน Slice
Kotlin 1.2.61
Android Studio 3.2 มาพร้อมกับ Kotlin 1.2.61 และ Android SDK ใหม่ที่ผสานรวมกับ Kotlin ได้ดียิ่งขึ้น ดูข้อมูลเพิ่มเติมได้ที่ บล็อกของนักพัฒนาแอป Android
IntelliJ IDEA 2018.1.6
เราได้อัปเดต IDE หลักของ Android Studio ด้วยการปรับปรุงจาก IntelliJ IDEA ผ่านรุ่น 2018.1.6
โปรไฟล์เลอร์ Android
ลองใช้ฟีเจอร์ใหม่ต่อไปนี้ของ Android Profiler ใน Android Studio 3.2
เซสชัน
ตอนนี้คุณสามารถบันทึกข้อมูล Profiler เป็นเซสชันเพื่อกลับมาดูและตรวจสอบในภายหลังได้แล้ว Profiler จะเก็บข้อมูลเซสชันไว้จนกว่าคุณจะรีสตาร์ท IDE
เมื่อ บันทึกการติดตามเมธอดหรือ บันทึก Heap Dump IDE จะเพิ่มข้อมูลดังกล่าว (พร้อมกับกิจกรรมเครือข่ายของแอป) เป็นรายการแยกต่างหากในเซสชันปัจจุบัน และคุณสามารถสลับไปมาระหว่างการบันทึกเพื่อเปรียบเทียบข้อมูลได้อย่างง่ายดาย
การติดตามของระบบ
ใน CPU Profiler ให้เลือกการกำหนดค่าการติดตามระบบใหม่เพื่อตรวจสอบ CPU ของระบบและ
กิจกรรมของเธรดในอุปกรณ์ การกำหนดค่าการติดตามนี้สร้างขึ้นบน
systrace
และมีประโยชน์ในการตรวจสอบปัญหาในระดับระบบ เช่น UI ที่กระตุก
ขณะใช้การกำหนดค่าการติดตามนี้ คุณสามารถทำเครื่องหมายด้วยภาพในส่วนของโค้ดที่สำคัญในไทม์ไลน์ของโปรไฟล์เลอร์ได้โดยการวัดโค้ด C/C++ ด้วย Native Tracing API หรือโค้ด Java ด้วยคลาส Trace
ตรวจสอบการอ้างอิง JNI ใน Memory Profiler
หากคุณติดตั้งใช้งานแอปในอุปกรณ์ที่ใช้ Android 8.0 (API ระดับ 26) ขึ้นไป ตอนนี้คุณจะตรวจสอบการจัดสรรหน่วยความจำสำหรับโค้ด JNI ของแอปได้แล้วโดยใช้ Memory Profiler
ขณะที่แอปทำงานอยู่ ให้เลือกส่วนของไทม์ไลน์ที่ต้องการตรวจสอบ แล้วเลือก JNI heap จากเมนูแบบเลื่อนลงเหนือรายการคลาส ดังที่แสดงด้านล่าง จากนั้นคุณจะตรวจสอบออบเจ็กต์ในฮีปได้ตามปกติ และ ดับเบิลคลิกออบเจ็กต์ในแท็บสแต็กการเรียกการจัดสรรเพื่อดูว่ามีการจัดสรรและ ปล่อยการอ้างอิง JNI ในโค้ดของคุณที่ใด
นำเข้า ส่งออก และตรวจสอบไฟล์ฮีปดัมป์ของหน่วยความจำ
ตอนนี้คุณสามารถนำเข้า ส่งออก และตรวจสอบ.hprofไฟล์การทิ้งฮีปหน่วยความจำที่สร้างขึ้น
ด้วย Memory Profiler ได้แล้ว
นำเข้าไฟล์ .hprof โดยคลิกเริ่มเซสชัน Profiler ใหม่
ในบานหน้าต่างเซสชันของ
Profiler แล้วเลือกโหลดจากไฟล์ จากนั้นคุณจะ
ตรวจสอบข้อมูลใน Memory Profiler ได้เช่นเดียวกับการตรวจสอบ Heap Dump อื่นๆ
หากต้องการบันทึกข้อมูล Heap Dump เพื่อตรวจสอบในภายหลัง ให้ใช้ปุ่มส่งออก Heap Dump ที่ด้านขวาของรายการ Heap Dump ในบานหน้าต่างเซสชัน ในกล่องโต้ตอบส่งออกเป็นที่ปรากฏขึ้น ให้บันทึกไฟล์ด้วยนามสกุล.hprof
บันทึกกิจกรรมของ CPU ระหว่างการเริ่มต้นแอป
ตอนนี้คุณบันทึกกิจกรรมของ CPU ในระหว่างการเริ่มต้นของแอปได้แล้ว โดยทำดังนี้
- เลือกเรียกใช้ > แก้ไขการกำหนดค่าจากเมนูหลัก
- ในแท็บการสร้างโปรไฟล์ของการกำหนดค่าการเรียกใช้ที่ต้องการ ให้เลือกช่อง ข้างเริ่มบันทึกการติดตามเมธอดเมื่อเริ่มต้น
- เลือกการกำหนดค่าการบันทึก CPU ที่จะใช้จากเมนูแบบเลื่อนลง
- โดยเลือกเรียกใช้ > โปรไฟล์
ส่งออกการติดตาม CPU
หลังจากบันทึกกิจกรรมของ CPU ด้วย CPU Profiler แล้ว คุณจะส่งออกข้อมูลเป็น
ไฟล์ .trace เพื่อแชร์กับผู้อื่นหรือตรวจสอบในภายหลังได้
หากต้องการส่งออกการติดตามหลังจากบันทึกกิจกรรมของ CPU แล้ว ให้ทำดังนี้
- คลิกขวาที่การบันทึกที่ต้องการส่งออกจากไทม์ไลน์ CPU
- เลือกส่งออกการติดตามจากเมนูแบบเลื่อนลง
- ไปที่ตำแหน่งที่ต้องการบันทึกไฟล์แล้วคลิกบันทึก
นำเข้าและตรวจสอบไฟล์การติดตาม CPU
ตอนนี้คุณสามารถนำเข้าและตรวจสอบไฟล์ .trace ที่สร้างด้วย
Debug API หรือ
CPU Profiler ได้แล้ว (ปัจจุบันคุณ
ไม่สามารถนำเข้าการบันทึกการติดตามระบบได้)
นำเข้าไฟล์การติดตามโดยคลิกเริ่มเซสชัน Profiler ใหม่
ใน
บานหน้าต่างเซสชันของ Profiler แล้วเลือก
โหลดจากไฟล์ จากนั้นคุณจะ
ตรวจสอบข้อมูลใน CPU Profiler ได้เช่นเดียวกับที่ทำตามปกติ โดยมี
ข้อยกเว้นต่อไปนี้
- กิจกรรมของ CPU จะไม่แสดงตามไทม์ไลน์ของ CPU
- ไทม์ไลน์กิจกรรมของเธรดจะระบุเฉพาะตำแหน่งที่มีข้อมูลการติดตามสำหรับ แต่ละเธรด และไม่ใช่สถานะจริงของเธรด (เช่น กำลังทำงาน รอ หรือ หยุดทำงาน)
บันทึกกิจกรรมของ CPU โดยใช้ Debug API
ตอนนี้คุณเริ่มและหยุดบันทึกกิจกรรมของ CPU ใน CPU Profiler ได้แล้วโดย
ใช้Debug API ในแอป หลังจาก
คุณติดตั้งใช้งานแอปในอุปกรณ์แล้ว โปรไฟล์เลอร์จะเริ่มบันทึกกิจกรรม CPU โดยอัตโนมัติ
เมื่อแอปเรียกใช้
startMethodTracing(String tracePath)
และโปรไฟล์เลอร์จะหยุดบันทึกเมื่อแอปเรียกใช้
stopMethodTracing() ขณะ
บันทึกกิจกรรม CPU ที่ทริกเกอร์โดยใช้ API นี้ โปรไฟล์เลอร์ CPU จะแสดง
Debug API เป็นการกำหนดค่าการบันทึก CPU ที่เลือก
Energy Profiler
เครื่องมือสร้างโปรไฟล์พลังงานจะแสดงภาพการ ใช้งานพลังงานโดยประมาณของแอป รวมถึงเหตุการณ์ของระบบที่มีผลต่อการ ใช้งานพลังงาน เช่น Wake Lock, การปลุก และงาน
Energy Profiler จะปรากฏเป็นแถวใหม่ที่ด้านล่างของหน้าต่าง Profiler เมื่อคุณเรียกใช้แอปในอุปกรณ์ที่เชื่อมต่อหรือ Android Emulator ที่ใช้ Android 8.0 (API 26) ขึ้นไป
คลิกแถวพลังงานเพื่อขยายมุมมอง Energy Profiler วางเคอร์เซอร์เมาส์ เหนือแถบในไทม์ไลน์เพื่อดูรายละเอียดการใช้พลังงานตามทรัพยากร CPU, เครือข่าย และตำแหน่ง (GPS) รวมถึงเหตุการณ์ของระบบที่เกี่ยวข้อง
เหตุการณ์ของระบบที่มีผลต่อการใช้พลังงานจะระบุไว้ในไทม์ไลน์ระบบ ด้านล่างไทม์ไลน์พลังงาน รายละเอียดของเหตุการณ์ระบบภายในช่วงเวลาที่ระบุจะแสดงในบานหน้าต่างเหตุการณ์เมื่อคุณเลือกช่วงเวลาในไทม์ไลน์พลังงาน
หากต้องการดูสแต็กการเรียกและรายละเอียดอื่นๆ สำหรับเหตุการณ์ของระบบ เช่น WakeLock ให้เลือกในแผงเหตุการณ์ หากต้องการไปที่โค้ดที่รับผิดชอบต่อเหตุการณ์ของระบบ ให้ดับเบิลคลิกรายการในสแต็กการเรียก
การตรวจสอบ Lint
Android Studio 3.2 มีฟีเจอร์ใหม่และฟีเจอร์ที่ได้รับการปรับปรุงมากมายสำหรับการตรวจสอบด้วยเครื่องมือวิเคราะห์ซอร์สโค้ด
การตรวจสอบ Lint แบบใหม่จะช่วยคุณค้นหาและระบุปัญหาที่พบบ่อยในโค้ด ตั้งแต่คำเตือนเกี่ยวกับปัญหาด้านความสามารถในการใช้งานที่อาจเกิดขึ้นไปจนถึงข้อผิดพลาดที่มีลำดับความสำคัญสูงเกี่ยวกับช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้น
Lint ตรวจสอบความสามารถในการทำงานร่วมกันของ Java/Kotlin
การตรวจสอบ Lint ใหม่จะบังคับใช้แนวทางปฏิบัติแนะนำที่อธิบายไว้ในคำแนะนำเกี่ยวกับการทำงานร่วมกันของ Kotlin เพื่อให้มั่นใจว่าโค้ด Java จะทำงานร่วมกับโค้ด Kotlin ได้อย่างราบรื่น ตัวอย่างของการตรวจสอบเหล่านี้ ได้แก่ การค้นหาการมีอยู่ของคำอธิบายประกอบ Nullability การใช้คีย์เวิร์ดที่ฮาร์ดโค้ดใน Kotlin และการวางพารามิเตอร์ Lambda ไว้สุดท้าย
หากต้องการเปิดใช้การตรวจสอบเหล่านี้ ให้คลิกไฟล์ > การตั้งค่า (Android Studio > ค่ากำหนด ใน Mac) เพื่อเปิดกล่องโต้ตอบการตั้งค่า จากนั้นไปที่ส่วน Editor > Inspections > Android > Lint > Interoperability > Kotlin Interoperability แล้วเลือกกฎที่ต้องการเปิดใช้
หากต้องการเปิดใช้การตรวจสอบเหล่านี้สำหรับการสร้างบรรทัดคำสั่ง ให้เพิ่มข้อมูลต่อไปนี้ลงใน
build.gradle
android {
lintOptions {
check 'Interoperability'
}
}
การตรวจสอบ Lint สำหรับ Slice
การตรวจสอบ Lint ใหม่สำหรับ Slice จะช่วยให้มั่นใจว่าคุณสร้าง Slice ได้อย่างถูกต้อง เช่น การตรวจสอบ Lint จะเตือนคุณหากไม่ได้กำหนดการดำเนินการหลัก ให้กับ Slice
เป้าหมาย Gradle ใหม่
ใช้ lintFix งาน Gradle ใหม่เพื่อใช้การแก้ไขที่ปลอดภัย
ทั้งหมดที่การตรวจสอบ Lint แนะนำกับซอร์สโค้ดโดยตรง ตัวอย่างการตรวจสอบ Lint ที่แนะนำการแก้ไขที่ปลอดภัยให้ใช้คือ SyntheticAccessor
การอัปเดตข้อมูลเมตา
ข้อมูลเมตาต่างๆ เช่น การตรวจสอบการแคสต์บริการ ได้รับการอัปเดตเพื่อให้การตรวจสอบ Lint ทำงานกับ Android 9 (API ระดับ 28) ได้
คำเตือนหากเรียกใช้ Lint ในตัวแปรใหม่
ตอนนี้ Lint จะบันทึกตัวแปรและเวอร์ชันที่ใช้บันทึกเกณฑ์พื้นฐาน และจะ แสดงคำเตือนหากคุณเรียกใช้ในตัวแปรอื่นที่ไม่ใช่ตัวแปรที่ใช้สร้าง เกณฑ์พื้นฐาน
การปรับปรุงการตรวจสอบ Lint ที่มีอยู่
Android Studio 3.2 มีการปรับปรุงการตรวจสอบด้วยเครื่องมือวิเคราะห์ซอร์สโค้ดที่มีอยู่หลายอย่าง เช่น ตอนนี้การตรวจสอบวงจรทรัพยากรใช้กับทรัพยากรประเภทอื่นๆ ได้แล้ว และ เครื่องมือตรวจหาการแปลจะค้นหาคำแปลที่ขาดหายไปได้ทันทีใน เอดิเตอร์
ทำให้รหัสปัญหาค้นพบได้ง่ายขึ้น
ตอนนี้รหัสปัญหาจะแสดงในที่ต่างๆ มากขึ้น รวมถึงในหน้าต่างผลการตรวจสอบ ซึ่งจะช่วยให้คุณค้นหาข้อมูลที่จำเป็นในการเปิดหรือปิดใช้การตรวจสอบที่เฉพาะเจาะจงผ่าน lintOptions ใน build.gradle ได้ง่ายขึ้น
ดูข้อมูลเพิ่มเติมได้ที่ กำหนดค่าตัวเลือก Lint ด้วย Gradle
การเชื่อมโยงข้อมูล V2
ตอนนี้ระบบจะเปิดใช้ Data Binding V2 โดยค่าเริ่มต้นและใช้ร่วมกับ V1 ได้ ซึ่งหมายความว่า หากคุณมีทรัพยากร Dependency ของไลบรารีที่คอมไพล์ด้วย V1 คุณจะใช้ ทรัพยากรเหล่านั้นกับโปรเจ็กต์ที่ใช้ Data Binding V2 ได้ อย่างไรก็ตาม โปรดทราบว่าโปรเจ็กต์ที่ใช้ V1 จะใช้ทรัพยากร Dependency ที่คอมไพล์ด้วย V2 ไม่ได้
การแปลง D8
ใน Android Studio 3.1 เราได้ผสานรวมขั้นตอนการยกเลิกการเพิ่มน้ำตาลลงในเครื่องมือ D8 เป็น ฟีเจอร์ทดลอง ซึ่งช่วยลดเวลาในการสร้างโดยรวม ใน Android Studio 3.2 ระบบจะเปิดใช้กระบวนการ Desugaring ด้วย D8 โดยค่าเริ่มต้น
เครื่องมือลดขนาดโค้ดใหม่
R8 เป็นเครื่องมือใหม่สำหรับการลดขนาดโค้ดและการปรับให้ยากต่อการอ่าน (Obfuscation) ซึ่งจะมาแทนที่ ProGuard คุณ
เริ่มใช้ R8 เวอร์ชันตัวอย่างได้โดยรวมข้อมูลต่อไปนี้ในไฟล์ gradle.properties ของโปรเจ็กต์
android.enableR8 = true
เปลี่ยน ABI เริ่มต้นสำหรับ APK หลายรายการ
เมื่อสร้าง APK หลายรายการที่แต่ละรายการกำหนดเป้าหมายเป็น ABI ที่แตกต่างกัน ปลั๊กอินจะไม่สร้าง APK สำหรับ ABI ต่อไปนี้โดยค่าเริ่มต้นอีกต่อไป ได้แก่ mips, mips64 และ armeabi
หากต้องการสร้าง APK ที่กำหนดเป้าหมายเป็น ABI เหล่านี้ คุณต้องใช้ NDK r16b หรือต่ำกว่า และระบุ ABI ในไฟล์ build.gradle ดังที่แสดงด้านล่าง
splits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
หมายเหตุ: การเปลี่ยนแปลงลักษณะการทำงานนี้รวมอยู่ใน Android Studio 3.1 RC1 และ สูงกว่าด้วย
ฟีเจอร์เครื่องมือแก้ไขที่ได้รับการปรับปรุงสำหรับไฟล์บิลด์ CMake
หากคุณใช้ CMake เพื่อเพิ่มโค้ด C และ C++ ลงในโปรเจ็กต์ ตอนนี้ Android Studio มีฟีเจอร์ตัวแก้ไขที่ได้รับการปรับปรุงเพื่อช่วยคุณแก้ไขสคริปต์บิลด์ CMake เช่น ฟีเจอร์ต่อไปนี้
- การไฮไลต์ไวยากรณ์และการเติมโค้ดอัตโนมัติ: ตอนนี้ IDE จะไฮไลต์และแนะนำการเติมโค้ดอัตโนมัติสำหรับคำสั่ง CMake ทั่วไป นอกจากนี้ คุณยังไปยังไฟล์ได้โดยคลิกไฟล์ขณะกด ปุ่ม Control (Command ใน Mac)
- การจัดรูปแบบโค้ดใหม่: ตอนนี้คุณสามารถใช้ตัวเลือกการจัดรูปแบบโค้ดใหม่ของ IntelliJ เพื่อ ใช้รูปแบบโค้ดกับสคริปต์บิลด์ CMake ได้แล้ว
- การปรับโครงสร้างอย่างปลอดภัย: ตอนนี้เครื่องมือการปรับโครงสร้างในตัวของ IDE จะตรวจสอบด้วยว่าคุณเปลี่ยนชื่อหรือลบไฟล์ที่อ้างอิงในสคริปต์บิลด์ CMake หรือไม่
ไปยังไฟล์ส่วนหัวภายนอก
เมื่อใช้หน้าต่างโปรเจ็กต์ใน Android Studio เวอร์ชันก่อนหน้า คุณ จะไปยังส่วนต่างๆ และตรวจสอบได้เฉพาะไฟล์ส่วนหัวที่เป็นของไลบรารีที่คุณ สร้างจากโปรเจ็กต์ในเครื่อง ในรุ่นนี้ คุณยังดูและตรวจสอบ ไฟล์ส่วนหัวที่รวมอยู่ในการอ้างอิงไลบรารี C/C++ ภายนอกซึ่งคุณนำเข้า ลงในโปรเจ็กต์แอปได้ด้วย
หากคุณรวมโค้ดและไลบรารี C/C++ ไว้ในโปรเจ็กต์อยู่แล้ว ให้เปิดหน้าต่างโปรเจ็กต์ทางด้านซ้ายของ IDE โดยเลือก View > Tool Windows > Project จากเมนูหลัก แล้วเลือก Android จาก เมนูแบบเลื่อนลง ในไดเรกทอรี cpp ส่วนหัวทั้งหมดที่อยู่ภายใน ขอบเขตของโปรเจ็กต์แอปจะจัดระเบียบไว้ภายใต้โหนด include สำหรับแต่ละรายการ การอ้างอิงไลบรารี C/C++ ในเครื่อง ดังที่แสดงด้านล่าง
เปิดใช้ Multidex แบบเนทีฟโดยค่าเริ่มต้น
Android Studio เวอร์ชันก่อนหน้าจะเปิดใช้ Multidex แบบเนทีฟเมื่อติดตั้งใช้งาน
แอปเวอร์ชันแก้ไขข้อบกพร่องในอุปกรณ์ที่ใช้ Android ที่มี API ระดับ 21 ขึ้นไป ตอนนี้
ไม่ว่าคุณจะทำการติดตั้งใช้งานในอุปกรณ์หรือสร้าง APK สำหรับการเผยแพร่ ปลั๊กอิน Android
สำหรับ Gradle จะเปิดใช้ Multidex แบบเนทีฟสำหรับโมดูลทั้งหมดที่ตั้งค่า
minSdkVersion=21 ขึ้นไป
AAPT2 ย้ายไปยังที่เก็บ Maven ของ Google
ตั้งแต่ Android Studio 3.2 เป็นต้นไป แหล่งที่มาของ AAPT2 (เครื่องมือแพ็กเกจเนื้อหาของ Android 2) คือที่เก็บ Maven ของ Google
หากต้องการใช้ AAPT2 โปรดตรวจสอบว่าคุณมีgoogle()การอ้างอิงในไฟล์
build.gradle ดังที่แสดงที่นี่
buildscript { repositories { google() // here jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' } } allprojects { repositories { google() // and here jcenter() } }
buildscript { repositories { google() // here jcenter() } dependencies { classpath("com.android.tools.build:gradle:3.2.0") } } allprojects { repositories { google() // and here jcenter() } }
AAPT2 เวอร์ชันใหม่แก้ไขปัญหาหลายอย่าง รวมถึงการจัดการอักขระที่ไม่ใช่ ASCII ใน Windows ที่ดีขึ้น
การนำการกำหนดค่าออกตามคำขอ
เราได้นำค่ากำหนดกำหนดค่าตามต้องการออกจาก Android Studio แล้ว
Android Studio จะไม่ส่งอาร์กิวเมนต์ --configure-on-demand
ไปยัง Gradle อีกต่อไป
ผู้ช่วยการเชื่อมต่อ ADB
ผู้ช่วยการเชื่อมต่อ ADB ใหม่ มีวิธีการแบบทีละขั้นตอนที่จะช่วยคุณตั้งค่าและใช้อุปกรณ์ผ่านการเชื่อมต่อ Android Debug Bridge (ADB)
หากต้องการเริ่มผู้ช่วย ให้เลือกเครื่องมือ > ผู้ช่วยการเชื่อมต่อ
ผู้ช่วยการเชื่อมต่อ ADB จะแสดงวิธีการ ควบคุมในบริบท และ รายการอุปกรณ์ที่เชื่อมต่อในชุดหน้าเว็บในแผง Assistant
การปรับปรุงโปรแกรมจำลอง
ตอนนี้คุณสามารถบันทึกและโหลดสแนปชอตของ AVD (อุปกรณ์เสมือน Android) ได้ทุกเมื่อในโปรแกรมจำลอง Android ซึ่งช่วยให้คุณกลับอุปกรณ์จำลองไปยังสถานะที่ทราบเพื่อทำการทดสอบได้อย่างรวดเร็วและง่ายดาย เมื่อแก้ไข AVD โดยใช้ AVD Manager คุณจะระบุได้ว่าจะโหลดสแนปชอต AVD ใดเมื่อ AVD เริ่มทำงาน
ตอนนี้ตัวควบคุมสำหรับการบันทึก โหลด และจัดการสแนปชอต AVD จะอยู่ในแท็บสแนปชอตในหน้าต่างตัวควบคุมเพิ่มเติมของโปรแกรมจำลอง
ดูรายละเอียดได้ที่สแนปชอต
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ใหม่และการเปลี่ยนแปลงในโปรแกรมจำลองได้ที่ บันทึกประจำรุ่นของโปรแกรมจำลอง
3.1 (มีนาคม 2018)
Android Studio 3.1.0 เป็นรุ่นหลักที่มีฟีเจอร์และการปรับปรุงใหม่ๆ มากมาย
3.1.4 (สิงหาคม 2018)
การอัปเดต Android Studio 3.1 นี้มีการเปลี่ยนแปลงและการแก้ไขดังต่อไปนี้
- ตอนนี้ Kotlin ที่รวมไว้เป็นเวอร์ชัน 1.2.50 แล้ว
-
โปรเจ็กต์ใหม่จะสร้างขึ้นด้วย
kotlin-stdlib-jdk* artifactsแทนที่จะสร้างด้วยอาร์ติแฟกต์kotlin-stdlib-jre*ซึ่ง เลิกใช้งานแล้ว - ปรับปรุงการแยกวิเคราะห์กฎ ProGuard ของ R8 แล้ว
- เราได้แก้ไขข้อบกพร่องต่อไปนี้แล้ว
-
การพยายามเรียกใช้คลาสหลักของ Kotlin ไม่สำเร็จเนื่องจากมีข้อผิดพลาด:
"Error: Could not find or load main class..." - R8 เข้าสู่ลูปที่ไม่มีที่สิ้นสุดขณะทำการเพิ่มประสิทธิภาพบางอย่าง
- การใช้คำสั่งเรียกใช้การทดสอบที่ไม่สำเร็จอีกครั้งในหน้าต่างเรียกใช้ บางครั้งจะแสดงข้อความ "ไม่พบการทดสอบ" อย่างไม่ถูกต้อง
-
D8 จัดการอินสแตนซ์
invoke-virtualไม่ถูกต้อง จึงทำให้เกิดข้อขัดข้องพร้อมข้อความVerifyErrorดังนี้invoke-super/virtual can't be used on private method -
คอมไพเลอร์การเชื่อมโยงข้อมูลขึ้นอยู่กับ
com.android.tools:annotationsเวอร์ชันเก่า ตอนนี้คอมไพเลอร์จะใช้ คำอธิบายประกอบเครื่องมือจากโปรเจ็กต์ฐานเมื่อมี - Android Studio ขัดข้องระหว่างการเปลี่ยน Fragment เมื่อใช้ โปรไฟล์เลอร์
- ดีบักเกอร์ขัดข้องเมื่อดีบักเลย์เอาต์ที่มีกล่องข้อความ
- D8 อ่านไฟล์ ZIP บางไฟล์ที่มีอักขระพิเศษไม่ได้
3.1.3 (มิถุนายน 2018)
การอัปเดต Android Studio 3.1 นี้มีการแก้ไขข้อบกพร่องต่อไปนี้
- หน่วยความจำรั่วทำให้ Android Studio ทำงานช้าและไม่ตอบสนอง หลังจากที่คุณใช้ Layout Editor การอัปเดตนี้มีการแก้ไข ปัญหาเหล่านี้ส่วนใหญ่ เราตั้งใจที่จะเผยแพร่การอัปเดตอีกครั้งในเร็วๆ นี้เพื่อ แก้ไขปัญหาหน่วยความจำรั่วเพิ่มเติม
- แอปพลิเคชันบางอย่างที่สร้างด้วย D8 ขัดข้องในแท็บเล็ต Verizon Ellipsis บางรุ่น
-
การติดตั้งแอปพลิเคชันที่สร้างด้วย D8 ไม่สำเร็จเนื่องจากข้อผิดพลาด
INSTALL_FAILED_DEXOPTในอุปกรณ์ที่ใช้ Android 5.0 หรือ 5.1 (API ระดับ 21 หรือ 22) - แอปพลิเคชันบางอย่างที่ใช้ไลบรารี OkHttp และสร้างด้วย D8 เกิดข้อขัดข้องในอุปกรณ์ที่ใช้ Android 4.4 (API ระดับ 19)
-
บางครั้ง Android Studio เริ่มทำงานไม่สำเร็จ โดยมีข้อความ
ProcessCanceledExceptionระหว่างการเริ่มต้นคลาสสำหรับcom.intellij.psi.jsp.JspElementType
3.1.2 (เมษายน 2018)
การอัปเดต Android Studio 3.1 นี้มีการแก้ไขข้อบกพร่องต่อไปนี้
- ในบางกรณี Android Studio จะค้างอย่างไม่มีกำหนดระหว่างการออก
-
บิลด์ที่กำหนดค่าด้วยชุดแหล่งที่มา ล้มเหลวพร้อมข้อความต่อไปนี้เมื่อเปิดใช้ Instant Run
"The SourceSet name is not recognized by the Android Gradle Plugin." - เมื่อเปิดใช้ Instant Run การสร้างโปรเจ็กต์ Kotlin ใหม่จะล้มเหลวเมื่อ ทริกเกอร์โดยคำสั่ง Run
-
ในระหว่างการแก้ไขไฟล์
build.gradleบางครั้งอาจเกิดความล่าช้าอย่างเห็นได้ชัดระหว่างการพิมพ์อักขระกับการปรากฏของอักขระบนหน้าจอ -
การสร้างล้มเหลวเกิดขึ้นระหว่างการสร้างไฟล์ DEX ในบางโปรเจ็กต์ที่มีโมดูลหรือการอ้างอิงภายนอกจำนวนมาก โดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้
"RejectedExecutionException: Thread limit exceeded replacing blocked worker" - การคำนวณรายการ DEX หลักของ D8 ไม่ได้พิจารณาการเรียกใช้แบบรีเฟลกชันบางรายการ
การอัปเดตนี้ยังรวมถึงการเปลี่ยนแปลงที่ทำให้การเรียกใช้การตรวจสอบ Lint จาก Gradle เร็วขึ้นมากในบางสถานการณ์
3.1.1 (เมษายน 2018)
การอัปเดต Android Studio 3.1 นี้มีการแก้ไขข้อบกพร่องต่อไปนี้
-
ในบางกรณี เมื่อเปิดโปรเจ็กต์ที่สร้างใน Android Studio 3.0 เป็นครั้งแรกใน Android Studio 3.1 ระบบจะนำงาน Make ที่รับรู้ Gradle ออกจากส่วนก่อนเปิดตัวในการกำหนดค่าการเรียกใช้/การแก้ไขข้อบกพร่อง ผลลัพธ์คือโปรเจ็กต์จะไม่สร้างเมื่อคลิกปุ่มเรียกใช้หรือแก้ไขข้อบกพร่อง ซึ่งส่งผลให้เกิดความล้มเหลว เช่น การติดตั้ง APK ที่ไม่ถูกต้องและการขัดข้องเมื่อใช้ Instant Run
Android Studio 3.1.1 ได้เพิ่มงาน Make ที่รับรู้ Gradle ลงในการกำหนดค่าการเรียกใช้สำหรับโปรเจ็กต์ที่ไม่มีรายการนี้เพื่อแก้ปัญหานี้ การแก้ไขนี้จะเกิดขึ้นหลังจากการซิงค์ Gradle ครั้งแรกเมื่อโหลดโปรเจ็กต์
- ดีบักเกอร์ขัดข้องเมื่อดีบักเลย์เอาต์ที่มีกล่องข้อความหากเปิดใช้การทำโปรไฟล์ขั้นสูง
- Android Studio ค้างหลังจากที่คุณคลิกตัวแปรบิลด์
- มีการแยกไฟล์ AAR (Android Archive) 2 ครั้ง ครั้งหนึ่งในระหว่างกระบวนการซิงค์ Gradle และอีกครั้งในระหว่างกระบวนการบิลด์ Gradle
- องค์ประกอบบางอย่างขาดหายไปจาก Vector Drawable บางรายการที่นำเข้าจากไฟล์ SVG
-
คำเตือนเกี่ยวกับการเลิกใช้งานการกำหนดค่าการขึ้นต่อกันของ
compileได้รับการอัปเดตพร้อมคำแนะนำที่ดีขึ้นเกี่ยวกับการกำหนดค่าimplementationและapiดู รายละเอียดการย้ายข้อมูลจากการใช้compileการกำหนดค่าได้ที่ เอกสารประกอบสำหรับการกำหนดค่าการอ้างอิงใหม่
การเขียนโค้ด/IDE
IntelliJ 2017.3.3
เราได้อัปเดต IDE หลักของ Android Studio ด้วยการปรับปรุงจาก IntelliJ IDEA ผ่านการเปิดตัวเวอร์ชัน 2017.3.3 การปรับปรุงรวมถึงการวิเคราะห์โฟลว์การควบคุมที่ดีขึ้น สำหรับคอลเล็กชันและสตริง การอนุมานค่า Null ที่ได้รับการปรับปรุง การแก้ไขด่วนใหม่ และอื่นๆ อีกมากมาย
ดูรายละเอียดได้ในบันทึกประจำรุ่นของ JetBrains สำหรับ IntelliJ IDEA เวอร์ชัน 2017.2 และ 2017.3 รวมถึงบันทึกประจำรุ่นของ JetBrains สำหรับ การอัปเดตการแก้ไขข้อบกพร่อง
การปรับปรุงการแก้ไข SQL ด้วย Room
เมื่อใช้ ไลบรารีฐานข้อมูล Room คุณจะใช้ประโยชน์จากการปรับปรุงการแก้ไข SQL ได้หลายอย่าง ดังนี้
- การเติมโค้ดอัตโนมัติภายใน
Queryเข้าใจตาราง SQL (เอนทิตี) คอลัมน์ พารามิเตอร์การค้นหา นามแฝง การรวม การค้นหาย่อย และอนุประโยค WITH - ตอนนี้การไฮไลต์ไวยากรณ์ SQL ใช้งานได้แล้ว
- คุณคลิกขวาที่ชื่อตารางใน SQL แล้วเปลี่ยนชื่อได้ ซึ่งจะ เขียนโค้ด Java หรือ Kotlin ที่เกี่ยวข้องใหม่ด้วย (รวมถึงเช่น ประเภทการคืนค่าของการค้นหา) การเปลี่ยนชื่อจะทำงานในทิศทางอื่นด้วย ดังนั้นการเปลี่ยนชื่อคลาสหรือฟิลด์ Java จะเขียนโค้ด SQL ที่เกี่ยวข้องใหม่
- การใช้งาน SQL จะแสดงเมื่อใช้ค้นหาการใช้งาน (คลิกขวาและ เลือกค้นหาการใช้งานจากเมนูบริบท)
- หากต้องการไปยังประกาศของเอนทิตี SQL ในโค้ด Java หรือ Kotlin คุณสามารถกด Control (Command ใน Mac) ค้างไว้ขณะคลิกเอนทิตี
ดูข้อมูลเกี่ยวกับการใช้ SQL กับ Room ได้ที่ บันทึกข้อมูลใน ฐานข้อมูลในเครื่องโดยใช้ Room
การอัปเดตการเชื่อมโยงข้อมูล
การอัปเดตนี้มีการปรับปรุงหลายอย่างสำหรับ การเชื่อมโยงข้อมูล ดังนี้
-
ตอนนี้คุณสามารถใช้ออบเจ็กต์
LiveDataเป็นฟิลด์ที่สังเกตได้ในนิพจน์การเชื่อมโยงข้อมูล ตอนนี้คลาสViewDataBindingมีเมธอดsetLifecycle()ใหม่ที่คุณใช้ เพื่อสังเกต ออบเจ็กต์LiveData -
ตอนนี้คลาส
ObservableFieldรับออบเจ็กต์Observableอื่นๆ ในตัวสร้างได้แล้ว -
คุณสามารถดูตัวอย่างคอมไพเลอร์ที่เพิ่มขึ้นใหม่สำหรับคลาสการเชื่อมโยงข้อมูล ได้ ดูรายละเอียดเกี่ยวกับคอมไพเลอร์ใหม่นี้และวิธีการเปิดใช้ได้ที่ Data Binding Compiler V2
ประโยชน์ของคอมไพเลอร์ใหม่มีดังนี้
-
ViewBindingจะสร้างคลาสโดยปลั๊กอิน Android สำหรับ Gradle ก่อนคอมไพเลอร์ Java - ไลบรารีจะเก็บคลาสการเชื่อมโยงที่สร้างขึ้นเมื่อคอมไพล์แอป แทนที่จะสร้างใหม่ทุกครั้ง ซึ่งจะช่วย ปรับปรุงประสิทธิภาพของโปรเจ็กต์แบบหลายโมดูลได้อย่างมาก
-
คอมไพเลอร์และ Gradle
D8 เป็นคอมไพเลอร์ DEX เริ่มต้น
ตอนนี้ระบบจะใช้คอมไพเลอร์ D8 โดยค่าเริ่มต้นในการสร้างไบต์โค้ด DEX
คอมไพเลอร์ DEX ใหม่นี้มีประโยชน์หลายประการ ซึ่งรวมถึง ประโยชน์ต่อไปนี้
- การจัดทำดัชนีที่เร็วขึ้น
- ลดการใช้หน่วยความจำ
- การสร้างโค้ดที่ได้รับการปรับปรุง (การจัดสรรรีจิสเตอร์ที่ดีขึ้น ตารางสตริงที่ชาญฉลาดขึ้น )
- ประสบการณ์การแก้ไขข้อบกพร่องที่ดีขึ้นเมื่อทำทีละขั้นตอนในโค้ด
คุณไม่จำเป็นต้องแก้ไขโค้ดหรือเวิร์กโฟลว์การพัฒนาเพื่อรับสิทธิประโยชน์เหล่านี้ เว้นแต่คุณจะปิดใช้คอมไพเลอร์ D8 ด้วยตนเองก่อนหน้านี้
หากคุณตั้งค่า android.enableD8 เป็น false ใน
gradle.properties ให้นำค่าดังกล่าวออกหรือตั้งค่าเป็น
true
android.enableD8=true
โปรดดูรายละเอียดที่ คอมไพเลอร์ DEX ใหม่
การ ยกเลิกการน้ำตาลแบบเพิ่ม
สำหรับโปรเจ็กต์ที่ใช้ฟีเจอร์ภาษาของ Java 8 ระบบจะเปิดใช้การแยกส่วนแบบเพิ่มทีละส่วนโดยค่าเริ่มต้น ซึ่งจะช่วยปรับปรุงเวลาในการบิลด์ได้
การยกเลิกการลดรูปจะแปลง ไวยากรณ์ที่กระชับ เป็นรูปแบบที่คอมไพเลอร์ประมวลผลได้อย่างมีประสิทธิภาพมากขึ้น
คุณปิดใช้การแยกส่วนย่อยๆ ได้โดยระบุข้อมูลต่อไปนี้ในไฟล์ gradle.properties ของโปรเจ็กต์
android.enableIncrementalDesugaring=false
หน้าต่างเอาต์พุตที่เรียบง่าย
เราได้แทนที่คอนโซล Gradle ด้วยหน้าต่างสร้าง ซึ่งมีแท็บซิงค์และสร้าง
ดูรายละเอียดเกี่ยวกับวิธีใช้หน้าต่างสร้างแบบใหม่ที่เรียบง่ายขึ้นได้ที่ ตรวจสอบกระบวนการ บิลด์
การอัปเดตและการจัดทำดัชนีแบบเป็นกลุ่ม พร้อมกัน
ตอนนี้กระบวนการซิงค์ Gradle และการจัดทำดัชนี IDE มีประสิทธิภาพมากขึ้น จึงช่วยลดเวลาที่เสียไปกับการดำเนินการจัดทำดัชนีที่ซ้ำซ้อนหลายอย่าง
C++ และ LLDB
เราได้ปรับปรุงคุณภาพและประสิทธิภาพหลายอย่างในขั้นตอนการเขียนโค้ด การซิงค์ การสร้าง และการแก้ไขข้อบกพร่องของการพัฒนา C++ การปรับปรุงมีดังนี้
-
หากคุณทำงานกับโปรเจ็กต์ C++ ขนาดใหญ่ คุณจะเห็นว่ามีการปรับปรุงอย่างมาก ในการลดเวลาที่ใช้ในการสร้างสัญลักษณ์ นอกจากนี้ เวลาในการซิงค์ยังลดลงอย่างมาก สำหรับโปรเจ็กต์ขนาดใหญ่ด้วย
-
เราได้ปรับปรุงประสิทธิภาพเมื่อสร้างและซิงค์กับ CMake โดย นำผลลัพธ์ที่แคชไว้กลับมาใช้ซ้ำอย่างเข้มงวดมากขึ้น
-
การเพิ่มตัวจัดรูปแบบ ("Pretty Printer") สำหรับโครงสร้างข้อมูล C++ เพิ่มเติม ช่วยให้อ่านเอาต์พุต LLDB ได้ง่ายขึ้น
-
ตอนนี้ LLDB ใช้ได้กับ Android 4.1 (API ระดับ 16) ขึ้นไปเท่านั้น
หมายเหตุ: การแก้ไขข้อบกพร่องดั้งเดิมด้วย Android Studio 3.0 ขึ้นไปใช้ไม่ได้ใน Windows 32 บิต หากคุณใช้ Windows 32 บิตและ ต้องการแก้ไขข้อบกพร่องของโค้ดเนทีฟ ให้ใช้ Android Studio 2.3
Kotlin
อัปเกรด Kotlin เป็นเวอร์ชัน 1.2.30
Android Studio 3.1 มี Kotlin เวอร์ชัน 1.2.30
ตอนนี้ระบบจะวิเคราะห์โค้ด Kotlin ด้วย การตรวจสอบ Lint ในบรรทัดคำสั่ง
การเรียกใช้ Lint จาก บรรทัดคำสั่งจะวิเคราะห์คลาส Kotlin ของคุณแล้ว
สำหรับแต่ละโปรเจ็กต์ที่คุณต้องการเรียกใช้ Lint
ต้องรวมที่เก็บ Maven ของ
Google ไว้ในไฟล์ build.gradle
ระดับบนสุด ที่เก็บ Maven จะรวมอยู่ในโปรเจ็กต์ที่สร้างใน
Android Studio 3.0 ขึ้นไปอยู่แล้ว
เครื่องมือด้านประสิทธิภาพ
ตัวอย่างกระบวนการ C++ เนทีฟด้วย CPU Profiler
ตอนนี้ CPU Profiler มี การกำหนดค่าเริ่มต้นเพื่อบันทึกการติดตามแบบสุ่มของ เธรดดั้งเดิมของแอปแล้ว คุณใช้การกำหนดค่านี้ได้โดยการติดตั้งใช้งานแอปในอุปกรณ์ที่ใช้ Android 8.0 (API ระดับ 26) ขึ้นไป แล้วเลือกสุ่มตัวอย่าง (เนทีฟ) จากเมนูแบบเลื่อนลงของการกำหนดค่าการบันทึกของ CPU Profiler หลังจากนั้น ให้บันทึกและ ตรวจสอบการติดตามตามปกติ
คุณเปลี่ยนการตั้งค่าเริ่มต้นได้ เช่น ช่วงเวลาการสุ่มตัวอย่าง โดย สร้าง การกำหนดค่าการบันทึก
หากต้องการเปลี่ยนกลับไปติดตามเธรด Java ให้เลือกการกำหนดค่าสุ่มตัวอย่าง (Java) หรือวัดประสิทธิภาพ (Java)
กรองการติดตาม CPU, ผลลัพธ์การจัดสรรหน่วยความจำ และฮีปดัมพ์
โปรไฟล์เลอร์ CPU และ โปรไฟล์เลอร์หน่วยความจำมี ฟีเจอร์การค้นหาที่ช่วยให้คุณกรองผลลัพธ์จากการบันทึกเมธอด การติดตาม การจัดสรรหน่วยความจำ หรือการทิ้งฮีป
หากต้องการค้นหา ให้คลิกตัวกรอง
ที่มุมขวาบนของแผง จากนั้นพิมพ์
คำค้นหาแล้วกด Enter
เคล็ดลับ: คุณยังเปิดช่องค้นหาได้โดยกด Control + F (Command + F บน Mac)
ในแท็บแผนภูมิเปลวไฟของ CPU Profiler ระบบจะไฮไลต์ Call Stack ที่มี เมธอดที่เกี่ยวข้องกับคำค้นหาของคุณและย้ายไปทางด้านซ้าย ของแผนภูมิ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการกรองตามชื่อเมธอด คลาส หรือแพ็กเกจได้ที่ บันทึกและตรวจสอบการติดตามเมธอด
แท็บคำขอในโปรไฟล์เครือข่าย
Network Profiler ตอนนี้มีแท็บคำขอซึ่งให้รายละเอียดเกี่ยวกับคำขอเครือข่าย ในระหว่างไทม์ไลน์ที่เลือก ในเวอร์ชันก่อนหน้า Network Profiler จะให้ข้อมูลเกี่ยวกับการตอบกลับของเครือข่ายเท่านั้น
มุมมองเธรดใน Network Profiler
หลังจากเลือกส่วนหนึ่งของไทม์ไลน์ใน Network Profiler แล้ว คุณสามารถเลือกแท็บใดแท็บหนึ่งต่อไปนี้เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับกิจกรรมเครือข่ายในช่วง กรอบเวลานั้น
- มุมมองการเชื่อมต่อ: แสดงข้อมูลเดียวกันกับ Android Studio เวอร์ชันก่อนหน้า โดยจะแสดงรายการไฟล์ที่ส่งหรือรับในช่วงเวลาที่เลือกในไทม์ไลน์ของเธรด CPU ทั้งหมดของแอป สำหรับ คำขอแต่ละรายการ คุณจะตรวจสอบขนาด ประเภท สถานะ และระยะเวลาในการส่งได้
- มุมมองเธรด: แสดงกิจกรรมเครือข่ายของเธรด CPU ของแอปแต่ละรายการ มุมมองนี้ช่วยให้คุณตรวจสอบได้ว่าเธรดใดของแอปเป็นผู้รับผิดชอบ คำขอเครือข่ายแต่ละรายการ
เครื่องมือตรวจสอบเลย์เอาต์
เครื่องมือตรวจสอบเลย์เอาต์มีฟีเจอร์ใหม่ รวมถึงฟังก์ชันการทำงานบางอย่างที่เครื่องมือ Hierarchy Viewer และ Pixel Perfect ที่เลิกใช้งานแล้ว เคยมีให้
- ปุ่มซูมและแป้นพิมพ์ลัดสำหรับการไปยังส่วนต่างๆ และตรวจสอบเลย์เอาต์
- การวางซ้อนตารางกริดอ้างอิง
- ความสามารถในการโหลดรูปภาพอ้างอิงและใช้เป็นภาพซ้อนทับ (มีประโยชน์สำหรับ การเปรียบเทียบเลย์เอาต์กับโมเดลจำลอง UI)
- แสดงตัวอย่างซับทรีเพื่อแยกมุมมองในเลย์เอาต์ที่ซับซ้อน
เครื่องมือสร้างเลย์เอาต์
จานสีใน เครื่องมือแก้ไขเลย์เอาต์ ได้รับการปรับปรุงหลายอย่าง ดังนี้
- การจัดหมวดหมู่ใหม่สำหรับมุมมองและเลย์เอาต์
- หมวดหมู่ทั่วไปใหม่สำหรับมุมมองและเลย์เอาต์ ซึ่งคุณ เพิ่มได้ด้วยคำสั่งรายการโปรด
- ปรับปรุง การค้นหามุมมอง และเลย์เอาต์
- คำสั่งใหม่สำหรับ การเปิด เอกสารประกอบสำหรับองค์ประกอบมุมมองหรือเลย์เอาต์ที่เฉพาะเจาะจง
คุณสามารถใช้คำสั่ง Convert view ใหม่ในComponent tree หรือเครื่องมือแก้ไขการออกแบบเพื่อแปลงมุมมองหรือเลย์เอาต์ เป็นมุมมองหรือเลย์เอาต์ประเภทอื่น
ตอนนี้คุณสร้างข้อจํากัดให้กับรายการที่อยู่ใกล้มุมมองที่เลือกได้อย่างง่ายดายโดยใช้ปุ่ม
สร้างการเชื่อมต่อ
ใหม่ในเครื่องมือตรวจสอบมุมมองที่ด้านบนของหน้าต่างแอตทริบิวต์
วิ่งและวิ่งทันที
เราได้ปรับปรุงลักษณะการทำงานของตัวเลือกใช้การเลือกเดียวกันสำหรับการเปิดตัวในอนาคต ในกล่องโต้ตอบเลือกเป้าหมายการติดตั้งใช้งาน ให้สอดคล้องกันมากขึ้น หากเปิดใช้ตัวเลือกใช้การเลือกเดียวกัน กล่องโต้ตอบเลือกเป้าหมายการ ติดตั้งใช้งานจะเปิดขึ้นเฉพาะครั้งแรกที่คุณใช้คำสั่ง เรียกใช้จนกว่าอุปกรณ์ที่เลือกจะไม่ได้เชื่อมต่อ อีกต่อไป
เมื่อกำหนดเป้าหมายเป็นอุปกรณ์ที่ใช้ Android 8.0 (API ระดับ 26) ขึ้นไป Instant Run จะสามารถติดตั้งใช้งาน การเปลี่ยนแปลงกับทรัพยากรได้โดยไม่ต้องรีสตาร์ทแอปพลิเคชัน ซึ่งเป็นไปได้เนื่องจากทรัพยากรอยู่ใน APK ที่แยก
โปรแกรมจำลอง
ดูรายละเอียดเกี่ยวกับสิ่งใหม่และการเปลี่ยนแปลงในโปรแกรมจำลองตั้งแต่ Android Studio 3.0 ได้ที่หมายเหตุประจำรุ่นของ Android Emulator ตั้งแต่เวอร์ชัน 27.0.2 ถึงเวอร์ชัน 27.1.12
การปรับปรุงที่สำคัญมีดังนี้
- สแนปชอตการบูตอย่างรวดเร็วสำหรับการบันทึกสถานะของโปรแกรมจำลองและเริ่มต้นได้เร็วขึ้น พร้อมความสามารถในการใช้คำสั่งบันทึกตอนนี้เพื่อบันทึก สถานะเริ่มต้นที่กำหนดเอง
- หน้าจอโปรแกรมจำลองที่ไม่มีหน้าต่าง
- อิมเมจระบบสำหรับ Android 8.0 (API ระดับ 26), Android 8.1 (API ระดับ 27) และ Android P Developer Preview
การปรับปรุงอินเทอร์เฟซผู้ใช้และประสบการณ์ของผู้ใช้
เคล็ดลับเครื่องมือ แป้นพิมพ์ลัด และข้อความที่เป็นประโยชน์เพิ่มเติม
เราได้เพิ่มเคล็ดลับเครื่องมือและการวางซ้อนข้อความที่เป็นประโยชน์ในหลายๆ ที่ ทั่วทั้ง Android Studio
หากต้องการดูแป้นพิมพ์ลัดสำหรับคำสั่งต่างๆ เพียงวางตัวชี้เมาส์ เหนือปุ่มจนกว่าเคล็ดลับเครื่องมือจะปรากฏขึ้น
เครื่องมือ > นำเมนู Android ออกแล้ว
ระบบได้นำเมนูเครื่องมือ > Android ออกแล้ว คำสั่ง ที่เคยอยู่ในเมนูนี้ได้ย้ายไปแล้ว
- คำสั่งหลายอย่างได้ย้ายไปอยู่ใต้เมนูเครื่องมือ โดยตรง
- คำสั่งซิงค์โปรเจ็กต์กับไฟล์ Gradle ย้ายไปอยู่ที่เมนูไฟล์แล้ว
- เราได้นำคำสั่งการตรวจสอบอุปกรณ์ออกแล้วตามที่อธิบายไว้ด้านล่าง
Device Monitor พร้อมใช้งาน จากบรรทัดคำสั่ง
ใน Android Studio 3.1, Device Monitor มีบทบาทน้อยกว่าที่เคย เป็น ในหลายกรณี ฟังก์ชันการทำงานที่พร้อมใช้งานผ่าน การตรวจสอบอุปกรณ์จะให้บริการโดยเครื่องมือใหม่ที่ได้รับการปรับปรุงแล้ว
ดูวิธีการเรียกใช้เครื่องมือตรวจสอบอุปกรณ์จากบรรทัดคำสั่งและรายละเอียดของเครื่องมือที่ใช้ได้ผ่านเครื่องมือตรวจสอบอุปกรณ์ได้ในเอกสารประกอบของเครื่องมือตรวจสอบอุปกรณ์
3.0 (ตุลาคม 2017)
Android Studio 3.0.0 เป็นรุ่นหลักที่มีฟีเจอร์ใหม่ๆ และการปรับปรุงมากมาย
ผู้ใช้ macOS: หากคุณอัปเดต Android Studio เวอร์ชันเก่า คุณอาจเห็นกล่องโต้ตอบข้อผิดพลาดในการอัปเดตที่ระบุว่า "พบความขัดแย้งบางอย่าง ในพื้นที่การติดตั้ง" เพียงแค่ไม่ต้องสนใจข้อผิดพลาดนี้ แล้วคลิกยกเลิกเพื่อติดตั้งต่อ
3.0.1 (พฤศจิกายน 2017)
นี่คือการอัปเดตเล็กน้อยสำหรับ Android Studio 3.0 ซึ่งรวมถึงการแก้ไขข้อบกพร่องทั่วไป และการปรับปรุงประสิทธิภาพ
ปลั๊กอิน Android สำหรับ Gradle 3.0.0
ปลั๊กอิน Android ใหม่สำหรับ Gradle มาพร้อมการปรับปรุงและฟีเจอร์ใหม่ๆ มากมาย แต่หลักๆ แล้วจะปรับปรุง ประสิทธิภาพการสร้างสำหรับโปรเจ็กต์ที่มีโมดูลจำนวนมาก เมื่อใช้ ปลั๊กอินใหม่กับโปรเจ็กต์ขนาดใหญ่เหล่านี้ คุณจะได้รับประสบการณ์การใช้งานดังนี้
- กำหนดค่าการสร้างได้เร็วขึ้นเนื่องจากการแก้ปัญหาทรัพยากร Dependency ใหม่ที่ล่าช้า
- การแก้ปัญหาการขึ้นต่อกันที่รับรู้ตัวแปร สำหรับโปรเจ็กต์และตัวแปรที่คุณกำลังสร้างเท่านั้น
- เวลาบิลด์แบบเพิ่มที่เร็วขึ้นเมื่อทำการเปลี่ยนแปลงโค้ดหรือ ทรัพยากรอย่างง่าย
หมายเหตุ: การปรับปรุงเหล่านี้ต้องมีการเปลี่ยนแปลงที่สำคัญซึ่งจะทําให้ลักษณะการทํางาน DSL และ API บางอย่างของปลั๊กอินใช้งานไม่ได้ การอัปเกรดเป็นเวอร์ชัน 3.0.0 อาจต้องมีการเปลี่ยนแปลงไฟล์บิลด์และปลั๊กอิน Gradle
นอกจากนี้ เวอร์ชันนี้ยังมีฟีเจอร์ต่อไปนี้
- รองรับ Android 8.0
- รองรับการสร้าง APK แยกต่างหากตามแหล่งข้อมูลภาษา
- รองรับไลบรารี Java 8 และฟีเจอร์ภาษา Java 8 (ไม่มีคอมไพเลอร์ Jack)
- รองรับ Android Test Support Library 1.0 (Android Test Utility และ Android Test Orchestrator)
- ปรับปรุงความเร็วในการบิลด์ ndk-build และ cmake
- ปรับปรุงความเร็วในการซิงค์ Gradle
- ตอนนี้ระบบจะเปิดใช้ AAPT2 โดยค่าเริ่มต้น
- ตอนนี้การใช้
ndkCompileมีข้อจำกัดมากขึ้น คุณควรย้ายข้อมูลไปใช้ โดยใช้ CMake หรือ ndk-build เพื่อคอมไพล์โค้ดเนทีฟที่ต้องการแพ็กเกจ ลงใน APK แทน ดูข้อมูลเพิ่มเติมได้ที่หัวข้อย้ายข้อมูลจาก ndkcompile
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่เปลี่ยนแปลงได้ที่บันทึกประจำรุ่นของปลั๊กอิน Android สำหรับ Gradle
หากพร้อมที่จะอัปเกรดเป็นปลั๊กอินใหม่แล้ว โปรดดูย้ายข้อมูลไปยังปลั๊กอิน Android สำหรับ Gradle 3.0.0
การรองรับ Kotlin
ตามที่ประกาศใน Google I/O 2017 ตอนนี้ Android รองรับภาษาโปรแกรม Kotlin อย่างเป็นทางการแล้ว ดังนั้นในรุ่นนี้ Android Studio จึงรองรับภาษา Kotlin สำหรับการพัฒนา Android
คุณสามารถรวม Kotlin เข้ากับโปรเจ็กต์ได้โดยการแปลงไฟล์ Java เป็น Kotlin (คลิกโค้ด > แปลงไฟล์ Java เป็นไฟล์ Kotlin) หรือโดยการสร้างโปรเจ็กต์ใหม่ที่เปิดใช้ Kotlin โดยใช้ตัวช่วยสร้างโปรเจ็กต์ใหม่
หากต้องการเริ่มต้นใช้งาน โปรดอ่านวิธีเพิ่ม Kotlin ลงในโปรเจ็กต์
การรองรับฟีเจอร์ภาษาของ Java 8
ตอนนี้คุณใช้ฟีเจอร์ภาษาบางอย่างของ Java 8 และ ใช้ไลบรารีที่สร้างด้วย Java 8 ได้แล้ว ไม่จำเป็นต้องใช้ Jack อีกต่อไป และคุณควรปิดใช้ Jack ก่อน เพื่อใช้การรองรับ Java 8 ที่ได้รับการปรับปรุงซึ่งมีอยู่ใน Toolchain เริ่มต้น
หากต้องการอัปเดตโปรเจ็กต์ให้รองรับเครื่องมือภาษา Java 8 ใหม่ ให้อัปเดตความเข้ากันได้ของแหล่งที่มาและความเข้ากันได้ของเป้าหมายเป็น 1.8 ในกล่องโต้ตอบโครงสร้างโปรเจ็กต์ (คลิกไฟล์ > โครงสร้างโปรเจ็กต์) ดูข้อมูลเพิ่มเติมได้ที่วิธี ใช้ฟีเจอร์ภาษาของ Java 8
Android Profiler
Android Profiler ใหม่จะมาแทนที่เครื่องมือ Android Monitor และมีชุดเครื่องมือใหม่ สำหรับวัดการใช้งาน CPU, หน่วยความจำ และเครือข่ายของแอปแบบเรียลไทม์ คุณสามารถทำการติดตามตามวิธีการสุ่มตัวอย่างเพื่อกำหนดเวลาการ ดำเนินการโค้ด จับภาพฮีปดัมพ์ ดูการจัดสรรหน่วยความจำ และตรวจสอบรายละเอียด ของไฟล์ที่ส่งผ่านเครือข่าย
หากต้องการเปิด ให้คลิกดู > หน้าต่างเครื่องมือ > Android Profiler (หรือคลิก Android Profiler ในแถบเครื่องมือ)
ไทม์ไลน์ของเหตุการณ์ที่ด้านบนของหน้าต่างจะแสดงเหตุการณ์การแตะ การกดแป้น และการเปลี่ยนแปลงกิจกรรม เพื่อให้คุณมีบริบทมากขึ้นในการทำความเข้าใจเหตุการณ์ด้านประสิทธิภาพอื่นๆ ในไทม์ไลน์
หมายเหตุ: มุมมอง Logcat ได้ย้ายไปอยู่ใน หน้าต่างแยกต่างหากแล้ว (ก่อนหน้านี้อยู่ใน Android Monitor ซึ่งถูกนำออกไปแล้ว)
จากไทม์ไลน์ภาพรวมของ Android Profiler ให้คลิกไทม์ไลน์ CPU, MEMORY หรือ NETWORK เพื่อเข้าถึงเครื่องมือ Profiler ที่เกี่ยวข้อง
เครื่องมือสร้างโปรไฟล์ CPU
CPU Profiler ช่วยให้คุณวิเคราะห์การใช้งานเธรด CPU ของแอปได้โดย ทริกเกอร์การติดตาม CPU แบบสุ่มตัวอย่างหรือแบบวัดประสิทธิภาพ จากนั้นคุณจะ แก้ปัญหาด้านประสิทธิภาพของ CPU ได้โดยใช้มุมมองข้อมูลและตัวกรองต่างๆ
ดูข้อมูลเพิ่มเติมได้ที่คู่มือโปรไฟล์เลอร์ CPU
เครื่องมือสร้างโปรไฟล์หน่วยความจำ
Memory Profiler ช่วยให้คุณระบุการรั่วไหลของหน่วยความจำและการหมุนเวียนของหน่วยความจำที่อาจ ทำให้เกิดอาการติดขัด ค้าง และแม้แต่แอปขัดข้อง โดยจะแสดงกราฟแบบเรียลไทม์ของการใช้หน่วยความจำของแอป ให้คุณบันทึก Heap Dump บังคับการเก็บขยะ และติดตามการจัดสรรหน่วยความจำได้
ดูข้อมูลเพิ่มเติมได้ที่คู่มือ Memory Profiler
Network Profiler
Network Profiler ช่วยให้คุณตรวจสอบกิจกรรมเครือข่ายของแอป ตรวจสอบเพย์โหลดของคำขอเครือข่ายแต่ละรายการ และลิงก์กลับไปยัง โค้ดที่สร้างคำขอเครือข่ายได้
ดูข้อมูลเพิ่มเติมได้ที่คู่มือ Network Profiler
การทำโปรไฟล์และการแก้ไขข้อบกพร่องของ APK
ตอนนี้ Android Studio ช่วยให้คุณทำโปรไฟล์และแก้ไขข้อบกพร่องของ APK ได้โดยไม่ต้องสร้างจากโปรเจ็กต์ Android Studio ตราบใดที่ APK สร้างขึ้นเพื่อเปิดใช้การแก้ไขข้อบกพร่อง และ คุณมีสิทธิ์เข้าถึงสัญลักษณ์การแก้ไขข้อบกพร่องและไฟล์ต้นฉบับ
หากต้องการเริ่มต้นใช้งาน ให้คลิกสร้างโปรไฟล์หรือแก้ไขข้อบกพร่องของ APK จาก หน้าจอต้อนรับของ Android Studio หรือหากมีโปรเจ็กต์เปิดอยู่แล้ว ให้คลิก File > Profile or debug APK จากแถบเมนู ซึ่งจะแสดง ไฟล์ APK ที่ไม่ได้แพ็ก แต่จะไม่ดีคอมไพล์โค้ด ดังนั้น หากต้องการเพิ่มเบรกพอยต์และดูสแต็กเทรซอย่างถูกต้อง คุณต้องแนบไฟล์แหล่งข้อมูล Java และสัญลักษณ์การแก้ไขข้อบกพร่องของระบบ
ดูข้อมูลเพิ่มเติมได้ที่ ทำโปรไฟล์และแก้ไขข้อบกพร่องของ APK ที่สร้างไว้ล่วงหน้า
เครื่องมือสำรวจไฟล์สำหรับอุปกรณ์
File Explorer ของอุปกรณ์ใหม่ช่วยให้คุณตรวจสอบระบบไฟล์ของอุปกรณ์ที่เชื่อมต่อ และโอนไฟล์ระหว่างอุปกรณ์กับคอมพิวเตอร์ได้ ซึ่งจะแทนที่เครื่องมือระบบไฟล์ที่มีอยู่ใน DDMS
หากต้องการเปิด ให้คลิกดู > หน้าต่างเครื่องมือ > ตัวสำรวจไฟล์ของอุปกรณ์
ดูข้อมูลเพิ่มเติมได้ที่คู่มือ File Explorer ของอุปกรณ์
การสนับสนุน Instant Apps
การรองรับ Android Instant Apps ใหม่ช่วยให้คุณสร้าง Instant Apps ในโปรเจ็กต์ได้โดยใช้โมดูลประเภทใหม่ 2 ประเภท ได้แก่ โมดูล Instant App และโมดูลฟีเจอร์ (คุณต้องติดตั้ง Instant Apps Development SDK)
นอกจากนี้ Android Studio ยังมีการดำเนินการรีแฟคเตอร์แบบแยกส่วนใหม่ที่จะช่วยคุณ เพิ่มการรองรับ Instant Apps ในโปรเจ็กต์ที่มีอยู่ เช่น หากต้องการ รีแฟกเตอร์โปรเจ็กต์เพื่อวางคลาสบางรายการในโมดูลฟีเจอร์ของ Instant App ให้เลือกคลาสในหน้าต่างโปรเจ็กต์ แล้วคลิกรีแฟกเตอร์ > แยกโมดูล ในกล่องโต้ตอบที่ปรากฏขึ้น ให้เลือกโมดูลที่คลาสควรอยู่ แล้วคลิกตกลง
และเมื่อพร้อมที่จะทดสอบ Instant App แล้ว คุณสามารถสร้างและเรียกใช้ โมดูล Instant App ในอุปกรณ์ที่เชื่อมต่อได้โดยระบุ URL ของ Instant App ภายในตัวเลือกการเปิดใช้การกำหนดค่าการเรียกใช้: เลือกเรียกใช้ > แก้ไขการกำหนดค่า เลือกโมดูล Instant App แล้วตั้งค่า URL ในส่วนตัวเลือกการเปิดใช้
ดูข้อมูลเพิ่มเติมได้ที่ Android Instant Apps
โมดูล Android Things
เทมเพลต Android Things ใหม่ในวิซาร์ดโปรเจ็กต์ใหม่และโมดูลใหม่เพื่อช่วย ให้คุณเริ่มพัฒนาสำหรับอุปกรณ์ IoT ที่ขับเคลื่อนด้วย Android
ดูข้อมูลเพิ่มเติมได้ที่วิธีสร้างโปรเจ็กต์ Android Things
วิซาร์ดไอคอนแบบปรับอัตโนมัติ
ตอนนี้ Image Asset Studio รองรับ Vector Drawable และช่วยให้คุณสร้างไอคอน Launcher แบบปรับอัตโนมัติสำหรับ Android 8.0 พร้อมๆ กับการสร้างไอคอนแบบเดิม ("ไอคอนเดิม") สำหรับ อุปกรณ์รุ่นเก่าได้
หากต้องการเริ่มต้น ให้คลิกขวาที่โฟลเดอร์ res ในโปรเจ็กต์ แล้วคลิก New > Image Asset ในหน้าต่าง Asset Studio เลือกไอคอน Launcher (แบบปรับได้และแบบเดิม) เป็นประเภทไอคอน
หมายเหตุ: คุณต้องตั้งค่า compileSdkVersion เป็น 26 ขึ้นไปจึงจะใช้ไอคอนตัวเรียกแอปแบบปรับได้
ได้
ดูข้อมูลเพิ่มเติมได้ที่ ไอคอนที่ปรับเปลี่ยนได้
การรองรับทรัพยากรแบบอักษร
Android Studio มีตัวเลือกทรัพยากรแบบอักษรเพื่อช่วยรวมแบบอักษรไว้ในแอปหรือกำหนดค่าโปรเจ็กต์ให้ดาวน์โหลดแบบอักษรในอุปกรณ์ (หากมี) เพื่อรองรับทรัพยากรแบบอักษรใหม่ใน Android 8.0 นอกจากนี้ เครื่องมือแก้ไขเลย์เอาต์ยังแสดงตัวอย่างแบบอักษรในเลย์เอาต์ได้ด้วย
หากต้องการลองใช้แบบอักษรที่ดาวน์โหลดได้ โปรดตรวจสอบว่าอุปกรณ์หรือโปรแกรมจำลองของคุณใช้ บริการ Google Play v11.2.63 ขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ แบบอักษรที่ดาวน์โหลดได้
ผู้ช่วยการจัดทำดัชนีแอปของ Firebase
เราได้อัปเดตผู้ช่วย Firebase ด้วยบทแนะนำใหม่เพื่อทดสอบการจัดทำดัชนี แอป หากต้องการเปิด Assistant ให้เลือกเครื่องมือ > Firebase จากนั้นเลือกการจัดทำดัชนีแอป > ทดสอบการจัดทำดัชนีแอป
บทแนะนำนี้มีปุ่มใหม่ สำหรับทดสอบการจัดทำดัชนีเนื้อหาสาธารณะและเนื้อหาส่วนตัว
- ในขั้นตอนที่ 2 ให้คลิกดูตัวอย่างผลการค้นหาเพื่อยืนยันว่า URL ของคุณ ปรากฏในผลการค้นหาของ Google Search
- ในขั้นตอนที่ 3 ให้คลิกตรวจสอบข้อผิดพลาดเพื่อยืนยันว่าได้เพิ่มออบเจ็กต์ที่จัดทำดัชนีได้ ในแอปไปยังดัชนีเนื้อหาส่วนตัวแล้ว
ผู้ช่วย Android App Link
ผู้ช่วย App Link ได้รับการอัปเดตด้วยความสามารถใหม่ต่อไปนี้
-
เพิ่มการทดสอบ URL สำหรับการแมป URL แต่ละรายการเพื่อให้มั่นใจว่าตัวกรองเจตนา จะจัดการ URL ในโลกแห่งความเป็นจริงได้
คุณยังกำหนดการทดสอบ URL เหล่านี้ด้วยตนเองได้โดยใช้แท็ก
<tools:validation>ที่อธิบายไว้ด้านล่าง -
สร้างไฟล์ลิงก์เนื้อหาดิจิทัลที่มีรายการออบเจ็กต์ที่เหมาะสมเพื่อ รองรับ Google Smart Lock และเพิ่มแท็ก
asset_statements<meta-data>ที่เกี่ยวข้องลงใน ไฟล์ Manifest
เครื่องมือตรวจสอบตัวกรอง Intent ของ URL
ตอนนี้ Android Studio รองรับแท็กพิเศษในไฟล์ Manifest ซึ่งช่วยให้คุณทดสอบ URL ของตัวกรอง Intent ได้แล้ว โดยแท็กเหล่านี้เป็นแท็กเดียวกับที่ผู้ช่วยลิงก์แอป สร้างให้คุณได้
หากต้องการประกาศ URL ทดสอบ
สำหรับตัวกรอง Intent ให้เพิ่มองค์ประกอบ <tools:validation> ข้างองค์ประกอบ <intent-filter> ที่เกี่ยวข้อง
เช่น
<activity ...>
<intent-filter>
...
</intent-filter>
<tools:validation testUrl="https://www.example.com/recipe/1138" />
</activity>
อย่าลืมใส่ xmlns:tools="http://schemas.android.com/tools" ในแท็ก <manifest> ด้วย
หาก URL ทดสอบใดไม่ผ่านคำจำกัดความของตัวกรอง Intent ข้อผิดพลาดของ Lint จะปรากฏขึ้น ข้อผิดพลาดดังกล่าวจะยังคงอนุญาตให้คุณสร้างตัวแปรการแก้ไขข้อบกพร่องได้ แต่จะทำให้บิลด์รุ่นใช้งานใช้งานไม่ได้
เครื่องมือสร้างเลย์เอาต์
เครื่องมือสร้างเลย์เอาต์ได้รับการอัปเดต พร้อมการปรับปรุงหลายอย่าง ซึ่งรวมถึงรายการต่อไปนี้
- เลย์เอาต์และไอคอนแถบเครื่องมือใหม่
- เลย์เอาต์ที่อัปเดตในแผนผังคอมโพเนนต์
- ปรับปรุงการแทรกมุมมองด้วยการลากและวาง
- แผงข้อผิดพลาดใหม่ใต้เอดิเตอร์ ซึ่งแสดงปัญหาทั้งหมดพร้อมคำแนะนำในการ แก้ไข (หากมี)
- การเพิ่มประสิทธิภาพ UI ต่างๆ สำหรับการสร้างด้วย
ConstraintLayoutซึ่งรวมถึง รายการต่อไปนี้- การสนับสนุนใหม่ในการสร้างอุปสรรค
- การรองรับใหม่ในการสร้างกลุ่ม: ในแถบเครื่องมือ ให้เลือกแนวทาง > เพิ่มกลุ่ม (ต้องใช้ ConstraintLayout 1.1.0 เบต้า 2 ขึ้นไป)
- UI ใหม่สำหรับสร้างเชน: เลือกหลายมุมมอง แล้วคลิกขวา แล้วเลือกเชน
เครื่องมือตรวจสอบเลย์เอาต์
เครื่องมือตรวจสอบเลย์เอาต์มีการปรับปรุงเพื่อช่วยให้แก้ไขข้อบกพร่องเกี่ยวกับเลย์เอาต์ของแอปได้ง่ายขึ้น ซึ่งรวมถึง การจัดกลุ่มพร็อพเพอร์ตี้เป็นหมวดหมู่ทั่วไปและฟังก์ชันการค้นหาใหม่ทั้งใน แผนผังมุมมองและแผงพร็อพเพอร์ตี้
ตัววิเคราะห์ APK
ตอนนี้คุณใช้ APK Analyzer จากบรรทัดคำสั่งด้วยเครื่องมือ
apkanalyzer ได้แล้ว
นอกจากนี้ เรายังได้อัปเดตตัววิเคราะห์ APK ด้วยการปรับปรุงต่อไปนี้
- สำหรับ APK ที่สร้างด้วย ProGuard คุณสามารถโหลดไฟล์การแมป ProGuard ที่เพิ่มความสามารถให้กับโปรแกรมดู DEX ได้ ซึ่งรวมถึง
- โหนดที่ทำตัวหนาเพื่อระบุว่าไม่ควรนำโหนดออกเมื่อ ลดขนาดโค้ด
- ปุ่มสำหรับแสดงโหนดที่ถูกนำออกในระหว่างกระบวนการลดขนาด
- ปุ่มที่กู้คืนชื่อเดิมของโหนดในมุมมองแบบต้นไม้ที่ ProGuard ทำให้สับสน
- ตอนนี้ DEX Viewer จะแสดงผลกระทบด้านขนาดโดยประมาณของแต่ละแพ็กเกจ คลาส และ เมธอด
- ตัวเลือกการกรองใหม่ที่ด้านบนเพื่อแสดงและซ่อนฟิลด์และเมธอด
- ในมุมมองแบบต้นไม้ โหนดที่เป็นการอ้างอิงที่ไม่ได้กำหนดไว้ในไฟล์ DEX จะปรากฏเป็นตัวเอียง
ดูข้อมูลเพิ่มเติมได้ที่วิเคราะห์บิลด์ด้วยตัววิเคราะห์ APK
ตัวอย่างคอมไพเลอร์ DEX ของ D8
Android Studio 3.0 มีคอมไพเลอร์ DEX ใหม่ที่ไม่บังคับชื่อ D8 ซึ่งจะ แทนที่คอมไพเลอร์ DX ในที่สุด แต่คุณเลือกใช้คอมไพเลอร์ D8 ใหม่ได้แล้วตอนนี้
การคอมไพล์ DEX ส่งผลโดยตรงต่อเวลาในการสร้าง .dex ไฟล์
ขนาด และประสิทธิภาพรันไทม์ของแอป และเมื่อเปรียบเทียบคอมไพเลอร์ D8 ใหม่กับคอมไพเลอร์ DX ปัจจุบัน D8 จะคอมไพล์ได้เร็วกว่าและเอาต์พุตเป็นไฟล์ .dex ที่มีขนาดเล็กกว่า ในขณะที่ประสิทธิภาพรันไทม์ของแอปจะเท่าเดิมหรือดีกว่า
หากต้องการลองใช้ ให้ตั้งค่าต่อไปนี้ในไฟล์ gradle.properties ของโปรเจ็กต์
android.enableD8=true
ดูข้อมูลเพิ่มเติมได้ที่บล็อกโพสต์เกี่ยวกับคอมไพเลอร์ D8
ที่เก็บ Maven ของ Google
ตอนนี้ Android Studio ใช้ที่เก็บ Maven ของ Google เป็นค่าเริ่มต้นแทนการ ขึ้นอยู่กับ Android SDK Manager เพื่อรับข้อมูลอัปเดตสำหรับไลบรารีการสนับสนุนของ Android บริการ Google Play, Firebase และการอ้างอิงอื่นๆ ซึ่งจะช่วยให้คุณอัปเดตไลบรารีได้ง่ายขึ้น โดยเฉพาะเมื่อใช้ระบบการรวมอย่างต่อเนื่อง (CI)
ตอนนี้โปรเจ็กต์ใหม่ทั้งหมดจะมีที่เก็บ Maven ของ Google โดยค่าเริ่มต้น หากต้องการอัปเดต
โปรเจ็กต์ที่มีอยู่ ให้เพิ่ม google() ในบล็อก repositories ของไฟล์
build.gradle ระดับบนสุด
allprojects {
repositories {
google()
}
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับที่เก็บ Maven ของ Google ได้ที่นี่
การเปลี่ยนแปลงอื่นๆ
- การแก้ไขข้อบกพร่องแบบเนทีฟด้วย Android Studio ไม่รองรับ Windows แบบ 32 บิตอีกต่อไป เราเลือกที่จะมุ่งเน้นไปที่แพลตฟอร์มอื่นๆ เนื่องจากมีนักพัฒนาแอปเพียงไม่กี่รายที่ใช้แพลตฟอร์มนี้ หากคุณใช้ Windows 32 บิตและวางแผนที่จะแก้ไขข้อบกพร่องของโค้ดเนทีฟ คุณควรใช้ Android Studio 2.3 ต่อไป
- อัปเกรด IDE พื้นฐานเป็น IntelliJ 2017.1.2 ซึ่งเพิ่มฟีเจอร์ใหม่ๆ มากมายจาก 2016.3 และ 2017.1 เช่น การจัดโครงสร้างภาษา Java 8 ใหม่ คำแนะนำพารามิเตอร์ การไฮไลต์เชิงความหมาย เบรกพอยต์ที่ลากได้ ผลลัพธ์ทันทีในการค้นหา และอื่นๆ อีกมากมาย
- เพิ่มการตรวจสอบ Lint ใหม่ๆ มากมาย
- ดูข้อมูลอัปเดตล่าสุดเกี่ยวกับ Android Emulator ด้วย
2.3 (มีนาคม 2017)
Android Studio 2.3.0 เป็นรุ่นที่เน้นการแก้ไขข้อบกพร่องและความเสถียรเป็นหลัก แต่ก็มีฟีเจอร์ใหม่ๆ หลายอย่างด้วย
2.3.3 (มิถุนายน 2017)
การอัปเดตนี้เป็นการอัปเดตเล็กน้อยเพื่อเพิ่มการรองรับ Android O (API ระดับ 26)
2.3.2 (เมษายน 2017)
การอัปเดตนี้เป็นการอัปเดตเล็กน้อยสำหรับ Android Studio 2.3 โดยมีการเปลี่ยนแปลงดังนี้
- AVD Manager อัปเดตเพื่อรองรับ Google Play ในอิมเมจระบบ
- แก้ไขข้อบกพร่องสำหรับการสร้าง NDK เมื่อใช้ NDK เวอร์ชัน R14 ขึ้นไป
ดูการอัปเดตที่เกี่ยวข้องสำหรับ Android Emulator 26.0.3 ด้วย
2.3.1 (เมษายน 2017)
การอัปเดตนี้เป็นการอัปเดตเล็กน้อยสำหรับ Android Studio 2.3 ซึ่งแก้ไขปัญหาที่อุปกรณ์ Android จริงบางเครื่องทำงานไม่ถูกต้องกับ Instant Run (ดูปัญหา #235879)
<h3 class="hide-from-toc">
New
</h3>
<div class="video-wrapper-left">
<iframe class="devsite-embedded-youtube-video" data-video-id="VFyKclKBGf0"
data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
</iframe>
</div>
<ul>
<li>Android Studio can now convert PNG, BMP, JPG, and static GIF files to
WebP format. WebP is an image file format from Google that provides lossy
compression (like JPEG) as well as transparency (like PNG) but can provide
better compression than either JPEG or PNG. For more information, see
<a href="/studio/write/convert-webp.html">Convert images to WebP in Android
Studio</a>.
</li>
<li>The new <a href="/studio/write/app-link-indexing.html">App Links
Assistant</a> simplifies the process of adding Android App Links to your app
into a step-by-step wizard. Android App Links are HTTP URLs that bring users
directly to specific content in your Android app.
</li>
<li>The Layout Editor now includes support for two new ConstraintLayout
features:
<ul>
<li>Define a view size based on an aspect ratio.
</li>
<li>Create packed, spread, and weighted linear groups with constraint
chains.
</li>
</ul>
For more information, see <a href=
"/training/constraint-layout/index.html">Build a Responsive UI with
ConstraintLayout</a>.
</li>
<li>The Layout Editor also now lets you create a list of <a href=
"/studio/write/layout-editor.html#edit-properties">favorite attributes</a> so
you don't have to click <b>View all attributes</b> to access the attributes
you use most.
</li>
<li>When adding a material icon using the Vector Import Dialog (<b>File >
New > Vector Asset</b>), you can now filter the list of available icons by
category or by icon name. For more information, see <a href=
"/studio/write/vector-asset-studio.html#materialicon">Adding a material
icon</a>.
</li>
<li>
<a href="/studio/write/annotations.html#accessibility">New and updated
annotations</a>. The new <code>@RestrictTo</code> annotation for methods,
classes, and packages lets you restrict an API. The updated
<code>@VisibleForTesting</code> annotation now has an optional
<code>otherwise</code> argument that lets you designate what the visibility
of a method should be if not for the need to make it visible for testing.
Lint uses the <code>otherwise</code> option to enforce the intended
visibility of the method.
</li>
<li>New <a href="/studio/write/lint.html#snapshot">lint baseline support</a>
allows you to use a snapshot of your project's current set of warnings as a
baseline for future inspection runs so only new issues are reported. The
baseline snapshot lets you start using lint to fail the build for new issues
without having to go back and address all existing issues first.
</li>
<li>New lint checks, including the following:
<ul>
<li>Obsolete <code>SDK_INT</code> Checks: Android Studio removes obsolete
code that checks for SDK versions.
</li>
<li>Object Animator Validation: Lint analyzes your code to make sure that
your <code>ObjectAnimator</code> calls reference valid methods with the
right signatures and checks that those methods are annotated with <code>
@Keep</code> to prevent ProGuard from renaming or removing them during
release builds.
</li>
<li>Unnecessary Item Decorator Copy: Older versions of the
<code>RecyclerView</code> library did not include a divider decorator
class, but one was provided as a sample in the support demos. Recent
versions of the library have a divider decorator class. Lint looks for
the old sample and suggests replacing it with the new one.
</li>
<li>WifiManager Leak: Prior to Android 7.0 (API level 24), initializing
the <code>WifiManager</code> with <code><a href="/reference/android/content/Context.html#getSystemService(java.lang.Class<T>)">Context.getSystemService()</a></code>
can cause a memory leak if the context is not the application context.
Lint looks for these initializations, and if it <em>cannot</em> determine
that the context is the application context, it suggests you use <code><a href="/reference/android/content/Context.html#getApplicationContext()">Context.getApplicationContext()</a></code> to get the proper context for the
initialization.
</li>
<li>Improved Resource Prefix: The existing <code>resourcePrefix</code>
lint check had many limitations. You can now configure your project with
a prefix, such as <code>android { resourcePrefix '<var>my_lib</var>'
}</code>, and lint makes sure that all of your resources are using this
prefix. You can use variations of the name for styles and themes. For
example for the <var>my_lib</var> prefix, you can have themes named
<code>MyLibTheme</code>, <code>myLibAttr</code>,
<code>my_lib_layout</code>, and so on.
</li>
<li>Switch to WebP: This check identifies images in your project that can
be converted to WebP format based on your project’s
<code>minSdkVersion</code> setting. An associated quickfix can
automatically convert the images, or you can <a href=
"/studio/write/convert-webp.html">convert images to WebP</a> manually.
</li>
<li>Unsafe WebP: If your project already includes WebP images, this check
analyzes your project to ensure that your <code>minSdkVersion</code>
setting is high enough to support the included images. For more
information about WebP support in Android and Android Studio, see
<a class="external" href=
"https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp">
Which browsers natively support WebP?</a> and <a href=
"/studio/write/convert-webp.html">Create WebP Images Using Android
Studio</a>.
</li>
</ul>
</li>
</ul>
<h3 class="hide-from-toc">
Changes
</h3>
<ul>
<li>A separate button to push changes with Instant Run: After deploying your
app, you now click <b>Apply Changes</b> <img src=
"/studio/images/buttons/toolbar-apply-changes.svg" alt="" class=
"inline-icon"> to quickly push incremental changes to your running app using
Instant Run. The <b>Run</b> <img src="/studio/images/buttons/toolbar-run.png"
alt="" class="inline-icon"> and <b>Debug</b> <img src=
"/studio/images/buttons/toolbar-debug.png" alt="" class="inline-icon">
buttons are always available to you when you want to reliably push your
changes and force an app restart.
<ul>
<li>Instant Run is supported only when deploying your app to a target
device running Android 5.0 (API level 21) or higher.
</li>
<li>Instant Run is no longer disabled for projects that <a href=
"/studio/projects/add-native-code.html">link to external native
projects</a> using CMake or ndk-build. However, you can only use Instant
Run to push incremental changes to your Java code, not your native code.
</li>
<li>Cold swaps (which you can force for a running app by clicking
<strong>Run</strong> <img src="/studio/images/buttons/toolbar-run.png"
alt="" class="inline-icon">) are now more reliable. Forcing a cold swap
also fixes the issue where changes to notification and widget UIs were
not updated on the target device.
</li>
<li>Includes optimizations that make app startup much faster. These
optimizations may affect profiling, so you should temporarily <a href=
"/studio/run/index.html#disable-ir">disable Instant Run</a> whenever
profiling your app.
</li>
</ul>
</li>
<li>
<p>
The <b>AVD Manager</b> <img src=
"/studio/images/buttons/toolbar-avd-manager.png" alt="" class=
"inline-icon"> and <b>SDK Manager</b> <img src=
"/studio/images/buttons/toolbar-sdk-manager.png" alt="" class=
"inline-icon"> buttons are now included in the lean Navigation Bar as
well as the full Toolbar. To use the lean Navigation Bar, click
<b>View</b> to open the View menu, then ensure that <b>Navigation Bar</b>
is selected and <b>Toolbar</b> is <em>not</em> selected.
</p>
<img src="/studio/images/releases/navigationbar_sdkavd_2x.png" width="757">
</li>
<li>The "Hybrid" debugger has been renamed to "Dual" debugger.
</li>
<li>In the <a href="/studio/run/rundebugconfig.html">Run/Debug
Configurations</a> dialog, under Defaults in the left pane, the following run
configuration names have changed with no behavior changes:
<ul>
<li>The JUnit name has changed to Android JUnit. If you have a project
that uses JUnit run configurations, those configurations are transformed
to Android JUnit run configurations the first time you open the project
with Android Studio. A dialog appears to inform you of the name change.
</li>
<li>The Android Tests name has changed to Android Instrumented Tests.
</li>
</ul>
</li>
<li>The <a href="/studio/debug/am-gpu-debugger.html">GPU Debugger</a> has
been removed from Android Studio as of version 2.3. An open-source,
standalone version of the tool is now available on <a href=
"https://github.com/google/gapid" class="external-link">GitHub</a>.
</li>
<li>The Run/Debug option is no longer available when you right-click a <code>
*.gradle build</code> script.
</li>
<li>All templates now use <code>ConstraintLayout</code> as the default
layout.
</li>
<li>The Widgets palette in the Layout Editor has been redesigned.
</li>
</ul>
<p>
This release also includes a number of bug fixes. <a href=
"https://code.google.com/p/android/issues/list?can=1&q=target%3D2.3+status%3DReleased&colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&cells=tiles">
See all bug fixes in 2.3.0.</a>
</p>
<p class="note">
<b>Known issue:</b> Some device manufacturers block apps from automatically
launching after being installed on the device. When deploying your app to a
physical device using Android Studio 2.3, this restriction breaks the
intended behavior of Instant Run and causes the following error output:
<code>Error: Not found; no service started</code>. To avoid this issue,
either <a href="/studio/run/emulator.html">use the emulator</a> or enable
automatic launching for your app in your device's settings. The procedure
for doing this is different for each device, so check the instructions
provided by the manufacturer. To learn more about this issue, see
<a href="https://code.google.com/p/android/issues/detail?id=235879">Issue
#235879</a>.
</p>
2.2 (กันยายน 2016)
2.2.3 (ธันวาคม 2016)
<p>
This is a minor update to Android Studio 2.2. It includes a bug fixes
focused around gradle, the core IDE, and lint.
</p>
<p>
Highlighted build changes:
</p>
<ul>
<li>ProGuard version rollback. Due to a <a href=
"https://sourceforge.net/p/proguard/bugs/625/">correctness issue</a>
discovered in ProGuard 5.3.1, we have rolled back to ProGuard 5.2.1. We
have worked with the ProGuard team on getting a fix quickly, and we expect
to roll forward to ProGuard 5.3.2 in Android Studio 2.3 Canary 3.
</li>
<li>Bug fix for <code>aaptOptions</code> <code>IgnoreAssetsPattern</code>
not working properly (<a href="http://b.android.com/224167">issue
224167</a>)
</li>
<li>Bug fix for Gradle autodownload for Constraint Layout library
(<a href="https://code.google.com/p/android/issues/detail?id=212128">issue
212128</a>)
</li>
<li>Bug fix for a JDK8/Kotlin compiler + dx issue (<a href=
"http://b.android.com/227729">issue 227729</a>)
</li>
</ul>
<p>
<a href=
"https://code.google.com/p/android/issues/list?can=1&q=target%3D2.2.3+status%3AReleased+&colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&cells=tiles">
See all bug fixes in 2.2.3</a>.
</p>
2.2.2 (ตุลาคม 2016)
<p>
This is a minor update to Android Studio 2.2. It includes a number of small
changes and bug fixes, including:
</p>
<ul>
<li>When reporting Instant Run issues through the IDE, the report now also
includes logcat output for <code>InstantRun</code> events. To help us
improve Instant Run, please <a href=
"/studio/run/index.html#submit-feedback">enable extra logging and report
any issues</a>.
</li>
<li>A number of small bug fixes for Gradle.
</li>
<li>A fix for problems with generating multiple APKs.
</li>
</ul>
2.2.1 (ตุลาคม 2016)
<p>
This is a minor update to Android Studio 2.2. It includes several bug fixes
and a new feature to enable extra logging to help us troubleshoot Instant
Run issues—to help us improve Instant Run, please <a href=
"/studio/run/index.html#submit-feedback">enable extra logging and report
any issues</a>.
</p>
ใหม่
- เครื่องมือสร้างเลย์เอาต์ใหม่ทั้งหมดพร้อมเครื่องมือที่สร้างขึ้นมาโดยเฉพาะเพื่อรองรับ ConstraintLayout
<li>New <strong><a href=
"http://tools.android.com/tech-docs/layout-inspector">Layout
Inspector</a></strong> lets you examine snapshots of your layout hierarchy
while your app is running on the emulator or a device.
</li>
<li>New <strong><a href="/studio/write/firebase.html">Assistant</a></strong>
window to help you integrate Firebase services into your app.
</li>
<li>New <strong><a href="/studio/debug/apk-analyzer.html">APK
Analyzer</a></strong> tool so you can inspect the contents of your packaged
app.
</li>
<li>New <strong><a href=
"http://tools.android.com/tech-docs/test-recorder">Espresso Test
Recorder</a></strong> tool (currently in beta) to help you create UI tests by
recording your own interactions.
</li>
<li>New <strong><a href=
"http://tools.android.com/tech-docs/build-cache">build cache</a></strong>
(currently experimental) to speed up build performance.
</li>
<li>New <strong>C/C++ build integration with CMake and ndk-build</strong>.
Compile and build new or existing native code into libraries packaged into
your APK, and debug using lldb. For new projects, Android Studio uses CMake
by default, but also supports ndk-build for existing projects. To learn how
to include native code in your Android application, read <a href=
"/studio/projects/add-native-code.html">Add C and C++ Code to Your
Project</a>. To learn how to debug native code with lldb, see <a href=
"/studio/debug/index.html#debug-native">Debug Native Code</a>.
</li>
<li>New <strong><a href="/studio/intro/index.html#sample-code">Samples
Browser</a></strong> so you can easily look up Google Android sample code
from within Android Studio to jump start app development.
</li>
<li>New <strong>Merged Manifest Viewer</strong> to help you diagnose how your
manifest file merges with your app dependencies across project build
variants.
</li>
<li>The <strong>Run</strong> window now contains log messages for the current
running app. Note that you can configure the <a href=
"/studio/debug/am-logcat.html">logcat Monitor</a> display, but not the
<strong>Run</strong> window.
</li>
<li>New <strong><a href="/studio/run/emulator.html">Android
Emulator</a></strong> features:
<ul>
<li>Added new <strong>Virtual</strong> <strong>Sensors</strong> and
<strong>Cellular</strong> > <strong>Signal Strength</strong> controls.
</li>
<li>Added an <strong>LTE</strong> option to the <strong>Cellular</strong>
> <strong>Network type</strong> control.
</li>
<li>Added simulated vertical swipes for scrolling through vertical menus
with a mouse wheel.
</li>
</ul>
</li>
<li>New <strong><a href="/studio/run/rundebugconfig.html">Run/Debug
Configuration</a></strong> features:
<ul>
<li>The <strong>Debugger</strong> tab of the Android App and Android
Tests templates now contain several new options for debugging with LLDB.
</li>
<li>The <strong>Profiling</strong> tab of the Android App and Android
Tests templates now contain a <strong>Capture GPU Commands</strong>
option for enabling GPU tracing. You can display GPU traces in the GPU
Debugger (a beta feature).
</li>
<li>The Android Tests template now has a <strong>Firebase Test Lab Device
Matrix</strong> option for the <strong>Deployment Target</strong>.
</li>
<li>The Native Application template has been deprecated. If you use this
template in a project, Android Studio automatically converts it to the
Android App template.
</li>
<li>The Android Application template has been renamed to Android App.
</li>
</ul>
</li>
<li>Improved installation, configuration, performance, and UI features in the
<strong><a href="/studio/debug/am-gpu-debugger.html">GPU
Debugger</a></strong> (currently in beta).
</li>
<li>Android Studio now comes bundled with <strong>OpenJDK 8</strong>.
Existing projects still use the JDK specified in <strong>File > Project
Structure > SDK Location</strong>. You can switch to use the new bundled
JDK by clicking <strong>File > Project Structure > SDK
Location</strong> and checking the <strong>Use embedded JDK</strong>
checkbox.
</li>
<li>Added new <strong>help menus and buttons</strong> in the UI so you can
more easily find the online documentation.
</li>
การเปลี่ยนแปลง
- อัปเดตฐานของโค้ด IDE จาก IntelliJ 15 เป็น IntelliJ 2016.1
- ตอนนี้ Instant Run กำหนดให้ต้องติดตั้ง SDK ของแพลตฟอร์มที่สอดคล้องกับระดับ API ของอุปกรณ์เป้าหมาย
- ระบบจะปิดใช้ Instant Run โดยอัตโนมัติหากผู้ใช้เรียกใช้แอปภายใต้ โปรไฟล์งานหรือในฐานะผู้ใช้รอง
- แก้ไขปัญหาความน่าเชื่อถือหลายอย่างสำหรับInstant Run ซึ่งการเปลี่ยนแปลง
ไม่ได้รับการติดตั้งใช้งานหรือแอปขัดข้อง ดังนี้
- ระบบไม่ได้ติดตั้งใช้งานชิ้นงานแอปบางรายการกับแอปที่ทำงานอยู่ (ข้อบกพร่อง: #213454)
- แอปขัดข้องเมื่อผู้ใช้เปลี่ยนจากเซสชัน Instant Run เป็นเซสชันที่ไม่ใช่ Instant Run ในกรณีที่ไม่ได้กำหนด serialVersionUID สำหรับคลาสที่ทำซีเรียลไลซ์ได้ (ข้อบกพร่อง: #209006)
- การเปลี่ยนแปลงสไตล์จะไม่แสดงในการเรียกใช้ทันที (ข้อบกพร่อง: #210851)
- เซสชัน Instant Run ไม่น่าเชื่อถือและทำให้เกิด FileNotFoundException (ข้อบกพร่อง: #213083)
- การเปลี่ยนแปลง Drawable จะไม่แสดงจนกว่าจะมีการสร้างใหม่ทั้งหมด สำหรับ KitKat (ข้อบกพร่อง: #21530)
- การเปลี่ยนแปลงทรัพยากรจะไม่แสดงด้วยการเรียกใช้ด่วนเมื่อ sourceSets ที่กำหนดเองมีเส้นทางที่ซ้อนกัน (ข้อบกพร่อง: #219145)
- การสลับร้อนและสลับอุ่นจะใช้ไม่ได้หากคลาสที่เปลี่ยนแปลงมีการเพิ่มคำอธิบายประกอบ ที่มีค่า enum (ข้อบกพร่อง: #209047)
- การเปลี่ยนแปลงข้อมูลคำอธิบายประกอบจะไม่แสดงด้วยการเรียกใช้ทันที (ข้อบกพร่อง: #210089)
- Instant Run จะไม่รับการเปลี่ยนแปลงโค้ดหากคุณทำการเปลี่ยนแปลงภายนอก IDE (ข้อบกพร่อง: #213205)
- เซสชัน Instant Run ไม่น่าเชื่อถือเนื่องจากโทเค็นความปลอดภัยไม่ตรงกัน (ข้อบกพร่อง: #211989
- การสลับแบบเย็นจะล้มเหลวสำหรับอุปกรณ์ที่ไม่รองรับ run-as อย่างถูกต้อง (ข้อบกพร่อง: #210875)
- แอปขัดข้องหลังจากรีสตาร์ทการเรียกใช้ด่วน (ข้อบกพร่อง: #219744)
- พบ ClassNotFoundException เมื่อเปลี่ยนจาก Instant Run เป็น Instant Debug (ข้อบกพร่อง: #215805)
<li>Improved performance for <strong>Gradle sync</strong> within the IDE,
especially for large projects.
</li>
<li>Improved build times for both full and incremental builds with new app
packaging code.
</li>
<li>Improved <strong>Jack compiler performance and features</strong>,
including support for annotation processors and dexing in process. To learn
more, read the <a href=
"/studio/releases/gradle-plugin.html#revisions">Android plugin for Gradle
2.2.0 release notes</a>.
</li>
<li>Removed the <strong>Scale</strong> AVD property from the AVD Manager.
</li>
<li>The Android Emulator <strong>-port</strong> and <strong>-ports</strong>
command-line options now report which ports and serial number the emulator
instance is using, and warn if there are any issues with the values you
provided.
</li>
<li>Improved the <strong><a href=
"/studio/write/create-java-class.html">Create New Class dialog</a></strong>
and the corresponding file templates. <strong>Note:</strong> If you've
previously customized the <strong>AnnotationType</strong>,
<strong>Class</strong>, <strong>Enum</strong>, <strong>Interface</strong>, or
<strong>Singleton</strong> file templates, you need to modify your templates
to comply with the new templates or you won’t be able to use the new fields
in the <strong>Create New Class</strong> dialog.
</li>
<li>Improved the <strong><a href=
"/studio/write/vector-asset-studio.html">Vector Asset Studio</a></strong>
user interface and added support for Adobe Photoshop Document (PSD) files.
</li>
<li>Improved the <strong><a href=
"/studio/write/image-asset-studio.html">Image Asset Studio</a></strong> user
interface.
</li>
<li>Improved the <strong>Theme Editor</strong>'s Resource Picker.
</li>
<li>Fixed memory leaks and reduced overall memory usage in Android Studio.
</li>
<li>Added a <strong>Background</strong> button in the <strong><a href=
"/studio/intro/update.html#sdk-manager">SDK Manager</a></strong> so you can
get back to work and install your packages in the background.
</li>
<li>Improved <strong><a href="/studio/intro/accessibility.html">Accessibility
features</a></strong>, including support for screen readers and keyboard
navigation.
</li>
<li>Enhanced <strong>Code Analysis</strong> includes code quality checks for
Java 8 language usage and more cross-file analysis.
</li>
<li>Several toolbar icons have changed.
</li>
2.1 (เมษายน 2016)
การเปลี่ยนแปลงหลักในการอัปเดตนี้คือการรองรับการพัฒนาด้วย Android N Preview
2.1.3 (สิงหาคม 2016)
การอัปเดตนี้เพิ่มความเข้ากันได้กับ Gradle 2.14.1 ซึ่งมีการปรับปรุงประสิทธิภาพ ฟีเจอร์ใหม่ และการแก้ไขด้านความปลอดภัยที่สำคัญ ดูรายละเอียดเพิ่มเติมได้ที่บันทึกประจำรุ่น Gradle
โดยค่าเริ่มต้น โปรเจ็กต์ใหม่ใน Android Studio 2.1.3 จะใช้ Gradle 2.14.1 สำหรับ โปรเจ็กต์ที่มีอยู่ IDE จะแจ้งให้คุณอัปเกรดเป็น Gradle 2.14.1 และ ปลั๊กอิน Android สำหรับ Gradle 2.1.3 ซึ่งจำเป็นเมื่อใช้ Gradle 2.14.1 และ สูงกว่า
2.1.2 (มิถุนายน 2016)
การอัปเดตนี้มีการเปลี่ยนแปลงเล็กๆ น้อยๆ และการแก้ไขข้อบกพร่องหลายอย่าง ดังนี้
- การอัปเดตและแก้ไขข้อบกพร่องของInstant Run
- การปรับปรุงประสิทธิภาพของ LLDB และการแจ้งเตือนข้อขัดข้อง
- แก้ไขการถดถอยในการอัปเดตความปลอดภัยของ Android Studio 2.1.1 ที่
ทำให้
git rebaseล้มเหลว
2.1.1 (พฤษภาคม 2016)
การอัปเดตการเผยแพร่ด้านความปลอดภัย
แพลตฟอร์ม Android N เพิ่มการรองรับฟีเจอร์ภาษา Java 8 ซึ่ง ต้องใช้คอมไพเลอร์เวอร์ชันทดลองใหม่ที่ชื่อ Jack ขณะนี้ Android Studio 2.1 เท่านั้นที่รองรับ Jack เวอร์ชันล่าสุด ดังนั้นหากต้องการใช้ฟีเจอร์ภาษาของ Java 8 คุณต้องใช้ Android Studio 2.1 เพื่อสร้างแอป
หมายเหตุ: ระบบจะปิดใช้ Instant Run เมื่อคุณเปิดใช้คอมไพเลอร์ Jack เนื่องจากขณะนี้ยังไม่ รองรับการใช้งานร่วมกัน
แม้ว่าตอนนี้ Android Studio 2.1 จะเสถียรแล้ว แต่คอมไพเลอร์ Jack ยังคงเป็น
เวอร์ชันทดลองและคุณต้องเปิดใช้ด้วยพร็อพเพอร์ตี้ jackOptions
ในไฟล์ build.gradle
นอกจากการเปลี่ยนแปลงเพื่อรองรับ N Preview แล้ว Android Studio 2.1 ยังมีการแก้ไขข้อบกพร่องเล็กๆ น้อยๆ และการปรับปรุงต่อไปนี้ด้วย
- ตอนนี้ระบบจะเปิดใช้ดีบักเกอร์ C++ ที่รองรับ Java โดยค่าเริ่มต้นเมื่อคุณ ใช้อุปกรณ์หรือโปรแกรมจำลอง N และเลือกโหมดดีบักเกอร์เนทีฟ (ในแท็บดีบักเกอร์สำหรับการกำหนดค่าการเรียกใช้/การแก้ไขข้อบกพร่อง)
สำหรับการเพิ่มประสิทธิภาพการบิลด์อื่นๆ ซึ่งรวมถึงการคอมไพล์ Java แบบเพิ่มทีละรายการ และการแปลง DEX ในกระบวนการ ให้อัปเดตปลั๊กอิน Android สำหรับ Gradle เป็นเวอร์ชัน 2.1.0
2.0 (เมษายน 2016)
หมายเหตุ: หากคุณกำลังพัฒนาแอปสำหรับ N Developer Preview คุณควรใช้ Android Studio 2.1 Preview Android Studio 2.0 ไม่รองรับ ฟีเจอร์ทั้งหมดที่จำเป็นต่อการกำหนดเป้าหมายไปยัง N Preview
Instant Run:
- ตอนนี้ Android Studio จะติดตั้งใช้งานบิลด์ที่สะอาดได้เร็วกว่าที่เคย นอกจากนี้ การพุชการเปลี่ยนแปลงโค้ดที่เพิ่มขึ้นไปยังโปรแกรมจำลองหรืออุปกรณ์จริง ก็ทำได้เกือบจะในทันที ตรวจสอบการอัปเดตโดยไม่ต้องติดตั้งใช้งาน บิลด์ดีบักใหม่ หรือในหลายกรณีโดยไม่ต้องรีสตาร์ทแอป
- Instant Run รองรับการพุชการเปลี่ยนแปลงต่อไปนี้ไปยังแอปที่กำลังทำงาน
- การเปลี่ยนแปลงการใช้งานเมธอดอินสแตนซ์หรือเมธอดแบบคงที่ที่มีอยู่
- การเปลี่ยนแปลงทรัพยากรแอปที่มีอยู่
- การเปลี่ยนแปลงโค้ดโครงสร้าง เช่น ลายเซ็นของเมธอดหรือฟิลด์แบบคงที่ (ต้องใช้อุปกรณ์เป้าหมายที่ใช้ API ระดับ 21 ขึ้นไป)
- อ่านเอกสารประกอบเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับ Instant
Run
หมายเหตุ: Instant Run จะรองรับเฉพาะเมื่อคุณติดตั้งใช้งาน ตัวแปรบิลด์สำหรับดีบัก ใช้ปลั๊กอิน Android สำหรับ Gradle เวอร์ชัน 2.0.0 ขึ้นไป และกำหนดค่าไฟล์
build.gradleระดับโมดูลของแอปสำหรับminSdkVersion 15ขึ้นไป กําหนดค่าแอปสําหรับminSdkVersion 21ขึ้นไปเพื่อให้ได้ประสิทธิภาพที่ดีที่สุด
การเพิ่มใหม่ใน Lint:
- การตรวจสอบคำสั่ง
switchโดยใช้จำนวนเต็มที่ทำเครื่องหมาย@IntDefเพื่อให้แน่ใจว่า ค่าคงที่ทั้งหมดได้รับการจัดการ หากต้องการเพิ่มคำสั่งที่ขาดหายไปอย่างรวดเร็ว ให้ใช้เมนูแบบเลื่อนลงของการดำเนินการตามความตั้งใจ แล้วเลือกเพิ่มค่าคงที่ @IntDef ที่ขาดหายไป - Flag สำหรับความพยายามที่ไม่ถูกต้องในการใช้การแทรกค่าสตริงเพื่อแทรก
หมายเลขเวอร์ชันในไฟล์
build.gradle - Flags สำหรับชั้นเรียนที่ไม่ระบุตัวตนซึ่งขยายชั้นเรียน
Fragment - แฟล็กสำหรับโค้ดแบบเนทีฟในตำแหน่งที่ไม่ปลอดภัย เช่น โฟลเดอร์
res/และasset/โดยแฟล็กนี้จะสนับสนุนให้จัดเก็บโค้ดเนทีฟไว้ในโฟลเดอร์libs/ซึ่งจะได้รับการแพ็กอย่างปลอดภัยลงในโฟลเดอร์data/app-lib/ของแอปพลิเคชันในเวลาที่ติดตั้ง AOSP: #169950 - แจ้งการโทรที่ไม่ปลอดภัยไปยัง
Runtime.load()และการโทรSystem.load()AOSP: #179980 - ค้นหาและนำทรัพยากรที่ไม่ได้ใช้ออกโดยเลือกปรับโครงสร้าง > นำ
ทรัพยากรที่ไม่ได้ใช้ออกจากแถบเมนู ตอนนี้การตรวจหาทรัพยากรที่ไม่ได้ใช้
รองรับทรัพยากรที่อ้างอิงโดยทรัพยากรที่ไม่ได้ใช้เท่านั้น การอ้างอิงในไฟล์ดิบ
เช่น
.htmlการอ้างอิงรูปภาพ และแอตทริบิวต์tools:keepและtools:discardที่ใช้โดยเครื่องมือลดขนาดทรัพยากรของ Gradle ขณะพิจารณาชุดแหล่งที่มาที่ไม่ได้ใช้งาน (เช่น ทรัพยากรที่ใช้ในบิลด์ Flavor อื่นๆ) และจัดการการนำเข้าฟิลด์แบบคงที่อย่างเหมาะสม - ตรวจสอบว่าแพลตฟอร์มทั้งหมดที่
minSdkVersionกำหนดเป้าหมายรองรับการอ้างอิง API โดยนัย - แจ้งการใช้งาน
RecyclerViewและParcelableไม่เหมาะสม - ตอนนี้ระบบจะตรวจสอบการตรวจสอบ
@IntDef,@IntRangeและ@Sizeสำหรับอาร์เรย์intและ Varargs ด้วย
การปรับปรุงเพิ่มเติม
- ซึ่งได้รับการเพิ่มประสิทธิภาพสำหรับ Android Emulator 2.0 ที่เร็วกว่าที่เคย รองรับอุปกรณ์เสมือนที่หลากหลายมากขึ้น และมี UI ที่ได้รับการปรับปรุง อย่างมาก ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลองใหม่ได้ในบันทึกประจำรุ่นของเครื่องมือ SDK
- การปรับปรุงตัวจัดการอุปกรณ์เสมือน Androidมีดังนี้
- ตอนนี้ระบบได้จัดหมวดหมู่รูปภาพระบบไว้ใต้แท็บต่อไปนี้แล้ว แนะนำ x86 และอื่นๆ
- ในการตั้งค่าขั้นสูง คุณสามารถเปิดใช้การรองรับแบบหลายคอร์และ ระบุจำนวนคอร์ที่โปรแกรมจำลองสามารถใช้ได้
- ในการตั้งค่าขั้นสูง คุณสามารถกำหนดวิธีแสดงผลกราฟิก
ในโปรแกรมจำลองได้โดยเลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้
- ฮาร์ดแวร์: ใช้การ์ดกราฟิกของคอมพิวเตอร์เพื่อ การแสดงผลที่เร็วขึ้น
- ซอฟต์แวร์: ใช้การแสดงผลตามซอฟต์แวร์
- อัตโนมัติ: ให้โปรแกรมจำลองตัดสินใจเลือกตัวเลือกที่ดีที่สุด โดยตัวเลือกนี้ จะเป็นการตั้งค่าเริ่มต้น
- ปรับปรุงเวลาในการแพ็กเกจ AAPT โดยการระบุเป้าหมายการติดตั้งใช้งานก่อนที่จะสร้างแอป ซึ่งจะช่วยให้ Android Studio จัดแพ็กเกจเฉพาะทรัพยากรที่อุปกรณ์ที่ระบุต้องการได้อย่างมีประสิทธิภาพ
- เพิ่มการผสานรวม Cloud Test Lab เพื่อให้การทดสอบแอปตามต้องการพร้อมความสะดวกและ ความสามารถในการปรับขนาดของบริการระบบคลาวด์ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ Cloud Test Lab กับ Android Studio
- เพิ่มตัวอย่างเครื่องมือแก้ไขข้อบกพร่องของ GPU ใหม่ สำหรับแอปพลิเคชันที่ใช้กราฟิกหนักๆ ตอนนี้คุณสามารถดูโค้ด OpenGL ES แบบทีละขั้นตอนเพื่อเพิ่มประสิทธิภาพแอปหรือเกมได้แล้ว
- เพิ่มการทดสอบการจัดทำดัชนีแอป Google เพิ่มการรองรับ URL, การจัดทำดัชนีแอป และฟังก์ชันการค้นหาลงในแอปเพื่อช่วยเพิ่มการเข้าชมแอป ค้นหาเนื้อหาแอปที่มีการใช้งานมากที่สุด และดึงดูดผู้ใช้ใหม่ ทดสอบและตรวจสอบ URL ในแอปได้ทั้งหมดภายใน Android Studio ดูการรองรับ URL และการจัดทำดัชนีแอป ใน Android Studio
- อัปเกรดจาก IntelliJ 15 เวอร์ชันล่าสุด ซึ่งรวมถึงการวิเคราะห์โค้ดและประสิทธิภาพที่ดียิ่งขึ้น ดูคำอธิบายแบบสมบูรณ์ของฟีเจอร์ใหม่และการเพิ่มประสิทธิภาพได้ที่หัวข้อมีอะไรใหม่ใน IntelliJ
- ตอนนี้การเติมข้อความอัตโนมัติของโปรแกรมแก้ไข XML จะเพิ่มเครื่องหมายคำพูดเมื่อเติม แอตทริบิวต์ หากต้องการตรวจสอบว่าได้เปิดใช้ตัวเลือกนี้หรือไม่ ให้เปิดกล่องโต้ตอบการตั้งค่าหรือ ค่ากําหนด ไปที่เอดิเตอร์ > ทั่วไป > คีย์อัจฉริยะ แล้วเลือกช่องข้างเพิ่มเครื่องหมายคำพูดสำหรับค่าแอตทริบิวต์เมื่อ เติมข้อความแอตทริบิวต์อัตโนมัติ ปัญหา: 195113
- ตอนนี้โปรแกรมแก้ไข XML รองรับการเติมโค้ดอัตโนมัติสำหรับนิพจน์การเชื่อมโยงข้อมูล แล้ว
Android Studio v1.5.1 (ธันวาคม 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- แก้ไขปัญหาการแสดงผลล้มเหลวใน Layout Editor ปัญหา: 194612
- เพิ่มความสามารถในการเปลี่ยนแปลง
descriptionแอตทริบิวต์ Manifest ตามการกำหนดค่า ปัญหา: 194705 - ปรับปรุงคอนทราสต์ของธีมลักษณะที่ปรากฏ Darcula ของ Android Studio ใน Vector Asset Studio ปัญหา: 191819
- เพิ่มการรองรับปุ่มความช่วยเหลือใน Vector Asset Studio
- เพิ่มการรองรับตัวดำเนินการ
%สำหรับการเชื่อมโยงข้อมูล ปัญหา: 194045 - แก้ไขกรณีที่การเปิดแอปเพื่อแก้ไขข้อบกพร่องทำให้โปรแกรมแก้ไขข้อบกพร่องเชื่อมต่อกับอุปกรณ์ที่ไม่ถูกต้อง ปัญหา: 195167
- แก้ไขข้อยกเว้น NullPointerException ที่อาจเกิดขึ้นเมื่อพยายามเรียกใช้แอปใน บางสถานการณ์
Android Studio v1.5.0 (พฤศจิกายน 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- เพิ่มความสามารถในการวิเคราะห์เครื่องมือตรวจสอบหน่วยความจำใหม่ลงใน Android Monitor เมื่อดูไฟล์ HPROF ที่บันทึกจากเครื่องมือตรวจสอบนี้ ตอนนี้การแสดงผลจะมีประโยชน์มากขึ้นเพื่อให้คุณค้นหา ปัญหาต่างๆ เช่น หน่วยความจำรั่ว ได้เร็วขึ้น หากต้องการใช้เครื่องมือตรวจสอบนี้ ให้คลิก Android Monitor ที่ด้านล่างของหน้าต่างหลัก ใน Android Monitor ให้คลิกแท็บหน่วยความจำ ขณะที่ จอภาพทำงานอยู่ ให้คลิกไอคอนทิ้งฮีปของ Java แล้วคลิก การจับภาพในหน้าต่างหลัก จากนั้นดับเบิลคลิกไฟล์เพื่อดู คลิก การวิเคราะห์การจับภาพทางด้านขวา (Android Device Monitor ไม่สามารถทำงานพร้อมกับ Android Monitor ได้)
- เพิ่มการรองรับ Deep Link และ App Link ใหม่ เครื่องมือแก้ไขโค้ดจะสร้าง
ตัวกรอง Intent สำหรับ Deep Link ในไฟล์
AndroidManifest.xmlโดยอัตโนมัติ นอกจากนี้ ยัง สร้างโค้ดเพื่อช่วยคุณผสานรวมกับ App Indexing API ในกิจกรรมในไฟล์ Java ได้ด้วย ฟีเจอร์การทดสอบ Deep Link ช่วยให้คุณยืนยันได้ว่า Deep Link ที่ระบุสามารถเปิดแอปได้ ในแท็บทั่วไป ของกล่องโต้ตอบการกำหนดค่าการเรียกใช้/การแก้ไขข้อบกพร่อง คุณสามารถระบุตัวเลือกการเปิดใช้ Deep Link ได้ นอกจากนี้ คุณยังทดสอบการเรียก App Indexing API ในกิจกรรมได้โดยใช้การแสดงผล logcat ของ Android Monitor ตอนนี้เครื่องมือlintของ Android มีคำเตือนสำหรับ ปัญหาบางอย่างที่เกี่ยวข้องกับ Deep Link และ App Indexing API แล้ว - เพิ่มความสามารถในการใช้ชื่อย่อเมื่อเติมโค้ดมุมมองที่กำหนดเองในตัวแก้ไขโค้ด
- เพิ่มการรองรับองค์ประกอบ
VectorDrawableเพิ่มเติมใน Vector Asset Studio เพื่อความเข้ากันได้แบบย้อนหลัง Vector Asset Studio สามารถใช้องค์ประกอบเหล่านี้เพื่อแปลงภาพวาดเวกเตอร์ เป็นภาพแรสเตอร์ PNG เพื่อใช้กับ Android 4.4 (API ระดับ 20) และต่ำกว่า - เพิ่ม
lintการตรวจสอบใหม่สำหรับ Android TV และ Android Auto เพื่อให้คุณได้รับ ความคิดเห็นที่นำไปใช้ได้ทันทีใน Android Studio พร้อมกับการแก้ไขอย่างรวดเร็วหลายรายการ เช่น สำหรับ Android TV เครื่องมือนี้สามารถรายงานและแก้ไขปัญหาเกี่ยวกับสิทธิ์ ฮาร์ดแวร์ที่ไม่รองรับ องค์ประกอบuses-featureและปัญหาเกี่ยวกับแบนเนอร์ที่ขาดหายไปได้อย่างรวดเร็ว สำหรับ Android Auto จะสามารถ ตรวจสอบการใช้งานที่ถูกต้องในไฟล์ตัวอธิบายที่อ้างอิงจากไฟล์AndroidManifest.xmlรายงานหากไม่มีตัวกรอง Intent สำหรับคลาสMediaBrowserServiceและระบุปัญหาการดำเนินการด้วยเสียงบางอย่าง - เพิ่ม
lintการตรวจสอบใหม่สำหรับ BroadcastReceiver ที่ไม่ปลอดภัย การใช้คลาสSSLCertificateSocketFactoryและHostnameVerifierรวมถึง การเรียกFile.setReadable()และFile.setWritable()นอกจากนี้ ยังตรวจหา การค้นหาทรัพยากรในไฟล์ Manifest ที่ไม่ถูกต้อง โดยเฉพาะทรัพยากรที่แตกต่างกันตามการกำหนดค่า - แก้ไขปัญหาด้านความเสถียรหลายรายการ
Android Studio v1.4.1 (ตุลาคม 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- แก้ไขปัญหาการแคชโมเดล Gradle ที่อาจทำให้มีการซิงค์ Gradle มากเกินไปเมื่อรีสตาร์ท IDE
- แก้ไขปัญหาการหยุดชะงักของการแก้ไขข้อบกพร่องแบบเนทีฟ
- แก้ไขปัญหาที่บล็อกผู้ใช้ระบบควบคุมเวอร์ชัน Subversion 1.9
- แก้ไขปัญหาในกล่องโต้ตอบตัวเลือกอุปกรณ์ที่หลังจากเชื่อมต่ออุปกรณ์ที่ไม่ได้รับอนุญาตแล้ว คุณจะเลือกโปรแกรมจำลองไม่ได้อีก ปัญหา: 189658
- แก้ไขการรายงานข้อผิดพลาดในการแปลที่ไม่ถูกต้องสำหรับภาษาที่มีตัวระบุภูมิภาคและ การแปลในภูมิภาค (แต่ไม่ใช่ในภาษาฐาน) ปัญหา: 188577
- แก้ไขปัญหาการหยุดชะงักในตัวแก้ไขธีมที่เกี่ยวข้องกับการโต้ตอบกับเครื่องมือแก้ไขเลย์เอาต์ ปัญหา: 188070
- แก้ไขการโหลดซ้ำของตัวแก้ไขธีมและความขัดแย้งในการแก้ไขที่ทำให้แอตทริบิวต์ไม่อัปเดตอย่างถูกต้อง ปัญหา: 187726
- ปรับปรุงประสิทธิภาพของตัวแก้ไขธีม
- แก้ไขปัญหาที่ระบบไม่สนใจแอตทริบิวต์
android:requiredในไฟล์ Manifest ปัญหา: 187665
Android Studio v1.4.0 (กันยายน 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- เพิ่มเครื่องมือ Vector Asset Studio สำหรับการนำเข้ากราฟิกแบบเวกเตอร์ เช่น ไอคอน Material และไฟล์ SVG หากต้องการใช้เครื่องมือนี้ ในมุมมอง Android ของหน้าต่างโปรเจ็กต์ ให้คลิกขวาที่โฟลเดอร์ res แล้วเลือกใหม่ > ชิ้นงานเวกเตอร์
- เพิ่มฟังก์ชันใหม่ของ Android Monitor, GPU และเครือข่าย หากต้องการใช้จอภาพเหล่านี้ ให้คลิกจอภาพ Android ที่ด้านล่างของหน้าต่างหลัก Android Device Monitor จะทำงานพร้อมกับ Android Monitor ไม่ได้
- เพิ่มตัวอย่างเวอร์ชันทดลองของตัวแก้ไขธีมใหม่แล้ว หากต้องการใช้ฟีเจอร์นี้ ให้เลือก เครื่องมือ > Android > Theme Editor
- อัปเดตเทมเพลต Android สำหรับไลบรารีการสนับสนุนการออกแบบ ตอนนี้เทมเพลตได้รวมการรองรับ
ข้อกำหนดการออกแบบ Material รวมถึง
appcompatไลบรารีการสนับสนุน เพื่อความเข้ากันได้แบบย้อนหลัง
Android Studio v1.3.2 (สิงหาคม 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- เพิ่มการรองรับ Android 6.0 (API ระดับ 23) ซึ่งรวมถึงไอคอนใหม่และการรองรับ AVD Manager สำหรับการสร้างอุปกรณ์ที่มีความหนาแน่นหน้าจอใหม่
- แก้ไขข้อยกเว้นที่เกิดขึ้นระหว่างการตรวจหาการอัปเดต ปัญหา: 183068
- แก้ไขปัญหาที่พิกัดมุมมองที่ยังไม่ได้รับการแก้ไขอาจทำให้เครื่องมือแก้ไขเลย์เอาต์ขัดข้อง ปัญหา: 178690
- แก้ไขปัญหาคำเตือนเกี่ยวกับประเภททรัพยากรที่ไม่ถูกต้องแล้ว ปัญหา: 182433
- แก้ไขการตรวจสอบ Lint ที่แจ้งว่าทรัพยากรเป็นแบบส่วนตัวอย่างไม่ถูกต้อง ปัญหา: 183120
Android Studio v1.3.1 (สิงหาคม 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- แก้ไขการรองรับการสร้างอุปกรณ์เสมือน Android (AVD) ของ Android Wear ใน Windows
- อัปเดตวิซาร์ดโปรเจ็กต์ให้ใช้ชื่อโปรเจ็กต์ที่ป้อน
- เพิ่มการรองรับเพื่อให้จัดเก็บ Android SDK ในไดเรกทอรีแบบอ่านอย่างเดียวได้
- อัปเดตปลั๊กอิน Android สำหรับ Gradle เป็นเวอร์ชัน 1.3.0
- แก้ไขปัญหาเกี่ยวกับการเปิดเซสชันการแก้ไขข้อบกพร่องจากเชลล์ Unix ของ Android Debug Bridge (adb) แล้ว
- แก้ไขข้อความการเปลี่ยนชื่อแพ็กเกจ Java เพื่อแสดงชื่อแพ็กเกจที่ถูกต้อง
Android Studio v1.3.0 (กรกฎาคม 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- เพิ่มตัวเลือกเพื่อเปิดใช้บริการสำหรับนักพัฒนาแอป เช่น Google AdMob และ Analytics ในแอปจากภายใน Android Studio
- เพิ่มคำอธิบายประกอบเพิ่มเติม
เช่น
@RequiresPermission,@CheckResultsและ@MainThread - เพิ่มความสามารถในการสร้างการดัมพ์ฮีป Java และวิเคราะห์การจัดสรรเธรดจากเครื่องมือตรวจสอบหน่วยความจำ นอกจากนี้ คุณยัง แปลงไฟล์รูปแบบไบนารี HPROF เฉพาะ Android เป็นรูปแบบ HPROF มาตรฐานได้จากภายใน Android Studio
- ผสานรวม SDK Manager
เข้ากับ Android Studio เพื่อให้เข้าถึงแพ็กเกจและเครื่องมือได้ง่ายขึ้น รวมถึงแสดงการแจ้งเตือนการอัปเดต
หมายเหตุ: คุณยังคงใช้ตัวจัดการ SDK แบบสแตนด์อโลนได้จาก บรรทัดคำสั่ง แต่เราขอแนะนำให้ใช้เฉพาะกับการติดตั้ง SDK แบบสแตนด์อโลน เท่านั้น
- เพิ่มคำสั่ง
fingerในคอนโซลโปรแกรมจำลองเพื่อจำลองการตรวจสอบสิทธิ์ด้วยลายนิ้วมือ - เพิ่ม
<public>การประกาศทรัพยากรเพื่อกำหนดทรัพยากรของไลบรารีเป็นทรัพยากรสาธารณะและส่วนตัวหมายเหตุ: ต้องใช้ ปลั๊กอิน Android สำหรับ Gradle เวอร์ชัน 1.3 ขึ้นไป
- เพิ่มการรองรับการเชื่อมโยงข้อมูลเพื่อ สร้างเลย์เอาต์แบบประกาศที่เชื่อมโยงตรรกะของแอปพลิเคชันกับองค์ประกอบเลย์เอาต์
- เพิ่มการรองรับโมดูล APK ทดสอบแยกต่างหาก เพื่อสร้าง APK ทดสอบใน Android Studio
- อัปเดต AVD Manager ด้วยการเพิ่มประสิทธิภาพ HAXM และการแจ้งเตือนที่ได้รับการปรับปรุง
- เพิ่มการรองรับโปรแกรมจำลอง ARM และ MIPS 64 บิตสำหรับ QEMU 2.1
- ลดความซับซ้อนในการแก้ไขคำเตือนของ Lint ด้วยการเพิ่มการแก้ไขด่วน เช่น การสร้างการติดตั้งใช้งาน Parcelable โดยอัตโนมัติ
- เพิ่มการรองรับเทมเพลตสด เพื่อแทรกข้อมูลโค้ดอย่างรวดเร็ว
Android Studio v1.2.2(มิถุนายน 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- แก้ไขปัญหาการสร้างที่ทำให้การสร้างไม่เสร็จสมบูรณ์
Android Studio v1.2.1 (พฤษภาคม 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- แก้ไขปัญหาเล็กๆ น้อยๆ เกี่ยวกับประสิทธิภาพและฟีเจอร์
Android Studio v1.2.0 (เมษายน 2015)
การแก้ไขและการเพิ่มประสิทธิภาพ
- อัปเดตหน้าต่างรันไทม์ของ Android ให้มีเครื่องมือเครื่องมือตรวจสอบหน่วยความจำ และเพิ่มแท็บ สำหรับการตรวจสอบประสิทธิภาพ CPU
- เพิ่มแท็บการจับภาพในขอบด้านซ้ายเพื่อแสดง ไฟล์ข้อมูลประสิทธิภาพของหน่วยความจำและ CPU ที่จับภาพไว้ เช่น การติดตามเมธอดของ CPU และสแนปชอตฮีปของหน่วยความจำ
- การรองรับคำอธิบายประกอบที่ขยาย พร้อมคำอธิบายประกอบข้อมูลเมตาเพิ่มเติมและความสามารถในการอนุมานค่า Null
- ปรับปรุงเครื่องมือแก้ไขการแปลโดยเพิ่มการรองรับ Best Current Practice (BCP) 47 ซึ่งใช้รหัสภาษาและภูมิภาคแบบ 3 ตัวอักษร
- ฟีเจอร์ IntelliJ 14 และ 14.1 ที่ผสานรวมเพื่อการวิเคราะห์โค้ดและ ประสิทธิภาพที่ดียิ่งขึ้น
-
- การแก้ไขข้อบกพร่องที่ได้รับการปรับปรุงเพื่อแสดงค่าในบรรทัดสำหรับตัวแปรและ ออบเจ็กต์อ้างอิง รวมถึงทำการประเมินในบรรทัดของนิพจน์แลมบ์ดาและ โอเปอเรเตอร์
- เพิ่มการตรวจหารูปแบบโค้ดสำหรับขนาดแท็บและการเยื้อง
- เพิ่มไฟล์ชั่วคราวสำหรับการทดลองโค้ดและการสร้างต้นแบบโดยไม่ต้องมีไฟล์โปรเจ็กต์
- เพิ่มการแทรกแท็กเปิดและปิดพร้อมกันในไฟล์ HTML และ XML
- เพิ่มโปรแกรมแยกโค้ด Java ในตัวเพื่อให้คุณดูสิ่งที่อยู่ภายในไลบรารีที่ไม่มีซอร์สโค้ดได้
ดูคำอธิบายทั้งหมดของฟีเจอร์ใหม่และการปรับปรุงได้ที่มีอะไรใหม่ใน IntelliJ
- เพิ่มมุมมองโปรเจ็กต์เพิ่มเติมสำหรับ รอยขีดข่วน ไฟล์โปรเจ็กต์ ปัญหา การผลิต และการทดสอบเพื่อปรับปรุงการจัดการโปรเจ็กต์และ การเข้าถึง
- ปรับปรุงเมนูและกล่องโต้ตอบไฟล์ > การตั้งค่าเพื่อ ปรับปรุงการเข้าถึงและการจัดการการตั้งค่า
- เพิ่มการรองรับจอแสดงผลความหนาแน่นสูงสำหรับ Windows และ Linux
- เพิ่มการรองรับทรัพยากร 280 dpi ในโฟลเดอร์
res/drawable-280dpi/
Android Studio v1.1.0 (กุมภาพันธ์ 2015)
การแก้ไขและการปรับปรุงต่างๆ
- เพิ่มการรองรับเทมเพลตนาฬิกา Android Wear แล้ว
- แก้ไขการสร้างโปรเจ็กต์และโมดูลใหม่ให้มีโฟลเดอร์
res/mipmapสำหรับไอคอนตัวเรียกใช้ที่เจาะจงความหนาแน่นres/mipmapโฟลเดอร์เหล่านี้จะแทนที่โฟลเดอร์res/drawableสำหรับไอคอน Launcher - อัปเดตไอคอน Launcher ให้มีรูปลักษณ์ตามดีไซน์ Material และเพิ่มไอคอน Launcher
xxxhdpi - เพิ่มและปรับปรุงการตรวจสอบ Lint สําหรับชุดค่าผสมของภูมิภาคและภาษา, ไอคอน Launcher, ชื่อทรัพยากร และปัญหาอื่นๆ ที่พบบ่อย ในโค้ด
- เพิ่มการรองรับแท็กภาษา Best Current Practice (BCP) 47
Android Studio v1.0.1 (ธันวาคม 2014)
การแก้ไขและการปรับปรุงต่างๆ
- แก้ไขปัญหาการล็อกไฟล์ AVD Manager และ device.xml
- แก้ไขบันทึกของโปรแกรมจำลองในระบบ Windows
- แก้ไขปัญหาการสร้าง AVD ด้วย Android Studio และ Android SDK ที่ติดตั้งในไดรฟ์ต่างๆ ในระบบ Windows
- ตั้งค่าช่องการอัปเดตเริ่มต้นสำหรับการดาวน์โหลดใหม่เป็นเสถียร หากคุณ ติดตั้ง Android Studio เวอร์ชัน 1.0.0 และต้องการอัปเดตเวอร์ชันที่เสถียรและพร้อมใช้งานจริง ให้ไปที่ไฟล์ > การตั้งค่า > การอัปเดตเพื่อเปลี่ยนเป็นช่องการอัปเดตเสถียร
Android Studio v1.0 (ธันวาคม 2014)
การเปิดตัว Android Studio ครั้งแรก
Android Studio v0.8.14 (ตุลาคม 2014)
ดูรายการการเปลี่ยนแปลงทั้งหมดได้ที่ tools.android.com
Android Studio v0.8.6 (สิงหาคม 2014)
ดูรายการการเปลี่ยนแปลงทั้งหมดได้ที่ tools.android.com
Android Studio v0.8.0 (มิถุนายน 2014)
เพิ่มการรองรับโปรเจ็กต์ Android Wear
ดูรายการการเปลี่ยนแปลงทั้งหมดได้ที่ tools.android.com
Android Studio v0.5.2 (พฤษภาคม 2014)
- ดูรายการการเปลี่ยนแปลงทั้งหมดได้ที่ tools.android.com
Android Studio v0.4.6 (มีนาคม 2014)
- ดูรายการการเปลี่ยนแปลงทั้งหมดได้ที่ tools.android.com
Android Studio v0.4.2 (ม.ค. 2014)
- ดูรายการการเปลี่ยนแปลงทั้งหมดได้ที่ tools.android.com
Android Studio v0.3.2 (ต.ค. 2013)
- ดูรายการการเปลี่ยนแปลงทั้งหมดได้ที่ tools.android.com
Android Studio v0.2.x (กรกฎาคม 2013)
- รวมไว้ในการเปลี่ยนแปลงฐานโค้ด IntelliJ ล่าสุด รวมถึงการแก้ไขปัญหาที่ผู้ใช้ Studio รายงาน เช่น การปรับขนาดแบบอักษรและการแสดงผลแบบอักษรใน Linux
- อัปเดตปลั๊กอิน Android Gradle เป็น 0.5.0
ข้อควรระวัง: เวอร์ชันใหม่นี้ไม่สามารถใช้งานร่วมกับเวอร์ชันก่อนหน้าได้ เมื่อเปิดโปรเจ็กต์ที่ใช้ปลั๊กอินเวอร์ชันเก่ากว่า Studio จะแสดงข้อผิดพลาด ที่ระบุว่ารีเฟรชโปรเจ็กต์ Gradle <project_name> ไม่สำเร็จ
ปลั๊กอิน Gradle ที่อัปเดตแล้วมีการเปลี่ยนแปลงต่อไปนี้
- แก้ไขโมเดล IDE ให้มีไฟล์เอาต์พุตแม้ว่าจะมีการปรับแต่งผ่าน DSL นอกจากนี้
ยังแก้ไข DSL เพื่อรับ/ตั้งค่าไฟล์เอาต์พุตในออบเจ็กต์ตัวแปรเพื่อให้ไม่จำเป็นต้อง
ใช้
variant.packageApplication or variant.zipAlign - แก้ไขการแก้ปัญหาการขึ้นต่อกันเพื่อให้เราแก้ปัญหาการรวมกันของ (การกำหนดค่าเริ่มต้น ประเภทบิลด์ รสชาติ) ด้วยกันแทนที่จะแยกกัน
- แก้ไขทรัพยากร Dependency สำหรับการทดสอบโปรเจ็กต์ไลบรารีเพื่อให้รวมทรัพยากร Dependency ทั้งหมดของไลบรารีได้อย่างถูกต้อง
- แก้ไขกรณีที่การอ้างอิง 2 รายการมีชื่อใบเดียวกัน
- แก้ไขปัญหาที่ใช้ไฟล์กฎ Proguard กับ Flavor ไม่ได้
ดูหมายเหตุประจำรุ่นของปลั๊กอิน Gradle ทั้งหมดได้ที่ http://tools.android.com/tech-docs/new-build-system
- แก้ไขโมเดล IDE ให้มีไฟล์เอาต์พุตแม้ว่าจะมีการปรับแต่งผ่าน DSL นอกจากนี้
ยังแก้ไข DSL เพื่อรับ/ตั้งค่าไฟล์เอาต์พุตในออบเจ็กต์ตัวแปรเพื่อให้ไม่จำเป็นต้อง
ใช้
- ข้อผิดพลาดของ Gradle จาก aapt จะไม่ชี้ไปยังไฟล์เอาต์พุตที่ผสานในโฟลเดอร์ build/ อีกต่อไป แต่จะชี้กลับไปยังตำแหน่งแหล่งที่มาจริง
- การสร้างแบบคู่ขนาน ตอนนี้คุณใช้การสร้างแบบขนานของ Gradle ได้แล้ว โปรดทราบว่า การสร้างแบบขนานอยู่ในระยะ "ฟักตัว" (ดูเอกสารประกอบของ Gradle) ฟีเจอร์นี้ปิดอยู่โดยค่าเริ่มต้น หากต้องการเปิดใช้ ให้ไปที่ ค่ากำหนด > คอมไพเลอร์ แล้วเลือกช่องคอมไพล์ โมดูลอิสระแบบคู่ขนาน
- การทำงานเพิ่มเติมในที่เก็บทรัพยากรใหม่ที่ใช้สำหรับการแสดงเลย์เอาต์ ทรัพยากร
การพับในเครื่องมือแก้ไข และอื่นๆ
- การสนับสนุนพื้นฐานสำหรับการอ้างอิงไลบรารี .aar (เช่น การใช้ไลบรารีโดยไม่มีสำเนาแหล่งที่มาในเครื่อง) ยังใช้ไม่ได้สำหรับการตรวจสอบ XML ของทรัพยากรและการไปยังส่วนต่างๆ ในเครื่องมือแก้ไขแหล่งที่มา
- การตรวจจับรอบในการอ้างอิงทรัพยากร
- ตอนนี้เอกสารฉบับย่อ (F1) ซึ่งแสดงการแปลสตริงทั้งหมดภายใต้เครื่องหมายแคร์เร็ต จะแสดงการวางซ้อนทรัพยากรทั้งหมดจาก Gradle รูปแบบต่างๆ และประเภทบิลด์ รวมถึง ไลบรารีด้วย โดยจะแสดงตามลำดับการซ้อนทับของทรัพยากรย้อนกลับ พร้อมขีดทับบน สตริงเวอร์ชันที่มาสก์
- แก้ไขเพื่อจัดการการอัปเดตทรัพยากรที่ผสานเมื่อชุดการอ้างอิงของโมดูล มีการเปลี่ยนแปลง
- แก้ไขการแสดงผล XML เพื่อจัดการประกาศเอนทิตีอักขระและการหลีก XML และ Unicode อย่างถูกต้อง
- บันทึกการรองรับภาพหน้าจอสำหรับหน้าต่างแสดงตัวอย่างเลย์เอาต์และเครื่องมือแก้ไขเลย์เอาต์
- การแก้ไขข้อบกพร่องของเทมเพลต
- การแก้ไขข้อบกพร่องของ Lint
- การแก้ไขต่างๆ สำหรับรายงานข้อขัดข้อง ขอขอบคุณและโปรดส่งรายงานข้อขัดข้องต่อไป
Android Studio v0.1.x (พฤษภาคม 2013)
- แก้ไขข้อบกพร่องต่างๆ รวมถึงการแก้ไขปัญหาการติดตั้ง Windows ที่พบบ่อย
Android Gradle Plugin เวอร์ชันเก่า
3.6.0 (กุมภาพันธ์ 2020)
ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้
-
Gradle 5.6.4 ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับการอัปเดต Gradle
-
เครื่องมือสร้าง SDK 28.0.3 ขึ้นไป
การอัปเดตเล็กน้อยนี้รองรับความเข้ากันได้กับการตั้งค่าเริ่มต้นและฟีเจอร์ใหม่สำหรับ ระดับการมองเห็นแพ็กเกจ ใน Android 11
ดูรายละเอียดได้ที่บันทึกประจำรุ่น 4.0.1
ฟีเจอร์ใหม่
ปลั๊กอิน Android Gradle เวอร์ชันนี้มีฟีเจอร์ใหม่ต่อไปนี้
View Binding
View Binding ช่วยให้มั่นใจได้ถึงความปลอดภัยในเวลาคอมไพล์เมื่ออ้างอิงมุมมองใน
โค้ด ตอนนี้คุณสามารถแทนที่ findViewById() ด้วย
การอ้างอิงคลาส Binding ที่สร้างขึ้นโดยอัตโนมัติได้แล้ว หากต้องการเริ่มใช้ View Binding ให้
รวมข้อมูลต่อไปนี้ในไฟล์ build.gradle ของแต่ละโมดูล
android { viewBinding.enabled = true }
android { viewBinding.enabled = true }
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับการดู การเชื่อมโยง
การรองรับปลั๊กอิน Maven Publish
ปลั๊กอิน Android Gradle รองรับ ปลั๊กอิน Gradle สำหรับการเผยแพร่ Maven ซึ่งช่วยให้คุณเผยแพร่ชิ้นงานที่สร้างไปยัง ที่เก็บ Apache Maven ได้ ปลั๊กอิน Android Gradle จะสร้าง คอมโพเนนต์ สําหรับอาร์ติแฟกต์ตัวแปรบิลด์แต่ละรายการในแอปหรือโมดูลไลบรารีที่คุณใช้ เพื่อปรับแต่งการเผยแพร่ ไปยังที่เก็บ Maven ได้
ดูข้อมูลเพิ่มเติมได้ที่หน้าเกี่ยวกับวิธี ใช้ปลั๊กอิน Maven Publish
เครื่องมือการสร้างแพ็กเกจเริ่มต้นแบบใหม่
เมื่อสร้างแอปเวอร์ชันสำหรับแก้ไขข้อบกพร่อง ปลั๊กอินจะใช้เครื่องมือการแพ็กเกจแบบใหม่ที่เรียกว่า zipflinger เพื่อสร้าง APK เครื่องมือใหม่นี้
จะช่วยปรับปรุงความเร็วในการสร้าง หากเครื่องมือการแพ็กเกจใหม่
ไม่ทำงานตามที่คาดไว้
โปรดรายงานข้อบกพร่อง คุณสามารถกลับไปใช้เครื่องมือการแพ็กเกจแบบเดิมได้โดยใส่ข้อมูลต่อไปนี้ในไฟล์ gradle.properties
android.useNewApkCreator=false
การระบุแหล่งที่มาของการสร้างแอปเนทีฟ
ตอนนี้คุณสามารถกำหนดระยะเวลาที่ Clang ใช้ในการสร้างและ ลิงก์ไฟล์ C/C++ แต่ละไฟล์ในโปรเจ็กต์ได้แล้ว Gradle สามารถแสดงผลการติดตามของ Chrome ซึ่งมีแสตมป์เวลาสำหรับเหตุการณ์คอมไพเลอร์เหล่านี้เพื่อให้คุณเข้าใจ เวลาที่ต้องใช้ในการสร้างโปรเจ็กต์ได้ดียิ่งขึ้น หากต้องการส่งออกไฟล์การระบุแหล่งที่มาของบิลด์นี้ ให้ทำดังนี้
-
เพิ่มแฟล็ก
-Pandroid.enableProfileJson=trueเมื่อ เรียกใช้การสร้าง Gradle เช่นgradlew assembleDebug -Pandroid.enableProfileJson=true -
เปิดเบราว์เซอร์ Chrome แล้วพิมพ์
chrome://tracingใน แถบค้นหา -
คลิกปุ่มโหลด แล้วไปที่
<var>project-root</var>/build/android-profileเพื่อค้นหาไฟล์ ไฟล์มีชื่อว่าprofile-<var>timestamp</var>.json.gz
คุณดูข้อมูลการระบุแหล่งที่มาของการสร้างเนทีฟได้ที่บริเวณด้านบนของ โปรแกรมดู

การเปลี่ยนแปลงลักษณะการทำงาน
เมื่อใช้ปลั๊กอินเวอร์ชันนี้ คุณอาจพบการเปลี่ยนแปลงลักษณะการทำงานต่อไปนี้
ไลบรารีที่มาพร้อมเครื่องที่แพ็กเกจโดยไม่ได้บีบอัด โดยค่าเริ่มต้น
เมื่อคุณสร้างแอป ปลั๊กอินจะตั้งค่า
extractNativeLibs เป็น "false" โดย
ค่าเริ่มต้น กล่าวคือ ไลบรารีแบบเนทีฟของคุณจะได้รับการจัดแนวหน้าและแพ็กเกจ
โดยไม่บีบอัด แม้ว่าการดำเนินการนี้จะทำให้ขนาดการอัปโหลดใหญ่ขึ้น แต่ผู้ใช้จะได้รับประโยชน์ต่อไปนี้
- ขนาดการติดตั้งแอปเล็กลงเนื่องจากแพลตฟอร์มเข้าถึงไลบรารีเนทีฟได้โดยตรงจาก APK ที่ติดตั้งโดยไม่ต้องสร้างสำเนาของไลบรารี
- ขนาดการดาวน์โหลดเล็กลงเนื่องจากการบีบอัดของ Play Store มักจะดีกว่าเมื่อคุณรวมไลบรารีแบบเนทีฟที่ไม่ได้บีบอัดไว้ใน APK หรือ Android App Bundle
หากต้องการให้ Android Gradle Plugin แพ็กเกจไลบรารีแบบเนทีฟที่บีบอัดแทน ให้ใส่ข้อมูลต่อไปนี้ในไฟล์ Manifest ของแอป
<application
android:extractNativeLibs="true"
... >
</application>
หมายเหตุ: ระบบได้แทนที่แอตทริบิวต์ extractNativeLibs manifest
ด้วยตัวเลือก useLegacyPackaging DSL
แล้ว ดูข้อมูลเพิ่มเติมได้ที่บันทึกประจำรุ่น
ใช้ DSL เพื่อแพ็กเกจไลบรารี
เนทีฟที่บีบอัด
เวอร์ชัน NDK เริ่มต้น
หากคุณดาวน์โหลด NDK หลายเวอร์ชัน ตอนนี้ปลั๊กอิน Android Gradle
จะเลือกเวอร์ชันเริ่มต้นที่จะใช้ในการคอมไพล์ไฟล์ซอร์สโค้ด
ก่อนหน้านี้ ปลั๊กอินจะเลือก NDK เวอร์ชันล่าสุดที่ดาวน์โหลด
ใช้พร็อพเพอร์ตี้ android.ndkVersion ในไฟล์
build.gradle ของโมดูลเพื่อลบล้างค่าเริ่มต้นที่ปลั๊กอินเลือก
การสร้างคลาส R ที่ง่ายขึ้น
ปลั๊กอิน Android Gradle ช่วยลดความซับซ้อนของ classpath ในการคอมไพล์โดย สร้างคลาส R เพียงคลาสเดียวสำหรับแต่ละโมดูลไลบรารีในโปรเจ็กต์ และ แชร์คลาส R เหล่านั้นกับทรัพยากร Dependency ของโมดูลอื่นๆ การเพิ่มประสิทธิภาพนี้ จะช่วยให้สร้างได้เร็วขึ้น แต่คุณต้องคำนึงถึงสิ่งต่อไปนี้
- เนื่องจากคอมไพเลอร์แชร์คลาส R กับการอ้างอิงโมดูลต้นทาง แต่ละโมดูลในโปรเจ็กต์จึงควรใช้ชื่อแพ็กเกจที่ไม่ซ้ำกัน
- การมองเห็นคลาส R ของไลบรารีต่อทรัพยากร Dependency อื่นๆ ของโปรเจ็กต์
จะกำหนดโดยการกำหนดค่าที่ใช้เพื่อรวมไลบรารีเป็น
ทรัพยากร Dependency เช่น หากไลบรารี A มีไลบรารี B เป็นการขึ้นต่อกันแบบ "api"
ไลบรารี A และไลบรารีอื่นๆ ที่ขึ้นอยู่กับไลบรารี A จะมี
สิทธิ์เข้าถึงคลาส R ของไลบรารี B อย่างไรก็ตาม ไลบรารีอื่นๆ อาจไม่มีสิทธิ์เข้าถึงคลาส R ของไลบรารี B หากไลบรารี A ใช้
implementationการกำหนดค่าการขึ้นต่อกัน ดูข้อมูลเพิ่มเติมได้ที่ส่วนการกำหนดค่าการขึ้นต่อกัน
นำทรัพยากรที่ขาดหายไปจากการกำหนดค่าเริ่มต้นออก
สำหรับโมดูลไลบรารี หากคุณรวมทรัพยากรสำหรับภาษาที่ไม่ได้รวมไว้ในชุดทรัพยากรเริ่มต้น เช่น หากคุณรวม hello_world เป็นทรัพยากรสตริงใน /values-es/strings.xml แต่ไม่ได้กำหนดทรัพยากรนั้นใน /values/strings.xml ปลั๊กอิน Android Gradle จะไม่รวมทรัพยากรดังกล่าวอีกต่อไปเมื่อคอมไพล์โปรเจ็กต์ การเปลี่ยนแปลงลักษณะการทำงานนี้
จะช่วยลดResource Not Foundข้อยกเว้นขณะรันไทม์
และเพิ่มความเร็วในการบิลด์
ตอนนี้ D8 จะปฏิบัติตามนโยบายการเก็บรักษา CLASS สำหรับคำอธิบายประกอบ
เมื่อคอมไพล์แอป D8 จะพิจารณาเมื่อคำอธิบายประกอบใช้นโยบายการเก็บรักษา CLASS และคำอธิบายประกอบเหล่านั้นจะไม่มีให้ใช้งานอีกต่อไปในเวลา รันไทม์ ลักษณะการทำงานนี้จะเกิดขึ้นเมื่อตั้งค่า SDK เป้าหมายของแอปเป็น API ระดับ 23 ซึ่งก่อนหน้านี้อนุญาตให้เข้าถึงคำอธิบายประกอบเหล่านี้ในระหว่าง รันไทม์เมื่อคอมไพล์แอปโดยใช้ Android Gradle Plugin และ D8 เวอร์ชันเก่า
การเปลี่ยนแปลงลักษณะการทำงานอื่นๆ
-
aaptOptions.noCompressไม่พิจารณาตัวพิมพ์เล็กและใหญ่ในทุกแพลตฟอร์มอีกต่อไป (ทั้งสำหรับ APK และ Bundle) และจะใช้เส้นทางที่ใช้อักขระตัวพิมพ์ใหญ่ -
ตอนนี้การเชื่อมโยงข้อมูลจะเพิ่มขึ้นทีละรายการโดยค่าเริ่มต้น ดูข้อมูลเพิ่มเติมได้ที่ ปัญหา #110061530
-
ตอนนี้ Unit Test ทั้งหมด รวมถึง Roboelectric Unit Test สามารถแคชได้อย่างเต็มรูปแบบ แล้ว ดูข้อมูลเพิ่มเติมได้ที่ ปัญหา #115873047
การแก้ไขข้อบกพร่อง
ปลั๊กอิน Android Gradle เวอร์ชันนี้มีการแก้ไขข้อบกพร่องต่อไปนี้
- ตอนนี้โมดูลไลบรารีที่ใช้ การเชื่อมโยงข้อมูลรองรับการทดสอบหน่วย Robolectric แล้ว ดูข้อมูลเพิ่มเติมได้ที่ ปัญหา #126775542
- ตอนนี้คุณเรียกใช้
connectedAndroidTestงานในโมดูลหลายโมดูลได้แล้วขณะที่เปิดใช้โหมดการดำเนินการconnectedAndroidTestแบบขนานของ Gradle
ปัญหาที่ทราบ
ส่วนนี้จะอธิบายปัญหาที่ทราบซึ่งมีอยู่ในปลั๊กอิน Android Gradle 3.6.0
งาน Android Lint ทำงานช้า
Android Lint อาจใช้เวลานานกว่ามากในการดำเนินการให้เสร็จสมบูรณ์ในบางโปรเจ็กต์เนื่องจาก การถดถอยในโครงสร้างพื้นฐานการแยกวิเคราะห์ ซึ่งส่งผลให้การคำนวณ ประเภทที่อนุมานสำหรับ Lambda ในโครงสร้างโค้ดบางอย่างช้าลง
ระบบรายงานปัญหานี้เป็นข้อบกพร่องใน IDEA และจะได้รับการแก้ไขในปลั๊กอิน Android Gradle 4.0
ไม่มีคลาส Manifest {:#agp-missing-manifest}
หากแอปกำหนดสิทธิ์ที่กำหนดเองในไฟล์ Manifest โดยปกติแล้วปลั๊กอิน Android
Gradle จะสร้างคลาส Manifest.java ซึ่ง
มีสิทธิ์ที่กำหนดเองเป็นค่าคงที่สตริง ปลั๊กอินจะแพ็กเกจ
คลาสนี้พร้อมกับแอปของคุณ เพื่อให้คุณอ้างอิงสิทธิ์เหล่านั้นได้ง่ายขึ้น
ในรันไทม์
การสร้างคลาสไฟล์ Manifest ไม่ทำงานในปลั๊กอิน Android Gradle 3.6.0
หากสร้างแอปด้วยปลั๊กอินเวอร์ชันนี้และอ้างอิงคลาส Manifest คุณอาจเห็นข้อยกเว้น ClassNotFoundException
หากต้องการแก้ไขปัญหานี้ ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
-
อ้างอิงสิทธิ์ที่กำหนดเองตามชื่อที่มีคุณสมบัติครบถ้วน เช่น
"com.example.myapp.permission.DEADLY_ACTIVITY" -
กำหนดค่าคงที่ของคุณเองดังที่แสดงด้านล่าง
public final class CustomPermissions { public static final class permission { public static final String DEADLY_ACTIVITY="com.example.myapp.permission.DEADLY_ACTIVITY"; } }
3.5.0 (สิงหาคม 2019)
ปลั๊กอิน Android Gradle 3.5.0 พร้อมด้วย Android Studio 3.5 เป็นรุ่นที่สำคัญ และเป็นผลลัพธ์ของ Project Marble ซึ่งมุ่งเน้นการปรับปรุง 3 ด้านหลัก ของเครื่องมือสำหรับนักพัฒนาแอป Android ได้แก่ การทำงานที่มีประสิทธิภาพของระบบ การปรับปรุงฟีเจอร์ และ การแก้ไขข้อบกพร่อง การอัปเดตนี้มุ่งเน้นไปที่การปรับปรุงความเร็วในการบิลด์โปรเจ็กต์เป็นหลัก
ดูข้อมูลเกี่ยวกับการอัปเดต Project Marble เหล่านี้และอื่นๆ ได้ใน บล็อกโพสต์ของนักพัฒนาแอป Android หรือส่วนต่างๆ ด้านล่าง
ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้
-
Gradle 5.4.1 ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับ การอัปเดต Gradle
-
เครื่องมือสร้าง SDK 28.0.3 ขึ้นไป
การอัปเดตเล็กน้อยนี้รองรับความเข้ากันได้กับการตั้งค่าเริ่มต้นและฟีเจอร์ใหม่สำหรับ ระดับการมองเห็นแพ็กเกจ ใน Android 11
ดูรายละเอียดได้ที่บันทึกประจำรุ่น 4.0.1
3.5.3 (ธันวาคม 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.5.3 และมีการแก้ไขข้อบกพร่อง ต่างๆ รวมถึงการปรับปรุงประสิทธิภาพ
3.5.2 (พฤศจิกายน 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.5.2 และมีการแก้ไขข้อบกพร่อง ต่างๆ รวมถึงการปรับปรุงประสิทธิภาพ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
3.5.1 (ตุลาคม 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.5.1 และมีการแก้ไขข้อบกพร่อง ต่างๆ รวมถึงการปรับปรุงประสิทธิภาพ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
การประมวลผลคำอธิบายประกอบแบบเพิ่มทีละรายการ
โปรเซสเซอร์คำอธิบายประกอบ Data Binding
รองรับ
การประมวลผลคำอธิบายประกอบแบบเพิ่ม
หากคุณตั้งค่า android.databinding.incremental=true ในไฟล์
gradle.properties การเพิ่มประสิทธิภาพนี้จะช่วยปรับปรุง
ประสิทธิภาพการบิลด์แบบเพิ่ม ดูรายการโปรเซสเซอร์สำหรับคำอธิบายประกอบที่เพิ่มประสิทธิภาพทั้งหมดได้ในตารางโปรเซสเซอร์สำหรับคำอธิบายประกอบที่เพิ่มขึ้น
นอกจากนี้ KAPT 1.3.30 ขึ้นไปยังรองรับโปรเซสเซอร์การเพิ่มคำอธิบายประกอบ
ซึ่งคุณเปิดใช้ได้โดยใส่ kapt.incremental.apt=true ใน
ไฟล์ gradle.properties
การทดสอบ 1 หน่วยที่แคชได้
เมื่อเปิดใช้การทดสอบหน่วยเพื่อใช้ทรัพยากร, เนื้อหา และ
ไฟล์ Manifest ของ Android โดยการตั้งค่า
includeAndroidResources
เป็น true ปลั๊กอิน Android Gradle จะสร้างไฟล์การกำหนดค่าการทดสอบ
ที่มีเส้นทางแบบสัมบูรณ์ ซึ่งจะทําให้แคชย้ายตำแหน่งไม่ได้ คุณสั่งให้ปลั๊กอินสร้างการกำหนดค่าการทดสอบโดยใช้เส้นทางแบบสัมพัทธ์แทนได้ ซึ่งจะช่วยให้งาน AndroidUnitTest แคชได้อย่างเต็มที่ โดยใส่ข้อมูลต่อไปนี้ในไฟล์ gradle.properties
android.testConfig.useRelativePath = true
ปัญหาที่ทราบ
-
เมื่อใช้ปลั๊กอิน Kotlin Gradle เวอร์ชัน 1.3.31 หรือก่อนหน้า คุณอาจเห็นคำเตือนต่อไปนี้เมื่อสร้างหรือซิงค์โปรเจ็กต์
WARNING: API 'variant.getPackageLibrary()' is obsolete and has been replaced with 'variant.getPackageLibraryProvider()'.หากต้องการแก้ไข ปัญหานี้ ให้อัปเกรดปลั๊กอินเป็นเวอร์ชัน 1.3.40 ขึ้นไป
3.4.0 (เมษายน 2019)
ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้
-
Gradle 5.1.1 ขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับ การอัปเดต Gradle
หมายเหตุ: เมื่อใช้ Gradle 5.0 ขึ้นไป ขนาดฮีปหน่วยความจำของ Gradle Daemon เริ่มต้น จะลดลงจาก 1 GB เป็น 512 MB ซึ่งอาจส่งผลให้ประสิทธิภาพการสร้างถดถอย หากต้องการลบล้างการตั้งค่าเริ่มต้นนี้ ระบุขนาดฮีปของ Gradle Daemon ในไฟล์
gradle.propertiesของโปรเจ็กต์ -
เครื่องมือสร้าง SDK 28.0.3 ขึ้นไป
การอัปเดตเล็กน้อยนี้รองรับความเข้ากันได้กับการตั้งค่าเริ่มต้นและฟีเจอร์ใหม่สำหรับ ระดับการมองเห็นแพ็กเกจ ใน Android 11
ดูรายละเอียดได้ที่บันทึกประจำรุ่น 4.0.1
3.4.2 (กรกฎาคม 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.4.2 และมีการแก้ไขข้อบกพร่อง ต่างๆ รวมถึงการปรับปรุงประสิทธิภาพ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
3.4.1 (พฤษภาคม 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.4.1 และมีการแก้ไขข้อบกพร่อง ต่างๆ รวมถึงการปรับปรุงประสิทธิภาพ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
ฟีเจอร์ใหม่
-
การกำหนดค่าการขึ้นต่อกันของการตรวจสอบ Lint ใหม่: ลักษณะการทำงานของ
lintChecksมีการเปลี่ยนแปลง และมีการเปิดตัวการกำหนดค่าการขึ้นต่อกันใหม่lintPublishเพื่อให้คุณควบคุมได้มากขึ้นว่าจะรวมการตรวจสอบ Lint ใดไว้ในไลบรารี Android-
lintChecks: นี่คือการกำหนดค่าที่มีอยู่ซึ่ง คุณควรใช้สำหรับการตรวจสอบ Lint ที่ต้องการเรียกใช้เฉพาะเมื่อสร้าง โปรเจ็กต์ในเครื่อง หากก่อนหน้านี้คุณใช้การกำหนดค่าการขึ้นต่อกันของlintChecksเพื่อรวมการตรวจสอบ Lint ใน AAR ที่เผยแพร่ คุณจะต้องย้ายข้อมูลการขึ้นต่อกันเหล่านั้นเพื่อใช้การกำหนดค่าlintPublishใหม่แทนตามที่อธิบายไว้ด้านล่าง -
lintPublish: ใช้การกำหนดค่าใหม่นี้ในโปรเจ็กต์ไลบรารี สำหรับการตรวจสอบ Lint ที่คุณต้องการรวมไว้ใน AAR ที่เผยแพร่ ตามที่แสดงด้านล่าง ซึ่งหมายความว่าโปรเจ็กต์ที่ใช้ไลบรารีของคุณ จะใช้การตรวจสอบ Lint เหล่านั้นด้วย
ตัวอย่างโค้ดต่อไปนี้ใช้การกำหนดค่าการขึ้นต่อกันทั้ง 2 แบบใน โปรเจ็กต์ไลบรารี Android ในเครื่อง
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
-
โดยทั่วไปแล้ว งานการแพ็กเกจและการลงนามควรมีการปรับปรุงความเร็วในการบิลด์โดยรวม หากพบว่าประสิทธิภาพลดลงเนื่องจาก งานเหล่านี้ โปรดรายงานข้อบกพร่อง
-
การเปลี่ยนแปลงลักษณะการทำงาน
-
การเลิกใช้งานปลั๊กอินฟีเจอร์ของ Android Instant Apps คำเตือน: หากคุณยังคงใช้ปลั๊กอิน
com.android.featureเพื่อสร้าง Instant App ปลั๊กอิน Android Gradle 3.4.0 จะแสดงคำเตือนการเลิกใช้งาน หากต้องการให้มั่นใจว่าคุณจะยังสร้างแอป Instant ในปลั๊กอินเวอร์ชันต่อๆ ไปได้ ให้ย้ายข้อมูลแอป Instant ไปใช้ปลั๊กอินฟีเจอร์แบบไดนามิก ซึ่งจะช่วยให้คุณเผยแพร่ทั้งประสบการณ์การใช้งานแอปที่ติดตั้งและแอป Instant จาก Android App Bundle เดียวได้ด้วย -
เปิดใช้ R8 โดยค่าเริ่มต้น: R8 ผสานรวมการยกเลิกการน้ำตาล การลดขนาด การปกปิด การเพิ่มประสิทธิภาพ และการแปลงเป็น DEX ทั้งหมดในขั้นตอนเดียว ซึ่งส่งผลให้ประสิทธิภาพการบิลด์ดีขึ้นอย่างเห็นได้ชัด R8 เปิดตัวในปลั๊กอิน Android Gradle 3.3.0 และ ตอนนี้เปิดใช้โดยค่าเริ่มต้นสำหรับทั้งแอปและโปรเจ็กต์ไลบรารี Android ที่ใช้ปลั๊กอิน 3.4.0 ขึ้นไป
รูปภาพด้านล่างแสดงภาพรวมระดับสูงของกระบวนการคอมไพล์ ก่อนที่จะมีการเปิดตัว R8
ตอนนี้ R8 จะดำเนินการแยกส่วน การลดขนาด การปกปิด การเพิ่มประสิทธิภาพ และการแปลงเป็น DEX (D8) ทั้งหมดในขั้นตอนเดียว ดังที่แสดงด้านล่าง
โปรดทราบว่า R8 ออกแบบมาให้ทำงานร่วมกับกฎ ProGuard ที่มีอยู่แล้ว ดังนั้น คุณจึงอาจไม่ต้องดำเนินการใดๆ เพื่อรับประโยชน์จาก R8 อย่างไรก็ตาม เนื่องจากเป็นเทคโนโลยีที่แตกต่างจาก ProGuard ซึ่งออกแบบมาสำหรับโปรเจ็กต์ Android โดยเฉพาะ การลดขนาดและการเพิ่มประสิทธิภาพจึงอาจส่งผลให้มีการนำโค้ดที่ ProGuard อาจไม่ได้นำออก ดังนั้น ในกรณีที่ไม่น่าจะเกิดขึ้นนี้ คุณอาจต้อง เพิ่มกฎเพิ่มเติมเพื่อให้โค้ดนั้นอยู่ในเอาต์พุตการสร้าง
หากพบปัญหาในการใช้ R8 โปรดอ่านคำถามที่พบบ่อยเกี่ยวกับความเข้ากันได้ของ R8 เพื่อดูว่ามีวิธีแก้ปัญหาของคุณหรือไม่ หากไม่มีการบันทึกโซลูชัน
โปรดรายงานข้อบกพร่อง
คุณปิดใช้ R8 ได้โดยเพิ่มบรรทัดต่อไปนี้บรรทัดใดบรรทัดหนึ่งลงในไฟล์
gradle.properties ของโปรเจ็กต์
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
หมายเหตุ: สำหรับประเภทบิลด์ที่กำหนด หากคุณตั้งค่า
useProguard เป็น false ในไฟล์ build.gradle ของโมดูลแอป
ปลั๊กอิน Android Gradle จะใช้ R8
เพื่อลดขนาดโค้ดของแอปสำหรับประเภทบิลด์นั้น ไม่ว่าคุณจะ
ปิดใช้ R8 ในไฟล์ gradle.properties ของโปรเจ็กต์หรือไม่ก็ตาม
-
ndkCompileเลิกใช้งานแล้ว: ตอนนี้คุณจะได้รับ ข้อผิดพลาดในการสร้างหากพยายามใช้ndkBuildเพื่อคอมไพล์ ไลบรารีแบบเนทีฟ คุณควรใช้ CMake หรือ ndk-build แทนเพื่อ เพิ่มโค้ด C และ C++ ลงใน โปรเจ็กต์
ปัญหาที่ทราบ
-
ปัจจุบันเราไม่ได้บังคับใช้การใช้ชื่อแพ็กเกจที่ไม่ซ้ำกันอย่างถูกต้อง แต่จะเข้มงวดมากขึ้นในปลั๊กอินเวอร์ชันต่อๆ ไป ในปลั๊กอิน Android Gradle เวอร์ชัน 3.4.0 คุณเลือกใช้เพื่อตรวจสอบว่าโปรเจ็กต์ประกาศชื่อแพ็กเกจที่ยอมรับได้หรือไม่โดยเพิ่มบรรทัดด้านล่างลงในไฟล์
gradle.propertiesandroid.uniquePackageNames = trueดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าชื่อแพ็กเกจผ่านปลั๊กอิน Android Gradle ได้ที่ ตั้งค่ารหัสแอปพลิเคชัน
3.3.0 (มกราคม 2019)
ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้
-
Gradle 4.10.1 ขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับ การอัปเดต Gradle
หมายเหตุ: เมื่อใช้ Gradle 5.0 ขึ้นไป ขนาดฮีปหน่วยความจำของ Daemon Gradle เริ่มต้นจะลดลงจาก 1 GB เป็น 512 MB ซึ่ง อาจส่งผลให้ประสิทธิภาพการสร้างถดถอย หากต้องการลบล้างการตั้งค่าเริ่มต้นนี้ ให้ระบุ ขนาดฮีปของ Gradle Daemon ในไฟล์
gradle.propertiesของโปรเจ็กต์ -
เครื่องมือสร้าง SDK 28.0.3 ขึ้นไป
การอัปเดตเล็กน้อยนี้รองรับความเข้ากันได้กับการตั้งค่าเริ่มต้นและฟีเจอร์ใหม่สำหรับ ระดับการมองเห็นแพ็กเกจ ใน Android 11
ดูรายละเอียดได้ที่บันทึกประจำรุ่น 4.0.1
3.3.2 (มีนาคม 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.3.2 และมีการแก้ไขข้อบกพร่อง ต่างๆ รวมถึงการปรับปรุงประสิทธิภาพ หากต้องการดูรายการการแก้ไขข้อบกพร่องที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเปิดตัว
3.3.1 (กุมภาพันธ์ 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.3.1 และมีการแก้ไขข้อบกพร่อง ต่างๆ รวมถึงการปรับปรุงประสิทธิภาพ
ฟีเจอร์ใหม่
-
การซิงโครไนซ์ Classpath ที่ได้รับการปรับปรุง: เมื่อแก้ไข ทรัพยากร Dependency ใน Classpath ของรันไทม์และเวลาคอมไพล์ ปลั๊กอิน Android Gradle จะพยายามแก้ไขข้อขัดแย้งของเวอร์ชันดาวน์สตรีมบางอย่างสำหรับ ทรัพยากร Dependency ที่ปรากฏใน Classpath หลายรายการ
เช่น หาก classpath ของรันไทม์มีไลบรารี A เวอร์ชัน 2.0 และ classpath ของการคอมไพล์มีไลบรารี A เวอร์ชัน 1.0 ปลั๊กอินจะอัปเดต ทรัพยากร Dependency ใน classpath ของการคอมไพล์เป็นไลบรารี A เวอร์ชัน 2.0 โดยอัตโนมัติ เพื่อหลีกเลี่ยงข้อผิดพลาด
อย่างไรก็ตาม หาก classpath ของรันไทม์มีไลบรารี A เวอร์ชัน 1.0 และ การคอมไพล์มีไลบรารี A เวอร์ชัน 2.0 ปลั๊กอินจะไม่ลดระดับ การอ้างอิงใน classpath ของการคอมไพล์เป็นไลบรารี A เวอร์ชัน 1.0 และคุณจะได้รับ ข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่ แก้ไขความขัดแย้ง ระหว่างเส้นทางของคลาส
-
ปรับปรุงการคอมไพล์ Java แบบเพิ่มทีละรายการเมื่อใช้ตัวประมวลผล คำอธิบายประกอบ: การอัปเดตนี้จะช่วยลดเวลาในการสร้างโดยปรับปรุงการรองรับการคอมไพล์ Java แบบเพิ่มทีละรายการ เมื่อใช้ตัวประมวลผลคำอธิบายประกอบ
หมายเหตุ: ฟีเจอร์นี้ใช้ได้กับ Gradle 4.10.1 ขึ้นไป ยกเว้น Gradle 5.1 เนื่องจากปัญหา Gradle หมายเลข 8194
-
สำหรับโปรเจ็กต์ที่ใช้ Kapt (โปรเจ็กต์ Kotlin เท่านั้นส่วนใหญ่และ โปรเจ็กต์ไฮบริด Kotlin-Java): การคอมไพล์ Java แบบเพิ่ม จะเปิดใช้ แม้ว่าคุณจะใช้ Data Binding หรือปลั๊กอิน retro-lambda ก็ตาม การประมวลผลคำอธิบายประกอบโดยงาน Kapt ยังไม่ใช่การประมวลผลแบบเพิ่มทีละรายการ
-
สำหรับโปรเจ็กต์ที่ไม่ได้ใช้ Kapt (โปรเจ็กต์ Java เท่านั้น): หาก Annotation Processor ที่คุณใช้รองรับ การประมวลผลคำอธิบายประกอบแบบเพิ่มทีละรายการทั้งหมด ระบบจะเปิดใช้การคอมไพล์ Java แบบเพิ่มทีละรายการโดยค่าเริ่มต้น หากต้องการติดตามการใช้งานตัวประมวลผลคำอธิบายประกอบแบบเพิ่ม โปรดดูปัญหา Gradle 5277
อย่างไรก็ตาม หากตัวประมวลผลคำอธิบายประกอบอย่างน้อย 1 รายการไม่รองรับการสร้างที่เพิ่มขึ้น ระบบจะไม่เปิดใช้การคอมไพล์ Java ที่เพิ่มขึ้น แต่คุณสามารถ ใส่ค่าสถานะต่อไปนี้ในไฟล์
gradle.propertiesแทนได้android.enableSeparateAnnotationProcessing=trueเมื่อคุณรวมแฟล็กนี้ ปลั๊กอิน Android Gradle จะเรียกใช้ ตัวประมวลผลคำอธิบายประกอบในงานแยกต่างหาก และอนุญาตให้งานการคอมไพล์ Java ทำงานแบบเพิ่มขึ้นได้
-
-
ข้อมูลการแก้ไขข้อบกพร่องที่ดีขึ้นเมื่อใช้ API ที่เลิกใช้งานแล้ว: เมื่อปลั๊กอินตรวจพบว่าคุณกำลังใช้ API ที่ระบบไม่รองรับอีกต่อไป ตอนนี้ปลั๊กอินจะให้ข้อมูลที่ละเอียดยิ่งขึ้นเพื่อช่วยคุณระบุว่ามีการใช้ API นั้นที่ใด หากต้องการดูข้อมูลเพิ่มเติม คุณต้องรวมข้อมูลต่อไปนี้ไว้ในไฟล์
gradle.propertiesของโปรเจ็กต์android.debug.obsoleteApi=trueนอกจากนี้ คุณยังเปิดใช้ฟีเจอร์นี้ได้โดยส่ง
-Pandroid.debug.obsoleteApi=trueจากบรรทัดคำสั่ง -
คุณเรียกใช้การทดสอบการวัดคุมในโมดูลฟีเจอร์จากบรรทัดคำสั่งได้
การเปลี่ยนแปลงลักษณะการทำงาน
-
การกำหนดค่างานแบบเลื่อนเวลา: ตอนนี้ปลั๊กอินใช้ API การสร้างงานใหม่ของ Gradle เพื่อหลีกเลี่ยงการเริ่มต้นและกำหนดค่างานที่ไม่จำเป็นต่อการสร้างปัจจุบัน (หรืองานที่ไม่ได้อยู่ในกราฟงานการดำเนินการ) ตัวอย่างเช่น หาก คุณมีตัวแปรบิลด์หลายรายการ เช่น ตัวแปรบิลด์ "รีลีส" และ "ดีบัก" และคุณกำลังสร้างแอปเวอร์ชัน "ดีบัก" ปลั๊กอิน จะหลีกเลี่ยงการเริ่มต้นและกำหนดค่าสำหรับแอปเวอร์ชัน "รีลีส"
การเรียกใช้เมธอดรุ่นเก่าบางรายการใน Variants API เช่น
variant.getJavaCompile()อาจยังคงบังคับการกำหนดค่าของงาน หากต้องการตรวจสอบว่า บิลด์ได้รับการเพิ่มประสิทธิภาพสำหรับการกำหนดค่างานแบบเลื่อนเวลา ให้เรียกใช้เมธอดใหม่ ซึ่งจะแสดงผลออบเจ็กต์ TaskProvider แทน เช่นvariant.getJavaCompileProvider()หากคุณเรียกใช้งานบิลด์ที่กำหนดเอง โปรดดูวิธี ปรับให้เข้ากับ API การสร้างงานใหม่ของ Gradle
-
เมื่อตั้งค่า
useProguard falseสำหรับประเภทบิลด์ที่กำหนด ปลั๊กอินจะใช้ R8 แทน ProGuard เพื่อลดขนาดและปรับโค้ดและทรัพยากรของแอปให้ยากต่อการอ่าน ดูข้อมูลเพิ่มเติมเกี่ยวกับ R8 ได้ที่ บล็อกโพสต์นี้ จากบล็อกของนักพัฒนาซอฟต์แวร์ Android -
สร้างคลาส R สำหรับโปรเจ็กต์ไลบรารีได้เร็วขึ้น: ก่อนหน้านี้ปลั๊กอิน Android Gradle จะสร้างไฟล์
R.javaสำหรับการอ้างอิงแต่ละรายการของโปรเจ็กต์ แล้วคอมไพล์คลาส R เหล่านั้นพร้อมกับคลาสอื่นๆ ของแอป ตอนนี้ปลั๊กอินจะสร้าง JAR ที่มีคลาส R ที่คอมไพล์แล้วของแอป โดยตรงโดยไม่ต้องสร้างคลาสR.javaกลางก่อน การเพิ่มประสิทธิภาพนี้อาจช่วยปรับปรุงประสิทธิภาพการสร้างสำหรับโปรเจ็กต์ที่มีโปรเจ็กต์ย่อยและทรัพยากร Dependency ของไลบรารีจำนวนมาก รวมถึงปรับปรุงความเร็วในการจัดทำดัชนีใน Android Studio ได้อย่างมาก -
เมื่อสร้าง Android App Bundle ตอนนี้ APK ที่สร้างจาก App Bundle นั้นซึ่งกำหนดเป้าหมายเป็น Android 6.0 (API ระดับ 23) ขึ้นไปจะมีไลบรารีแบบเนทีฟเวอร์ชันที่ไม่ได้บีบอัดโดยค่าเริ่มต้น การเพิ่มประสิทธิภาพนี้ ช่วยให้ไม่ต้องคัดลอกไลบรารีในอุปกรณ์ จึงช่วยลด ขนาดของแอปในดิสก์ หากต้องการปิดใช้การเพิ่มประสิทธิภาพนี้ ให้เพิ่ม รายการต่อไปนี้ลงในไฟล์
gradle.propertiesandroid.bundle.enableUncompressedNativeLibs = false -
ปลั๊กอินจะบังคับใช้ปลั๊กอินของบุคคลที่สามบางรายการในเวอร์ชันขั้นต่ำ
-
การซิงค์โปรเจ็กต์แบบหลายตัวแปร การซิงค์โปรเจ็กต์ กับการกำหนดค่าบิลด์เป็นขั้นตอนสำคัญที่ช่วยให้ Android Studio เข้าใจโครงสร้างของโปรเจ็กต์ อย่างไรก็ตาม กระบวนการนี้อาจ ใช้เวลานานสำหรับโปรเจ็กต์ขนาดใหญ่ หากโปรเจ็กต์ใช้ตัวแปรบิลด์หลายตัว ตอนนี้คุณสามารถเพิ่มประสิทธิภาพการซิงค์โปรเจ็กต์ได้โดยจำกัดให้ซิงค์เฉพาะตัวแปร ที่คุณเลือกในปัจจุบันเท่านั้น
คุณต้องใช้ Android Studio 3.3 ขึ้นไปกับ Android Gradle Plugin 3.3.0 ขึ้นไปเพื่อเปิดใช้การเพิ่มประสิทธิภาพนี้ เมื่อคุณมีคุณสมบัติตรงตามข้อกำหนดเหล่านี้ IDE จะแจ้งให้คุณเปิดใช้การเพิ่มประสิทธิภาพนี้เมื่อซิงค์โปรเจ็กต์ นอกจากนี้ ระบบจะเปิดใช้การเพิ่มประสิทธิภาพโดยค่าเริ่มต้นในโปรเจ็กต์ใหม่ด้วย
หากต้องการเปิดใช้การเพิ่มประสิทธิภาพนี้ด้วยตนเอง ให้คลิกไฟล์ > การตั้งค่า > ทดลอง > Gradle (Android Studio > ค่ากำหนด > ทดลอง > Gradle ใน Mac) แล้วเลือกช่องทำเครื่องหมายซิงค์เฉพาะตัวแปรที่ใช้งานอยู่
หมายเหตุ: การเพิ่มประสิทธิภาพนี้รองรับโปรเจ็กต์ที่ มีภาษา Java และ C++ อย่างเต็มรูปแบบ และรองรับ Kotlin บางส่วน เมื่อเปิดใช้ การเพิ่มประสิทธิภาพสำหรับโปรเจ็กต์ที่มีเนื้อหา Kotlin การซิงค์ Gradle จะกลับไปใช้ ตัวแปรทั้งหมดภายใน
-
การดาวน์โหลดแพ็กเกจ SDK ที่ขาดหายไปโดยอัตโนมัติ: เราได้ขยายฟังก์ชันนี้เพื่อรองรับ NDK ดูข้อมูลเพิ่มเติมได้ที่ ดาวน์โหลดแพ็กเกจที่ขาดหายไป โดยอัตโนมัติด้วย Gradle
แก้ไขข้อบกพร่อง
-
ปลั๊กอิน Android Gradle 3.3.0 แก้ไขปัญหาต่อไปนี้
- กระบวนการบิลด์เรียกใช้
android.support.v8.renderscript.RenderScriptแทนเวอร์ชัน AndroidX แม้ว่าจะเปิดใช้ Jetifier แล้วก็ตาม - การขัดกันเนื่องจาก
androidx-rs.jarรวมถึงแบบรวมแบบคงที่annotation.AnyRes - เมื่อใช้ RenderScript คุณไม่จำเป็นต้องตั้งค่าเวอร์ชันเครื่องมือบิลด์ในไฟล์
build.gradleด้วยตนเองอีกต่อไป
- กระบวนการบิลด์เรียกใช้
3.2.0 (กันยายน 2018)
ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้
- Gradle 4.6 ขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับ การอัปเดต Gradle
- เครื่องมือสร้าง SDK 28.0.3 ขึ้นไป
3.2.1 (ตุลาคม 2018)
การอัปเดตนี้ทำให้คุณไม่ต้องระบุเวอร์ชันสำหรับเครื่องมือสร้าง SDK อีกต่อไป ตอนนี้ปลั๊กอิน Android Gradle จะใช้เวอร์ชัน 28.0.3 โดยค่าเริ่มต้น
ฟีเจอร์ใหม่
-
รองรับการสร้าง Android App Bundle: App Bundle เป็นรูปแบบการอัปโหลดใหม่ ซึ่งมีทรัพยากรและโค้ดที่คอมไพล์แล้วทั้งหมดของแอป ขณะเดียวกันก็เลื่อนการสร้างและลงนาม APK ไปยัง Google Play Store คุณไม่ต้องสร้าง ลงนาม และจัดการ APK หลายรายการอีกต่อไป และผู้ใช้จะได้รับการดาวน์โหลดที่มีขนาดเล็กลงซึ่งเพิ่มประสิทธิภาพสำหรับอุปกรณ์ของตน ดูข้อมูลเพิ่มเติมได้ที่ เกี่ยวกับ Android App Bundle
-
รองรับความเร็วในบิลด์แบบเพิ่มที่ปรับปรุงแล้วเมื่อใช้โปรเซสเซอร์สำหรับคำอธิบายประกอบ: ตอนนี้ DSL ที่ชื่อ
AnnotationProcessorOptionsได้ขยายCommandLineArgumentProviderซึ่งช่วยให้คุณหรือผู้เขียนโปรเซสเซอร์สำหรับคำอธิบายประกอบสามารถใส่คำอธิบายประกอบอาร์กิวเมนต์สำหรับโปรเซสเซอร์โดยใช้คำอธิบายประกอบประเภทพร็อพเพอร์ตี้ของบิลด์แบบเพิ่ม การใช้คำอธิบายประกอบเหล่านี้จะช่วยปรับปรุงความถูกต้องและประสิทธิภาพของ บิลด์แบบเพิ่มและบิลด์เปล่าที่แคชไว้ ดูข้อมูลเพิ่มเติมได้ที่ส่งอาร์กิวเมนต์ไปยังโปรเซสเซอร์สำหรับคำอธิบายประกอบ -
เครื่องมือย้ายข้อมูลสำหรับ AndroidX: เมื่อใช้ปลั๊กอิน Android Gradle 3.2.0 กับ Android 3.2 ขึ้นไป คุณจะย้ายข้อมูลทรัพยากร Dependency ในเครื่องและ Maven ของโปรเจ็กต์เพื่อใช้ไลบรารี AndroidX ใหม่ได้โดยเลือกปรับโครงสร้าง > ย้ายข้อมูลไปยัง AndroidX จากแถบเมนู การใช้เครื่องมือย้ายข้อมูลนี้ยังตั้งค่าสถานะต่อไปนี้เป็น
trueในไฟล์gradle.propertiesด้วย-
android.useAndroidX: เมื่อตั้งค่าเป็นtrueปลั๊กอิน Android จะใช้ไลบรารี AndroidX ที่เหมาะสมแทนไลบรารีการสนับสนุน เมื่อไม่ได้ระบุสถานะนี้ ปลั๊กอินจะตั้งค่าเป็นfalseโดยค่าเริ่มต้น -
android.enableJetifier: เมื่อตั้งค่าเป็นtrueปลั๊กอิน Android จะย้ายข้อมูลไลบรารีของบุคคลที่สามที่มีอยู่โดยอัตโนมัติเพื่อใช้ AndroidX โดย การเขียนไบนารีใหม่ เมื่อไม่ได้ระบุสถานะนี้ ปลั๊กอินจะตั้งค่าเป็นfalseโดยค่าเริ่มต้น คุณจะตั้งค่าสถานะนี้เป็นtrueได้เมื่อandroid.useAndroidXตั้งค่าเป็นtrueด้วยเท่านั้น มิฉะนั้นการสร้างจะเกิดข้อผิดพลาดดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของ AndroidX
-
-
เครื่องมือลดขนาดโค้ดใหม่ R8: R8 เป็นเครื่องมือใหม่สำหรับการลดขนาดโค้ดและการปรับให้ยากต่อการอ่าน (Obfuscation) ซึ่งจะมาแทนที่ ProGuard คุณเริ่มใช้ R8 เวอร์ชันตัวอย่างได้โดย รวมข้อมูลต่อไปนี้ในไฟล์
gradle.propertiesของโปรเจ็กต์android.enableR8 = true
android.enableR8 = true
การเปลี่ยนแปลงลักษณะการทำงาน
-
ตอนนี้ระบบจะเปิดใช้กระบวนการ Desugaring ด้วย D8 โดยค่าเริ่มต้น
-
ตอนนี้ AAPT2 อยู่ในที่เก็บ Maven ของ Google แล้ว หากต้องการใช้ AAPT2 โปรดตรวจสอบว่าคุณมี ทรัพยากร Dependency
google()ในไฟล์build.gradleตามที่แสดงด้านล่างbuildscript { repositories { google() // here jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' } } allprojects { repositories { google() // and here jcenter() }
buildscript { repositories { google() // here jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' } } allprojects { repositories { google() // and here jcenter() }
-
ตอนนี้ระบบจะเปิดใช้ Multidex แบบเนทีฟโดยค่าเริ่มต้น Android Studio เวอร์ชันก่อนหน้าจะเปิดใช้ Multidex แบบเนทีฟเมื่อติดตั้งใช้งานแอปเวอร์ชันแก้ไขข้อบกพร่องในอุปกรณ์ที่ใช้ Android ที่มี API ระดับ 21 ขึ้นไป ตอนนี้ไม่ว่าคุณจะทำการติดตั้งใช้งาน ในอุปกรณ์หรือสร้าง APK สำหรับการเผยแพร่ ปลั๊กอิน Android Gradle จะเปิดใช้ Multidex แบบเนทีฟสำหรับโมดูลทั้งหมดที่ตั้งค่า
minSdkVersion=21ขึ้นไป -
ตอนนี้ปลั๊กอินบังคับใช้ปลั๊กอิน Protobuf (0.8.6), ปลั๊กอิน Kotlin (1.2.50) และปลั๊กอิน Crashlytics (1.25.4) เวอร์ชันขั้นต่ำแล้ว
-
ตอนนี้ปลั๊กอินโมดูลฟีเจอร์
com.android.featureจะบังคับให้ใช้เฉพาะตัวอักษร ตัวเลข และขีดล่างเมื่อระบุชื่อโมดูล เช่น หากชื่อโมดูลฟีเจอร์มีขีดกลาง การสร้างจะเกิดข้อผิดพลาด ลักษณะการทำงานนี้ตรงกับลักษณะการทำงานของปลั๊กอินฟีเจอร์แบบไดนามิก
การแก้ไขข้อบกพร่อง
- ตอนนี้ JavaCompile สามารถแคชได้ในโปรเจ็กต์ที่มีการเชื่อมโยงข้อมูล (ปัญหา #69243050)
- หลีกเลี่ยงการคอมไพล์ซ้ำสำหรับโมดูลไลบรารีที่มีการเชื่อมโยงข้อมูลได้ดียิ่งขึ้น (ปัญหา #77539932)
- ตอนนี้คุณสามารถเปิดใช้กำหนดค่าออนดีมานด์อีกครั้งได้แล้ว หากปิดใช้ไว้ในเวอร์ชันก่อนหน้าเนื่องจากข้อผิดพลาดในการสร้างที่คาดไม่ถึง (ปัญหา #77910727)
3.1.0 (มีนาคม 2018)
ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้
-
Gradle 4.4 ขึ้นไป
ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับ การอัปเดต Gradle
-
เครื่องมือสร้าง 27.0.3 ขึ้นไป
โปรดทราบว่าคุณไม่จำเป็นต้องระบุเวอร์ชันสำหรับเครื่องมือบิลด์โดยใช้พร็อพเพอร์ตี้
android.buildToolsVersionอีกต่อไป เนื่องจากปลั๊กอินจะใช้เวอร์ชันขั้นต่ำที่จำเป็นโดยค่าเริ่มต้น
คอมไพเลอร์ DEX ใหม่ D8
ตอนนี้ Android Studio ใช้คอมไพเลอร์ DEX ใหม่ที่ชื่อ D8 โดยค่าเริ่มต้น การคอมไพล์ DEX
คือกระบวนการแปลงไบต์โค้ด .class เป็นไบต์โค้ด .dex สำหรับ Android Runtime (หรือ Dalvik สำหรับ Android เวอร์ชันเก่ากว่า)
เมื่อเทียบกับคอมไพเลอร์ก่อนหน้าซึ่งเรียกว่า DX แล้ว D8
จะคอมไพล์ได้เร็วกว่าและเอาต์พุตเป็นไฟล์ DEX ที่มีขนาดเล็กกว่า ในขณะที่ยังคงมีประสิทธิภาพรันไทม์ของแอปเท่าเดิมหรือดีกว่า
D8 ไม่ควรเปลี่ยนเวิร์กโฟลว์การพัฒนาแอปในแต่ละวัน อย่างไรก็ตาม หากคุณพบปัญหาที่เกี่ยวข้องกับคอมไพเลอร์ใหม่ โปรดรายงานข้อบกพร่อง คุณปิดใช้ D8 ชั่วคราวและใช้ DX ได้โดยรวมข้อมูลต่อไปนี้ในไฟล์ gradle.properties ของโปรเจ็กต์
android.enableD8=false
สำหรับโปรเจ็กต์ที่
ใช้ฟีเจอร์ภาษาของ Java 8
ระบบจะเปิดใช้การแยกน้ำตาลแบบเพิ่มทีละรายการโดยค่าเริ่มต้น คุณปิดใช้ได้โดย
ระบุข้อมูลต่อไปนี้ในไฟล์ gradle.properties ของโปรเจ็กต์
android.enableIncrementalDesugaring=false.
ผู้ใช้เวอร์ชันตัวอย่าง: หากคุณใช้ D8 เวอร์ชันตัวอย่างอยู่แล้ว โปรดทราบว่า ตอนนี้ D8 จะคอมไพล์กับไลบรารีที่รวมอยู่ใน เครื่องมือสร้าง SDK ไม่ใช่ JDK ดังนั้น หากคุณเข้าถึง API ที่มีอยู่ใน JDK แต่ไม่มีอยู่ในไลบรารีเครื่องมือสร้าง SDK คุณจะได้รับข้อผิดพลาดในการคอมไพล์
การเปลี่ยนแปลงลักษณะการทำงาน
-
เมื่อสร้าง APK หลายรายการที่แต่ละรายการกำหนดเป้าหมายเป็น ABI ที่แตกต่างกัน จะไม่สร้าง APK สำหรับ ABI ต่อไปนี้โดยค่าเริ่มต้นอีกต่อไป
mips,mips64และarmeabiหากต้องการสร้าง APK ที่กำหนดเป้าหมายเป็น ABI เหล่านี้ คุณต้องใช้ NDK r16b หรือต่ำกว่า และ ระบุ ABI ในไฟล์
build.gradleดังที่แสดงด้านล่างsplits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
-
ตอนนี้ build cache ของปลั๊กอิน Android จะนำรายการแคชที่มีอายุมากกว่า 30 วันออก
-
การส่ง
"auto"ไปยังresConfigจะไม่เลือกทรัพยากรสตริงเพื่อแพ็กเกจลงใน APK โดยอัตโนมัติอีกต่อไป หากคุณยังคงใช้"auto"ปลั๊กอินจะแพ็กเกจทรัพยากรสตริงทั้งหมดที่แอปและทรัพยากร Dependency ของแอปมีให้ ดังนั้น คุณควร ระบุภาษาแต่ละภาษาที่ต้องการให้ปลั๊กอินแพ็กเกจลงใน APK แทน -
เนื่องจากโมดูลภายในเครื่องไม่สามารถขึ้นอยู่กับ APK ทดสอบของแอป การเพิ่ม การอ้างอิงในการทดสอบที่มีการวัดโดยใช้การกำหนดค่า
androidTestApiแทนที่จะใช้androidTestImplementationจะทำให้ Gradle แสดงคำเตือนต่อไปนี้WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
การแก้ไข
- แก้ไขปัญหาที่ Android Studio ไม่รู้จัก การขึ้นต่อกันในการสร้างแบบคอมโพสิตอย่างถูกต้อง
- แก้ไขปัญหาที่คุณได้รับข้อผิดพลาดในการซิงค์โปรเจ็กต์เมื่อโหลด ปลั๊กอิน Android หลายครั้งในการสร้างครั้งเดียว เช่น เมื่อ โปรเจ็กต์ย่อยหลายรายการแต่ละรายการมีปลั๊กอิน Android ใน classpath ของ buildscript
3.0.0 (ตุลาคม 2017)
ปลั๊กอิน Android Gradle 3.0.0 มีการเปลี่ยนแปลงหลายอย่างที่มุ่ง แก้ไขปัญหาด้านประสิทธิภาพของโปรเจ็กต์ขนาดใหญ่
ตัวอย่างเช่น ในโครงร่างตัวอย่างที่มีโมดูลประมาณ 130 โมดูลและมีการอ้างอิงภายนอกจำนวนมาก (แต่ไม่มีโค้ดหรือทรัพยากร) คุณจะเห็นประสิทธิภาพที่ดีขึ้นคล้ายกับตัวอย่างต่อไปนี้
| เวอร์ชันปลั๊กอิน Android + เวอร์ชัน Gradle | ปลั๊กอิน Android 2.2.0 + Gradle 2.14.1 | ปลั๊กอิน Android 2.3.0 + Gradle 3.3 | ปลั๊กอิน Android 3.0.0 + Gradle 4.1 |
|---|---|---|---|
การกำหนดค่า (เช่น การเรียกใช้ ./gradlew --help) |
ประมาณ 2 นาที | ~9 วินาที | ~2.5 วินาที |
| การเปลี่ยนแปลง Java 1 บรรทัด (การเปลี่ยนแปลงการติดตั้งใช้งาน) | ประมาณ 2 นาที 15 วินาที | ~29 วินาที | ~6.4 วินาที |
การเปลี่ยนแปลงบางอย่างเหล่านี้จะทำให้บิลด์ที่มีอยู่ใช้งานไม่ได้ ดังนั้น คุณควรพิจารณา\ ความพยายามในการย้ายข้อมูลโปรเจ็กต์ก่อนที่จะใช้ปลั๊กอินใหม่
หากไม่พบการปรับปรุงประสิทธิภาพตามที่อธิบายไว้ข้างต้น โปรดรายงานข้อบกพร่อง และแนบร่องรอยการสร้างโดยใช้ Gradle Profiler
ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้
- Gradle 4.1 ขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับ การอัปเดต Gradle
-
เครื่องมือสร้าง 26.0.2
ขึ้นไป การอัปเดตนี้ทำให้คุณไม่ต้องระบุเวอร์ชันสำหรับ
เครื่องมือบิลด์อีกต่อไป เนื่องจากปลั๊กอินจะใช้เวอร์ชันขั้นต่ำที่จำเป็นโดยค่าเริ่มต้น
ตอนนี้คุณจึงนำ
android.buildToolsVersionพร็อพเพอร์ตี้ออกได้แล้ว
3.0.1 (พฤศจิกายน 2017)
การอัปเดตนี้เป็นการอัปเดตเล็กน้อยเพื่อรองรับ Android Studio 3.0.1 และรวมถึงการแก้ไขข้อบกพร่องทั่วไปและการปรับปรุงประสิทธิภาพ
การเพิ่มประสิทธิภาพ
- การทำงานแบบขนานที่ดียิ่งขึ้นสำหรับโปรเจ็กต์แบบหลายโมดูลผ่านกราฟงานแบบละเอียด
- เมื่อทำการเปลี่ยนแปลงการขึ้นต่อกัน Gradle จะสร้างได้เร็วขึ้นโดยไม่ต้อง
คอมไพล์โมดูลที่ไม่มีสิทธิ์เข้าถึง API ของการขึ้นต่อกันนั้นอีกครั้ง
คุณควรจำกัดการพึ่งพาที่เปิดเผย API ให้กับโมดูลอื่นๆ โดย
ใช้
การกำหนดค่าการขึ้นต่อกันใหม่ของ Gradle ดังนี้
implementation,api,compileOnlyและruntimeOnly - ความเร็วในการสร้างที่เพิ่มขึ้นเร็วขึ้นเนื่องจากการเพิ่มประสิทธิภาพ DEX ต่อคลาส ตอนนี้ระบบจะคอมไพล์แต่ละคลาสเป็นไฟล์ DEX แยกกัน และจะทำการ re-dex เฉพาะคลาสที่แก้ไขแล้วเท่านั้น นอกจากนี้ คุณควรคาดหวังว่าความเร็วในการบิลด์จะดีขึ้นสำหรับ
แอปที่ตั้งค่า
minSdkVersionเป็น 20 หรือต่ำกว่า และใช้ Multi-Dex แบบเดิม - ปรับปรุงความเร็วในการบิลด์โดยการเพิ่มประสิทธิภาพงานบางอย่างให้ใช้เอาต์พุตที่แคชไว้ หากต้องการใช้ประโยชน์จากการเพิ่มประสิทธิภาพนี้ คุณต้องเปิดใช้แคชบิลด์ Gradle ก่อน
- ปรับปรุงการประมวลผลทรัพยากรแบบเพิ่มทีละรายการโดยใช้ AAPT2 ซึ่งตอนนี้
เปิดใช้โดยค่าเริ่มต้นแล้ว หากพบปัญหาขณะใช้ AAPT2 โปรดรายงานข้อบกพร่อง นอกจากนี้ คุณยัง
ปิดใช้ AAPT2 ได้โดยตั้งค่า
android.enableAapt2=falseในไฟล์gradle.propertiesและรีสตาร์ท Gradle Daemon โดย เรียกใช้./gradlew --stopจากบรรทัดคำสั่ง
ฟีเจอร์ใหม่
- การจัดการการขึ้นต่อกันที่รับรู้ตัวแปร เมื่อสร้างโมดูลบางเวอร์ชัน ตอนนี้ปลั๊กอินจะ จับคู่เวอร์ชันของโมดูลการอ้างอิงไลบรารีในเครื่องกับ เวอร์ชันของโมดูลที่คุณกำลังสร้างโดยอัตโนมัติ
- รวมปลั๊กอินโมดูลฟีเจอร์ใหม่เพื่อรองรับ Android Instant Apps และ Android Instant Apps SDK (ซึ่งคุณดาวน์โหลดได้โดยใช้ SDK Manager) หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างโมดูลฟีเจอร์ด้วยปลั๊กอินใหม่ โปรดอ่านโครงสร้างของ Instant App ที่มีหลายฟีเจอร์
- รองรับการใช้ฟีเจอร์ภาษาของ Java 8 และไลบรารี Java 8 บางอย่างในตัว ตอนนี้ Jack เลิกใช้งานแล้วและไม่จำเป็นต้องใช้ และคุณ ควรปิดใช้ Jack ก่อนเพื่อใช้การรองรับ Java 8 ที่ได้รับการปรับปรุงซึ่งมีอยู่ใน ชุดเครื่องมือเริ่มต้น อ่านข้อมูลเพิ่มเติมได้ที่ ใช้ฟีเจอร์ภาษาของ Java 8
-
เพิ่มการรองรับการเรียกใช้การทดสอบด้วย Android Test Orchestrator ซึ่งช่วยให้คุณเรียกใช้การทดสอบแต่ละรายการของแอปได้ภายใน การเรียกใช้ Instrumentation ของตัวเอง เนื่องจากการทดสอบแต่ละรายการทำงานในอินสแตนซ์ Instrumentation ของตัวเอง สถานะที่แชร์ระหว่างการทดสอบจึงไม่สะสมใน CPU หรือหน่วยความจำของอุปกรณ์ และแม้ว่าการทดสอบรายการหนึ่งจะขัดข้อง แต่ก็จะทำให้เฉพาะอินสแตนซ์ของ Instrumentation ของการทดสอบนั้นหยุดทำงานเท่านั้น การทดสอบอื่นๆ จึงยังคงทำงานได้
- เพิ่ม
testOptions.executionเพื่อพิจารณาว่าจะใช้ การจัดสรรการทดสอบในอุปกรณ์หรือไม่ หากต้องการใช้ Android Test Orchestrator คุณต้องระบุANDROID_TEST_ORCHESTRATORดังที่แสดงด้านล่าง โดยค่าเริ่มต้น ระบบจะตั้งค่าพร็อพเพอร์ตี้นี้เป็นHOSTซึ่งจะปิดใช้การจัด การในอุปกรณ์และเป็นวิธีมาตรฐานในการเรียกใช้การทดสอบ
Groovy
android { testOptions { execution 'ANDROID_TEST_ORCHESTRATOR' } }
Kotlin
android { testOptions { execution = "ANDROID_TEST_ORCHESTRATOR" } }
- เพิ่ม
-
การกำหนดค่าการขึ้นต่อกันแบบใหม่
androidTestUtilช่วยให้คุณ ติดตั้ง APK ตัวช่วยทดสอบอื่นก่อนเรียกใช้การทดสอบเครื่องมือ เช่น Android Test Orchestrator ได้Groovy
dependencies { androidTestUtil 'com.android.support.test:orchestrator:1.0.0' ... }
Kotlin
dependencies { androidTestUtil("com.android.support.test:orchestrator:1.0.0") ... }
-
เพิ่ม
testOptions.unitTests.includeAndroidResourcesเพื่อ รองรับการทำ Unit Test ที่ต้องใช้ทรัพยากร Android เช่น Roboelectric เมื่อตั้งค่าพร็อพเพอร์ตี้นี้เป็นtrueปลั๊กอินจะผสานทรัพยากร ชิ้นงาน และ ไฟล์ Manifest ก่อนที่จะเรียกใช้การทดสอบหน่วย จากนั้นการทดสอบจะ ตรวจสอบcom/android/tools/test_config.propertiesใน classpath สำหรับคีย์ต่อไปนี้-
android_merged_assets: เส้นทางสัมบูรณ์ไปยัง ไดเรกทอรีเนื้อหาที่ผสานรวมหมายเหตุ: สำหรับโมดูลไลบรารี ชิ้นงานที่ผสาน จะไม่มีชิ้นงานของทรัพยากร Dependency (ดู ปัญหา #65550419)
-
android_merged_manifest: Absolute Path ไปยัง ไฟล์ Manifest ที่ผสานแล้ว -
android_merged_resources: เส้นทางที่สมบูรณ์ไปยัง ไดเรกทอรีทรัพยากรที่ผสาน ซึ่งมีทรัพยากรทั้งหมดจาก โมดูลและการขึ้นต่อกันทั้งหมด -
android_custom_package: ชื่อแพ็กเกจของคลาส R สุดท้าย หากแก้ไขรหัสแอปแบบไดนามิก ชื่อแพ็กเกจนี้อาจไม่ตรงกับแอตทริบิวต์packageใน Manifest ของแอป
-
- รองรับแบบอักษร เป็นทรัพยากร (ซึ่งเป็นฟีเจอร์ใหม่ที่เปิดตัวใน Android 8.0 (API ระดับ 26))
- รองรับ APK ที่เฉพาะเจาะจงภาษาด้วย Android Instant Apps SDK 1.1 ขึ้นไป
-
ตอนนี้คุณเปลี่ยนไดเรกทอรีเอาต์พุตสำหรับโปรเจ็กต์บิลด์เนทีฟภายนอกได้แล้ว ดังที่แสดงด้านล่าง
Groovy
android { ... externalNativeBuild { // For ndk-build, instead use the ndkBuild block. cmake { ... // Specifies a relative path for outputs from external native // builds. You can specify any path that's not a subdirectory // of your project's temporary build/ directory. buildStagingDirectory "./outputs/cmake" } } }
Kotlin
android { ... externalNativeBuild { // For ndk-build, instead use the ndkBuild block. cmake { ... // Specifies a relative path for outputs from external native // builds. You can specify any path that's not a subdirectory // of your project's temporary build/ directory. buildStagingDirectory = "./outputs/cmake" } } }
- ตอนนี้คุณสามารถ ใช้ CMake 3.7 หรือ สูงกว่าเมื่อสร้างโปรเจ็กต์เนทีฟจาก Android Studio
-
การกำหนดค่าการขึ้นต่อกันแบบใหม่
lintChecksช่วยให้คุณ สร้าง JAR ที่กำหนดกฎ Lint ที่กำหนดเอง และจัดแพ็กเกจลงในโปรเจ็กต์ AAR และ APK ได้กฎ Lint ที่กำหนดเองต้องอยู่ในโปรเจ็กต์แยกต่างหากที่เอาต์พุต เป็น JAR เดียวและมีเฉพาะ
compileOnlyการอ้างอิง จากนั้นโมดูลแอปและไลบรารีอื่นๆ จะขึ้นอยู่กับโปรเจ็กต์ Lint โดยใช้การกำหนดค่าlintChecksได้Groovy
dependencies { // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file // and package it with your module. If the module is an Android library, // other projects that depend on it automatically use the lint checks. // If the module is an app, lint includes these rules when analyzing the app. lintChecks project(':lint-checks') }
Kotlin
dependencies { // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file // and package it with your module. If the module is an Android library, // other projects that depend on it automatically use the lint checks. // If the module is an app, lint includes these rules when analyzing the app. lintChecks(project(":lint-checks")) }
การเปลี่ยนแปลงลักษณะการทำงาน
- ปลั๊กอิน Android 3.0.0 จะนำ API บางรายการออก และบิลด์จะหยุดทำงาน
หากคุณใช้ API เหล่านั้น เช่น คุณจะใช้ Variants API เพื่อ
เข้าถึงออบเจ็กต์
outputFile()หรือใช้processManifest.manifestOutputFile()เพื่อรับไฟล์ Manifest สำหรับแต่ละตัวแปรไม่ได้อีกต่อไป ดูข้อมูลเพิ่มเติมได้ที่การเปลี่ยนแปลง API - คุณไม่จำเป็นต้องระบุเวอร์ชันสำหรับเครื่องมือบิลด์อีกต่อไป (ดังนั้น คุณ
จึงนำพร็อพเพอร์ตี้
android.buildToolsVersionออกได้แล้ว) โดย ค่าเริ่มต้น ปลั๊กอินจะใช้เครื่องมือบิลด์เวอร์ชันขั้นต่ำที่จำเป็น โดยอัตโนมัติสำหรับปลั๊กอิน Android เวอร์ชันที่คุณใช้ - ตอนนี้คุณเปิด/ปิดใช้การบีบอัด PNG ในบล็อก
buildTypesได้แล้ว ดังที่แสดงด้านล่าง การบีบอัด PNG จะเปิดใช้โดยค่าเริ่มต้นสำหรับบิลด์ทั้งหมด ยกเว้นบิลด์การแก้ไขข้อบกพร่อง เนื่องจากจะเพิ่มเวลาในการบิลด์สำหรับโปรเจ็กต์ที่มี ไฟล์ PNG จำนวนมาก ดังนั้น หากต้องการปรับปรุงเวลาในการบิลด์สำหรับบิลด์ประเภทอื่นๆ คุณควรปิดใช้การบีบอัด PNG หรือ แปลง รูปภาพเป็น WebPGroovy
android { buildTypes { release { // Disables PNG crunching for the release build type. crunchPngs false } } }
Kotlin
android { buildTypes { release { // Disables PNG crunching for the release build type. isCrunchPngs = false } } }
- ตอนนี้ปลั๊กอิน Android จะสร้างเป้าหมายที่เรียกใช้งานได้โดยอัตโนมัติ ซึ่งคุณกำหนดค่าในโปรเจ็กต์ CMake ภายนอกได้
- ตอนนี้คุณต้อง
เพิ่มตัวประมวลผล
คำอธิบายประกอบลงในคลาสพาธของตัวประมวลผลโดยใช้
การกำหนดค่าการขึ้นต่อกัน
annotationProcessor - ตอนนี้การใช้
ndkCompileที่เลิกใช้งานแล้วจะถูกจำกัดมากขึ้น คุณควรย้ายข้อมูลไปใช้ CMake หรือ ndk-build แทนเพื่อคอมไพล์ โค้ดเนทีฟที่ต้องการแพ็กเกจลงใน APK ดูข้อมูลเพิ่มเติมได้ที่หัวข้อย้ายข้อมูลจาก ndkcompile
3.0.0 (ตุลาคม 2017)
ปลั๊กอิน Android Gradle 3.0.0 มีการเปลี่ยนแปลงหลายอย่างที่มุ่ง แก้ไขปัญหาด้านประสิทธิภาพของโปรเจ็กต์ขนาดใหญ่
ตัวอย่างเช่น ในโครงร่างตัวอย่างที่มีโมดูลประมาณ 130 โมดูลและมีการอ้างอิงภายนอกจำนวนมาก (แต่ไม่มีโค้ดหรือทรัพยากร) คุณจะเห็นประสิทธิภาพที่ดีขึ้นคล้ายกับตัวอย่างต่อไปนี้
| เวอร์ชันปลั๊กอิน Android + เวอร์ชัน Gradle | ปลั๊กอิน Android 2.2.0 + Gradle 2.14.1 | ปลั๊กอิน Android 2.3.0 + Gradle 3.3 | ปลั๊กอิน Android 3.0.0 + Gradle 4.1 |
|---|---|---|---|
การกำหนดค่า (เช่น การเรียกใช้ ./gradlew --help) |
ประมาณ 2 นาที | ~9 วินาที | ~2.5 วินาที |
| การเปลี่ยนแปลง Java 1 บรรทัด (การเปลี่ยนแปลงการติดตั้งใช้งาน) | ประมาณ 2 นาที 15 วินาที | ~29 วินาที | ~6.4 วินาที |
การเปลี่ยนแปลงบางอย่างเหล่านี้จะทำให้บิลด์ที่มีอยู่ใช้งานไม่ได้ ดังนั้น คุณควรพิจารณา\ ความพยายามในการย้ายข้อมูลโปรเจ็กต์ก่อนที่จะใช้ปลั๊กอินใหม่
หากไม่พบการปรับปรุงประสิทธิภาพตามที่อธิบายไว้ข้างต้น โปรดรายงานข้อบกพร่อง และแนบร่องรอยการสร้างโดยใช้ Gradle Profiler
ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้
- Gradle 4.1 ขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับ การอัปเดต Gradle
-
เครื่องมือสร้าง 26.0.2
ขึ้นไป การอัปเดตนี้ทำให้คุณไม่ต้องระบุเวอร์ชันสำหรับ
เครื่องมือบิลด์อีกต่อไป เนื่องจากปลั๊กอินจะใช้เวอร์ชันขั้นต่ำที่จำเป็นโดยค่าเริ่มต้น
ตอนนี้คุณจึงนำ
android.buildToolsVersionพร็อพเพอร์ตี้ออกได้แล้ว
3.0.1 (พฤศจิกายน 2017)
การอัปเดตนี้เป็นการอัปเดตเล็กน้อยเพื่อรองรับ Android Studio 3.0.1 และรวมถึงการแก้ไขข้อบกพร่องทั่วไปและการปรับปรุงประสิทธิภาพ
การเพิ่มประสิทธิภาพ
- การทำงานแบบขนานที่ดียิ่งขึ้นสำหรับโปรเจ็กต์แบบหลายโมดูลผ่านกราฟงานแบบละเอียด
- เมื่อทำการเปลี่ยนแปลงการขึ้นต่อกัน Gradle จะสร้างได้เร็วขึ้นโดยไม่ต้อง
คอมไพล์โมดูลที่ไม่มีสิทธิ์เข้าถึง API ของการขึ้นต่อกันนั้นอีกครั้ง
คุณควรจำกัดการพึ่งพาที่เปิดเผย API ให้กับโมดูลอื่นๆ โดย
ใช้
การกำหนดค่าการขึ้นต่อกันใหม่ของ Gradle ดังนี้
implementation,api,compileOnlyและruntimeOnly - ความเร็วในการสร้างที่เพิ่มขึ้นเร็วขึ้นเนื่องจากการเพิ่มประสิทธิภาพ DEX ต่อคลาส ตอนนี้ระบบจะคอมไพล์แต่ละคลาสเป็นไฟล์ DEX แยกกัน และจะทำการ re-dex เฉพาะคลาสที่แก้ไขแล้วเท่านั้น นอกจากนี้ คุณควรคาดหวังว่าความเร็วในการบิลด์จะดีขึ้นสำหรับ
แอปที่ตั้งค่า
minSdkVersionเป็น 20 หรือต่ำกว่า และใช้ Multi-Dex แบบเดิม - ปรับปรุงความเร็วในการบิลด์โดยการเพิ่มประสิทธิภาพงานบางอย่างให้ใช้เอาต์พุตที่แคชไว้ หากต้องการใช้ประโยชน์จากการเพิ่มประสิทธิภาพนี้ คุณต้องเปิดใช้แคชบิลด์ Gradle ก่อน
- ปรับปรุงการประมวลผลทรัพยากรแบบเพิ่มทีละรายการโดยใช้ AAPT2 ซึ่งตอนนี้
เปิดใช้โดยค่าเริ่มต้นแล้ว หากพบปัญหาขณะใช้ AAPT2 โปรดรายงานข้อบกพร่อง นอกจากนี้ คุณยัง
ปิดใช้ AAPT2 ได้โดยตั้งค่า
android.enableAapt2=falseในไฟล์gradle.propertiesและรีสตาร์ท Gradle Daemon โดย เรียกใช้./gradlew --stopจากบรรทัดคำสั่ง
ฟีเจอร์ใหม่
- การจัดการการขึ้นต่อกันที่รับรู้ตัวแปร เมื่อสร้างโมดูลบางเวอร์ชัน ตอนนี้ปลั๊กอินจะ จับคู่เวอร์ชันของโมดูลการอ้างอิงไลบรารีในเครื่องกับ เวอร์ชันของโมดูลที่คุณกำลังสร้างโดยอัตโนมัติ
- รวมปลั๊กอินโมดูลฟีเจอร์ใหม่เพื่อรองรับ Android Instant Apps และ Android Instant Apps SDK (ซึ่งคุณดาวน์โหลดได้โดยใช้ SDK Manager) หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างโมดูลฟีเจอร์ด้วยปลั๊กอินใหม่ โปรดอ่านโครงสร้างของ Instant App ที่มีหลายฟีเจอร์
- รองรับการใช้ฟีเจอร์ภาษาของ Java 8 และไลบรารี Java 8 บางอย่างในตัว ตอนนี้ Jack เลิกใช้งานแล้วและไม่จำเป็นต้องใช้ และคุณ ควรปิดใช้ Jack ก่อนเพื่อใช้การรองรับ Java 8 ที่ได้รับการปรับปรุงซึ่งมีอยู่ใน ชุดเครื่องมือเริ่มต้น อ่านข้อมูลเพิ่มเติมได้ที่ ใช้ฟีเจอร์ภาษาของ Java 8
-
เพิ่มการรองรับการเรียกใช้การทดสอบด้วย Android Test Orchestrator ซึ่งช่วยให้คุณเรียกใช้การทดสอบแต่ละรายการของแอปได้ภายใน การเรียกใช้ Instrumentation ของตัวเอง เนื่องจากการทดสอบแต่ละรายการทำงานในอินสแตนซ์ Instrumentation ของตัวเอง สถานะที่แชร์ระหว่างการทดสอบจึงไม่สะสมใน CPU หรือหน่วยความจำของอุปกรณ์ และแม้ว่าการทดสอบรายการหนึ่งจะขัดข้อง แต่ก็จะทำให้เฉพาะอินสแตนซ์ของ Instrumentation ของการทดสอบนั้นหยุดทำงานเท่านั้น การทดสอบอื่นๆ จึงยังคงทำงานได้
- เพิ่ม
testOptions.executionเพื่อพิจารณาว่าจะใช้ การจัดสรรการทดสอบในอุปกรณ์หรือไม่ หากต้องการใช้ Android Test Orchestrator คุณต้องระบุANDROID_TEST_ORCHESTRATORดังที่แสดงด้านล่าง โดยค่าเริ่มต้น ระบบจะตั้งค่าพร็อพเพอร์ตี้นี้เป็นHOSTซึ่งจะปิดใช้การจัด การในอุปกรณ์และเป็นวิธีมาตรฐานในการเรียกใช้การทดสอบ
Groovy
android { testOptions { execution 'ANDROID_TEST_ORCHESTRATOR' } }
Kotlin
android { testOptions { execution = "ANDROID_TEST_ORCHESTRATOR" } }
- เพิ่ม
-
การกำหนดค่าการขึ้นต่อกันแบบใหม่
androidTestUtilช่วยให้คุณ ติดตั้ง APK ตัวช่วยทดสอบอื่นก่อนเรียกใช้การทดสอบเครื่องมือ เช่น Android Test Orchestrator ได้Groovy
dependencies { androidTestUtil 'com.android.support.test:orchestrator:1.0.0' ... }
Kotlin
dependencies { androidTestUtil("com.android.support.test:orchestrator:1.0.0") ... }
-
เพิ่ม
testOptions.unitTests.includeAndroidResourcesเพื่อ รองรับการทำ Unit Test ที่ต้องใช้ทรัพยากร Android เช่น Roboelectric เมื่อตั้งค่าพร็อพเพอร์ตี้นี้เป็นtrueปลั๊กอินจะผสานทรัพยากร ชิ้นงาน และ ไฟล์ Manifest ก่อนที่จะเรียกใช้การทดสอบหน่วย จากนั้นการทดสอบจะ ตรวจสอบcom/android/tools/test_config.propertiesใน classpath สำหรับคีย์ต่อไปนี้-
android_merged_assets: เส้นทางสัมบูรณ์ไปยัง ไดเรกทอรีเนื้อหาที่ผสานรวมหมายเหตุ: สำหรับโมดูลไลบรารี ชิ้นงานที่ผสาน จะไม่มีชิ้นงานของทรัพยากร Dependency (ดู ปัญหา #65550419)
-
android_merged_manifest: Absolute Path ไปยัง ไฟล์ Manifest ที่ผสานแล้ว -
android_merged_resources: เส้นทางที่สมบูรณ์ไปยัง ไดเรกทอรีทรัพยากรที่ผสาน ซึ่งมีทรัพยากรทั้งหมดจาก โมดูลและการขึ้นต่อกันทั้งหมด -
android_custom_package: ชื่อแพ็กเกจของคลาส R สุดท้าย หากแก้ไขรหัสแอปแบบไดนามิก ชื่อแพ็กเกจนี้อาจไม่ตรงกับแอตทริบิวต์packageใน Manifest ของแอป
-
- รองรับแบบอักษร เป็นทรัพยากร (ซึ่งเป็นฟีเจอร์ใหม่ที่เปิดตัวใน Android 8.0 (API ระดับ 26))
- รองรับ APK ที่เฉพาะเจาะจงภาษาด้วย Android Instant Apps SDK 1.1 ขึ้นไป
-
ตอนนี้คุณเปลี่ยนไดเรกทอรีเอาต์พุตสำหรับโปรเจ็กต์บิลด์เนทีฟภายนอกได้แล้ว ดังที่แสดงด้านล่าง
Groovy
android { ... externalNativeBuild { // For ndk-build, instead use the ndkBuild block. cmake { ... // Specifies a relative path for outputs from external native // builds. You can specify any path that's not a subdirectory // of your project's temporary build/ directory. buildStagingDirectory "./outputs/cmake" } } }
Kotlin
android { ... externalNativeBuild { // For ndk-build, instead use the ndkBuild block. cmake { ... // Specifies a relative path for outputs from external native // builds. You can specify any path that's not a subdirectory // of your project's temporary build/ directory. buildStagingDirectory = "./outputs/cmake" } } }
- ตอนนี้คุณสามารถ ใช้ CMake 3.7 หรือ สูงกว่าเมื่อสร้างโปรเจ็กต์เนทีฟจาก Android Studio
-
การกำหนดค่าการขึ้นต่อกันแบบใหม่
lintChecksช่วยให้คุณ สร้าง JAR ที่กำหนดกฎ Lint ที่กำหนดเอง และจัดแพ็กเกจลงในโปรเจ็กต์ AAR และ APK ได้กฎ Lint ที่กำหนดเองต้องอยู่ในโปรเจ็กต์แยกต่างหากที่เอาต์พุต เป็น JAR เดียวและมีเฉพาะ
compileOnlyการอ้างอิง จากนั้นโมดูลแอปและไลบรารีอื่นๆ จะขึ้นอยู่กับโปรเจ็กต์ Lint โดยใช้การกำหนดค่าlintChecksได้Groovy
dependencies { // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file // and package it with your module. If the module is an Android library, // other projects that depend on it automatically use the lint checks. // If the module is an app, lint includes these rules when analyzing the app. lintChecks project(':lint-checks') }
Kotlin
dependencies { // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file // and package it with your module. If the module is an Android library, // other projects that depend on it automatically use the lint checks. // If the module is an app, lint includes these rules when analyzing the app. lintChecks(project(":lint-checks")) }
การเปลี่ยนแปลงลักษณะการทำงาน
- ปลั๊กอิน Android 3.0.0 จะนำ API บางรายการออก และบิลด์จะหยุดทำงาน
หากคุณใช้ API เหล่านั้น เช่น คุณจะใช้ Variants API เพื่อ
เข้าถึงออบเจ็กต์
outputFile()หรือใช้processManifest.manifestOutputFile()เพื่อรับไฟล์ Manifest สำหรับแต่ละตัวแปรไม่ได้อีกต่อไป ดูข้อมูลเพิ่มเติมได้ที่การเปลี่ยนแปลง API - คุณไม่จำเป็นต้องระบุเวอร์ชันสำหรับเครื่องมือบิลด์อีกต่อไป (ดังนั้น คุณ
จึงนำพร็อพเพอร์ตี้
android.buildToolsVersionออกได้แล้ว) โดย ค่าเริ่มต้น ปลั๊กอินจะใช้เครื่องมือบิลด์เวอร์ชันขั้นต่ำที่จำเป็น โดยอัตโนมัติสำหรับปลั๊กอิน Android เวอร์ชันที่คุณใช้ - ตอนนี้คุณเปิด/ปิดใช้การบีบอัด PNG ในบล็อก
buildTypesได้แล้ว ดังที่แสดงด้านล่าง การบีบอัด PNG จะเปิดใช้โดยค่าเริ่มต้นสำหรับบิลด์ทั้งหมด ยกเว้นบิลด์การแก้ไขข้อบกพร่อง เนื่องจากจะเพิ่มเวลาในการบิลด์สำหรับโปรเจ็กต์ที่มี ไฟล์ PNG จำนวนมาก ดังนั้น หากต้องการปรับปรุงเวลาในการบิลด์สำหรับบิลด์ประเภทอื่นๆ คุณควรปิดใช้การบีบอัด PNG หรือ แปลง รูปภาพเป็น WebPGroovy
android { buildTypes { release { // Disables PNG crunching for the release build type. crunchPngs false } } }
Kotlin
android { buildTypes { release { // Disables PNG crunching for the release build type. isCrunchPngs = false } } }
- ตอนนี้ปลั๊กอิน Android จะสร้างเป้าหมายที่เรียกใช้งานได้โดยอัตโนมัติ ซึ่งคุณกำหนดค่าในโปรเจ็กต์ CMake ภายนอกได้
- ตอนนี้คุณต้อง
เพิ่มตัวประมวลผล
คำอธิบายประกอบลงในคลาสพาธของตัวประมวลผลโดยใช้
การกำหนดค่าการขึ้นต่อกัน
annotationProcessor - ตอนนี้การใช้
ndkCompileที่เลิกใช้งานแล้วจะถูกจำกัดมากขึ้น คุณควรย้ายข้อมูลไปใช้ CMake หรือ ndk-build แทนเพื่อคอมไพล์ โค้ดเนทีฟที่ต้องการแพ็กเกจลงใน APK ดูข้อมูลเพิ่มเติมได้ที่หัวข้อย้ายข้อมูลจาก ndkcompile
2.3.0 (กุมภาพันธ์ 2017)
2.3.3 (มิถุนายน 2017)
การอัปเดตนี้เป็นการอัปเดตเล็กน้อยที่เพิ่มความเข้ากันได้กับ Android Studio 2.3.3
2.3.2 (พฤษภาคม 2017)
การอัปเดตนี้เป็นการอัปเดตเล็กน้อยที่เพิ่มความเข้ากันได้กับ Android Studio 2.3.2
2.3.1 (เมษายน 2017)
การอัปเดตนี้เป็นการอัปเดตเล็กน้อยสำหรับปลั๊กอิน Android 2.3.0 ซึ่งแก้ไขปัญหา ที่อุปกรณ์ Android จริงบางเครื่องทำงานไม่ถูกต้องกับ Instant Run (ดู ปัญหา #235879)
- การขึ้นต่อกัน
-
- Gradle 3.3 ขึ้นไป
- เครื่องมือสร้าง 25.0.0 ขึ้นไป
- ใหม่:
-
- ใช้ Gradle 3.3 ซึ่งมีการปรับปรุงประสิทธิภาพและ ฟีเจอร์ใหม่ ดูรายละเอียดเพิ่มเติมได้ที่ บันทึกประจำรุ่นของ Gradle
- บิลด์แคช: จัดเก็บเอาต์พุตบางอย่างที่ปลั๊กอิน Android
สร้างขึ้นเมื่อบิลด์โปรเจ็กต์ (เช่น AAR ที่ไม่ได้แพ็ก
และการอ้างอิงระยะไกลที่ผ่านการ Dex มาก่อน) บิลด์ที่สะอาดจะ
เร็วกว่ามากขณะใช้แคช เนื่องจากระบบบิลด์สามารถ
นำไฟล์ที่แคชเหล่านั้นกลับมาใช้ใหม่ได้ในระหว่างบิลด์ต่อๆ ไป
แทนที่จะสร้างขึ้นใหม่ โปรเจ็กต์ที่ใช้ปลั๊กอิน Android 2.3.0 ขึ้นไปจะใช้
แคชของบิลด์โดยค่าเริ่มต้น ดูข้อมูลเพิ่มเติมได้ที่
ปรับปรุงความเร็วในการบิลด์ด้วย
แคชบิลด์
- รวมถึง
cleanBuildCacheงานที่ล้างแคชของบิวด์ - หากคุณใช้แคชบิลด์เวอร์ชันทดลอง (รวมอยู่ในปลั๊กอินเวอร์ชันก่อนหน้า) คุณควรอัปเดตปลั๊กอินเป็น เวอร์ชันล่าสุด
- รวมถึง
- การเปลี่ยนแปลง:
-
- รองรับการเปลี่ยนแปลง Instant Run ที่รวมอยู่ใน Android Studio 2.3
- เวลาในการกำหนดค่าสำหรับโปรเจ็กต์ขนาดใหญ่มากควรเร็วขึ้นอย่างมาก
- แก้ไขปัญหาเกี่ยวกับการดาวน์โหลดอัตโนมัติสำหรับไลบรารี ConstraintLayout
- ตอนนี้ปลั๊กอินใช้ ProGuard เวอร์ชัน 5.3.2
- รวมการแก้ไขข้อบกพร่องหลายรายการที่ รายงาน โปรดยื่นรายงานข้อบกพร่องต่อไปเมื่อพบปัญหา
2.2.0 (กันยายน 2016)
- การขึ้นต่อกัน
-
- Gradle 2.14.1 ขึ้นไป
- เครื่องมือสร้าง 23.0.2 ขึ้นไป
- ใหม่:
-
- ใช้ Gradle 2.14.1 ซึ่งมีการปรับปรุงประสิทธิภาพ และฟีเจอร์ใหม่ รวมถึงแก้ไขช่องโหว่ด้านความปลอดภัยที่อนุญาต การเพิ่มสิทธิ์ในเครื่องเมื่อใช้ Gradle Daemon ดูรายละเอียดเพิ่มเติมได้ที่ บันทึกประจำรุ่นของ Gradle
- ตอนนี้ Gradle ช่วยให้คุณลิงก์กับแหล่งที่มาแบบเนทีฟและคอมไพล์ไลบรารีแบบเนทีฟได้โดยใช้ CMake หรือ ndk-build โดยใช้ DSL
externalNativeBuild {}หลังจากสร้างไลบรารีแบบเนทีฟแล้ว Gradle จะแพ็กเกจไลบรารีเหล่านั้นลงใน APK ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ CMake และ ndk-build กับ Gradle ได้ที่เพิ่มโค้ด C และ C++ ลงใน โปรเจ็กต์ - เมื่อคุณเรียกใช้ บิลด์จากบรรทัดคำสั่ง ตอนนี้ Gradle จะพยายามดาวน์โหลด คอมโพเนนต์ SDK ที่ขาดหายไปหรือการอัปเดตที่โปรเจ็กต์ของคุณต้องใช้โดยอัตโนมัติ ดูข้อมูลเพิ่มเติมได้ที่ดาวน์โหลดแพ็กเกจที่ขาดหายไปโดยอัตโนมัติด้วย Gradle
- ฟีเจอร์แคชเวอร์ชันทดลองใหม่ช่วยให้ Gradle เร่งเวลาบิลด์ได้โดยการ ดำเนินการ Dex ล่วงหน้า จัดเก็บ และนำเวอร์ชันที่ดำเนินการ Dex ล่วงหน้าของ ไลบรารีกลับมาใช้ใหม่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟีเจอร์ทดลองนี้ได้ในคำแนะนำสร้าง แคช
- ปรับปรุงประสิทธิภาพการสร้างโดยใช้ไปป์ไลน์การแพ็กเกจเริ่มต้นใหม่
ซึ่งจัดการการซิป การลงนาม และการจัดแนว ZIP ในงานเดียว คุณ
สามารถกลับไปใช้เครื่องมือการแพ็กเกจเวอร์ชันเก่าได้โดยเพิ่ม
android.useOldPackaging=trueลงในไฟล์gradle.propertiesขณะใช้เครื่องมือการแพ็กเกจแบบใหม่ คุณจะใช้zipalignDebugไม่ได้ แต่คุณสามารถสร้างเองได้โดยการเรียกใช้เมธอดcreateZipAlignTask(String taskName, File inputFile, File outputFile) - ตอนนี้การรับรอง APK ใช้ APK Signature Scheme
v2 นอกเหนือจากการรับรอง JAR แบบเดิม แพลตฟอร์ม Android ทั้งหมดยอมรับ APK ที่ได้ การแก้ไข APK เหล่านี้หลังจากลงนามจะทำให้ลายเซ็น v2 ใช้งานไม่ได้และป้องกันการติดตั้งในอุปกรณ์
หากต้องการปิดใช้ฟีเจอร์นี้
ให้เพิ่มข้อมูลต่อไปนี้ลงในไฟล์
build.gradleระดับโมดูลGroovy
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Kotlin
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- สำหรับการสร้าง Multidex ตอนนี้คุณสามารถใช้กฎ ProGuard เพื่อกำหนดคลาสที่ Gradle ควรคอมไพล์ลงในไฟล์ DEX main ของแอปได้แล้ว เนื่องจาก
ระบบ Android จะโหลดไฟล์ DEX หลักก่อนเมื่อเริ่มต้นแอป คุณ
จึงจัดลำดับความสำคัญของบางคลาสเมื่อเริ่มต้นได้โดยคอมไพล์คลาสเหล่านั้นลงในไฟล์ DEX หลัก
หลังจากสร้างไฟล์การกำหนดค่า ProGuard สำหรับ
ไฟล์ DEX หลักโดยเฉพาะแล้ว ให้ส่งเส้นทางของไฟล์การกำหนดค่าไปยัง Gradle โดยใช้
buildTypes.multiDexKeepProguardการใช้ DSL นี้แตกต่าง จากการใช้buildTypes.proguardFilesซึ่งมีกฎ ProGuard ทั่วไป สำหรับแอปและไม่ได้ระบุคลาสสำหรับไฟล์ DEX หลัก - เพิ่มการรองรับแฟล็ก
android:extractNativeLibsซึ่งจะช่วยลดขนาดของแอปเมื่อติดตั้งใน อุปกรณ์ เมื่อตั้งค่าแฟล็กนี้เป็นfalseในองค์ประกอบ<application>ของไฟล์ Manifest ของแอป Gradle จะแพ็กเกจไลบรารีแบบเนทีฟเวอร์ชันที่ไม่ได้บีบอัดและ จัดแนวไว้กับ APK ซึ่งจะป้องกันไม่ให้PackageManagerคัดลอกไลบรารีแบบเนทีฟจาก APK ไปยังระบบไฟล์ของอุปกรณ์ในระหว่างการติดตั้ง และยังช่วยให้การอัปเดตเดลต้าของแอปมีขนาดเล็กลงอีกด้วย - ตอนนี้คุณระบุ
versionNameSuffixและapplicationIdSuffixสำหรับรสชาติของผลิตภัณฑ์ได้แล้ว (ปัญหา 59614)
- การเปลี่ยนแปลง:
-
-
getDefaultProguardFileจะแสดงไฟล์ ProGuard เริ่มต้น ที่ปลั๊กอิน Android สำหรับ Gradle จัดเตรียมให้ และจะไม่ใช้ ไฟล์ใน Android SDK อีกต่อไป - ปรับปรุงประสิทธิภาพและฟีเจอร์ของคอมไพเลอร์ Jack ดังนี้
- ตอนนี้ Jack รองรับความครอบคลุมของการทดสอบ Jacoco เมื่อตั้งค่า
testCoverageEnabledเป็นtrue - ปรับปรุงการรองรับสำหรับโปรเซสเซอร์คำอธิบายประกอบ ระบบจะใช้ตัวประมวลผล
คำอธิบายประกอบในเส้นทางคลาส เช่น การอ้างอิง
compileใดๆ กับบิลด์โดยอัตโนมัติ คุณยังระบุตัวประมวลผลคำอธิบายประกอบในการสร้างและส่งอาร์กิวเมนต์ได้โดยใช้ DSLjavaCompileOptions.annotationProcessorOptions {}ในไฟล์build.gradleระดับโมดูลGroovy
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className 'com.example.MyProcessor' // Arguments are optional. arguments = [ foo : 'bar' ] } } } }
Kotlin
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className = "com.example.MyProcessor" // Arguments are optional. arguments(mapOf(foo to "bar")) } } } }
หากต้องการใช้ตัวประมวลผลคำอธิบายประกอบในเวลาคอมไพล์ แต่ไม่รวมไว้ใน APK ให้ใช้
annotationProcessorขอบเขตการขึ้นต่อกันGroovy
dependencies { compile 'com.google.dagger:dagger:2.0' annotationProcessor 'com.google.dagger:dagger-compiler:2.0' // or use buildVariantAnnotationProcessor to target a specific build variant }
Kotlin
dependencies { implementation("com.google.dagger:dagger:2.0") annotationProcessor("com.google.dagger:dagger-compiler:2.0") // or use buildVariantAnnotationProcessor to target a specific build variant }
- โดยค่าเริ่มต้น หากขนาดฮีปของ Gradle Daemon มีขนาดอย่างน้อย 1.5
GB ตอนนี้ Jack จะทำงานในกระบวนการเดียวกับ Gradle หากต้องการปรับ
ขนาดฮีปของ Daemon ให้เพิ่มโค้ดต่อไปนี้ในไฟล์
gradle.properties# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
หากต้องการดูรายการพารามิเตอร์ที่คุณตั้งค่าได้ ให้เรียกใช้คำสั่งต่อไปนี้จากบรรทัดคำสั่ง
java -jar /build-tools/jack.jar --help-properties
- ตอนนี้ Jack รองรับความครอบคลุมของการทดสอบ Jacoco เมื่อตั้งค่า
-
2.1.0 (เมษายน 2016)
2.1.3 (สิงหาคม 2016)
การอัปเดตนี้ต้องใช้ Gradle 2.14.1 ขึ้นไป Gradle 2.14.1 มีการแก้ไขด้านความปลอดภัยที่สำคัญ รวมถึงการปรับปรุงประสิทธิภาพและฟีเจอร์ใหม่ ดูรายละเอียดเพิ่มเติมได้ที่ บันทึกประจำรุ่นของ Gradle
- การขึ้นต่อกัน
-
- Gradle 2.10 ขึ้นไป
- เครื่องมือสร้าง 23.0.2 ขึ้นไป
- ใหม่:
-
- เพิ่มการรองรับ Developer Preview ของ N, JDK 8 และฟีเจอร์ภาษา Java 8 โดยใช้ชุดเครื่องมือ Jack
ดูข้อมูลเพิ่มเติมได้ที่คู่มือการแสดงตัวอย่าง N
หมายเหตุ: ขณะนี้ Instant Run ยังใช้งานร่วมกับ Jack ไม่ได้และจะถูกปิดใช้ขณะ ใช้ Toolchain ใหม่ คุณจะต้องใช้ Jack ก็ต่อเมื่อพัฒนาแอปสำหรับ N Preview และต้องการใช้ฟีเจอร์ภาษา Java 8 ที่รองรับ
- เพิ่มการรองรับเริ่มต้นสำหรับการคอมไพล์ Java แบบเพิ่มทีละรายการเพื่อลด
เวลาในการคอมไพล์ระหว่างการพัฒนา โดยจะทำเช่นนี้ด้วยการคอมไพล์ซ้ำเฉพาะส่วนของแหล่งที่มาที่มีการเปลี่ยนแปลงหรือต้องคอมไพล์ซ้ำ
หากต้องการปิดใช้
ฟีเจอร์นี้ ให้เพิ่มโค้ดต่อไปนี้ลงในไฟล์
build.gradleที่ระดับโมดูลGroovy
android { ... compileOptions { incremental false } }
Kotlin
android { ... compileOptions { incremental = false } }
-
เพิ่มการรองรับการแปลง DEX ในกระบวนการ ซึ่งจะทำการแปลง DEX ภายในกระบวนการบิลด์ แทนที่จะอยู่ในกระบวนการ VM ภายนอกที่แยกต่างหาก ซึ่งไม่เพียงแต่จะทำให้ การสร้างแบบเพิ่มขึ้นเร็วขึ้นเท่านั้น แต่ยังทำให้การสร้างแบบเต็มเร็วขึ้นด้วย ฟีเจอร์นี้จะ เปิดใช้โดยค่าเริ่มต้นสำหรับโปรเจ็กต์ที่ตั้งค่าขนาดฮีปสูงสุดของ Gradle Daemon เป็นอย่างน้อย 2048 MB โดยให้คุณรวมข้อมูลต่อไปนี้ในไฟล์
```none org.gradle.jvmargs = -Xmx2048m ```gradle.propertiesของโปรเจ็กต์หากคุณกำหนดค่าสำหรับ
```none org.gradle.jvmargs = -Xmx3072m ```javaMaxHeapSizeในไฟล์build.gradleระดับโมดูล คุณต้องตั้งค่าorg.gradle.jvmargsเป็นค่าของjavaMaxHeapSize+ 1024 MB ตัวอย่างเช่น หากคุณตั้งค่าjavaMaxHeapSizeเป็น "2048m" คุณต้องเพิ่มค่าต่อไปนี้ลงใน ไฟล์gradle.propertiesของโปรเจ็กต์หากต้องการปิดใช้ dexing-in-process ให้เพิ่มโค้ดต่อไปนี้ลงในไฟล์
build.gradleระดับโมดูลGroovy
android { ... dexOptions { dexInProcess false } }
Kotlin
android { ... dexOptions { dexInProcess = false } }
- เพิ่มการรองรับ Developer Preview ของ N, JDK 8 และฟีเจอร์ภาษา Java 8 โดยใช้ชุดเครื่องมือ Jack
ดูข้อมูลเพิ่มเติมได้ที่คู่มือการแสดงตัวอย่าง N
2.0.0 (เมษายน 2016)
- การขึ้นต่อกัน
-
- Gradle 2.10 ขึ้นไป
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
- ใหม่:
-
- เปิดใช้ Instant Run โดย รองรับการแทรกไบต์โค้ด และพุชการอัปเดตโค้ดและทรัพยากรไปยัง แอปที่กําลังทํางานในโปรแกรมจําลองหรืออุปกรณ์จริง
- เพิ่มการรองรับการสร้างที่เพิ่มขึ้น แม้ว่าแอปจะไม่ได้ทำงานอยู่ก็ตาม เราได้ปรับปรุงเวลาในการสร้างทั้งหมดด้วยการพุชการเปลี่ยนแปลงที่เพิ่มขึ้นผ่าน Android Debug Bridge ไปยัง อุปกรณ์ที่เชื่อมต่อ
- เพิ่ม
maxProcessCountเพื่อควบคุมจำนวนกระบวนการ DEX ของ Worker ที่ สร้างขึ้นพร้อมกันได้ โค้ดต่อไปนี้ในไฟล์ระดับโมดูลbuild.gradleจะกำหนดจำนวนสูงสุดของกระบวนการที่ทำงานพร้อมกัน เป็น 4Groovy
android { ... dexOptions { maxProcessCount = 4 // this is the default value } }
Kotlin
android { ... dexOptions { maxProcessCount = 4 // this is the default value } }
</li> <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing of dependencies, which are not supported with Proguard. This improves the build speed of your debug build variant. Because the experimental shrinker does not support optimization and obfuscation, you should enable Proguard for your release builds. To enable the experimental shrinker for your debug builds, add the following to your module-level <code>build.gradle</code> file:Groovy
android { ... buildTypes { debug { minifyEnabled true useProguard false } release { minifyEnabled true useProguard true // this is a default setting } } }
Kotlin
android { ... buildTypes { getByName("debug") { minifyEnabled = true useProguard = false } getByName("release") { minifyEnabled = true useProguard = true // this is a default setting } } }
</li> <li>Added logging support and improved performance for the resource shrinker. The resource shrinker now logs all of its operations into a <code>resources.txt</code> file located in the same folder as the Proguard log files. </li> </ul>
- ลักษณะการทำงานที่เปลี่ยนแปลง
-
- เมื่อตั้งค่า
minSdkVersionเป็น 18 ขึ้นไป การรับรอง APK จะใช้ SHA256
<li>DSA and ECDSA keys can now sign APK packages. <p class="note"> <strong>Note:</strong> The <a href= "/training/articles/keystore.html">Android keystore</a> provider no longer supports <a href= "/about/versions/marshmallow/android-6.0-changes.html#behavior-keystore"> DSA keys on Android 6.0</a> (API level 23) and higher. </p> </li> </ul> - เมื่อตั้งค่า
- ปัญหาที่แก้ไขแล้ว
-
- แก้ไขปัญหาที่ทำให้เกิดการขึ้นต่อกันของ AAR ที่ซ้ำกันทั้งใน การกำหนดค่าการทดสอบและการกำหนดค่าการสร้างหลัก
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.5.0 (พฤศจิกายน 2015)
- การขึ้นต่อกัน
-
- Gradle 2.2.1 ขึ้นไป
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
- หมายเหตุทั่วไป
-
- ผสานรวมปลั๊กอิน Data Binding เข้ากับปลั๊กอิน Android สำหรับ Gradle หากต้องการเปิดใช้ ให้เพิ่มโค้ดต่อไปนี้
ในแต่ละไฟล์
build.gradleต่อโปรเจ็กต์ที่ใช้ปลั๊กอิน - เพิ่ม Transform API ใหม่
เพื่อให้ปลั๊กอินของบุคคลที่สามสามารถจัดการไฟล์
.classที่คอมไพล์แล้วก่อนที่จะ แปลงเป็นไฟล์.dexTransform API ช่วยให้การแทรกการจัดการคลาสที่กำหนดเองง่ายขึ้น พร้อมทั้งให้ความยืดหยุ่นมากขึ้นเกี่ยวกับสิ่งที่คุณจัดการได้ หากต้องการแทรกการแปลงลงในการสร้าง ให้สร้างคลาสใหม่ที่ใช้หนึ่งในอินเทอร์เฟซTransformและลงทะเบียนกับandroid.registerTransform(theTransform)หรือandroid.registerTransform(theTransform, dependencies)โดยไม่จำเป็นต้อง เชื่อมโยงงานเข้าด้วยกัน โปรดทราบข้อมูลต่อไปนี้เกี่ยวกับ Transform API - การแปลงสามารถใช้กับรายการต่อไปนี้อย่างน้อย 1 รายการ ได้แก่ โปรเจ็กต์ปัจจุบัน โปรเจ็กต์ย่อย และไลบรารีภายนอก
- ต้องลงทะเบียนการแปลงทั่วโลก ซึ่งจะใช้กับการแปลงทั้งหมด
- การประมวลผลโค้ดภายในผ่านไลบรารีการครอบคลุมโค้ด Java (JaCoCo), ProGuard
และ MultiDex จะใช้ Transform API แล้ว อย่างไรก็ตาม Java Android Compiler Kit
(Jack) ไม่ได้ใช้ API นี้ มีเพียงเส้นทางโค้ด
javac/dxเท่านั้นที่ใช้ - Gradle จะเรียกใช้การแปลงตามลำดับนี้ ได้แก่ JaCoCo, ปลั๊กอินของบุคคลที่สาม และ ProGuard ลำดับการดำเนินการสำหรับปลั๊กอินของบุคคลที่สามจะตรงกับลำดับที่ปลั๊กอินของบุคคลที่สามเพิ่มการแปลง นักพัฒนาปลั๊กอินของบุคคลที่สามไม่สามารถควบคุมลำดับการดำเนินการของการแปลงผ่าน API ได้
- เลิกใช้งานตัวรับ
dexจากคลาสApplicationVariantคุณไม่สามารถเข้าถึงงานDexผ่าน API ของตัวแปรได้อีกต่อไป เนื่องจากตอนนี้ ดำเนินการผ่านการแปลง ปัจจุบันยังไม่มีเครื่องมืออื่นมาแทนที่การควบคุมกระบวนการ dex - แก้ไขการรองรับการเพิ่มขึ้นของชิ้นงาน
- ปรับปรุงการรองรับ MultiDex โดยทำให้พร้อมใช้งานสำหรับโปรเจ็กต์ทดสอบ และ
ตอนนี้การทดสอบจะมีทรัพยากร Dependency ของ
com.android.support:multidex-instrumentationโดยอัตโนมัติ - เพิ่มความสามารถในการสร้าง Gradle ที่ล้มเหลวอย่างเหมาะสมและรายงานสาเหตุของข้อผิดพลาดพื้นฐาน เมื่อการสร้าง Gradle เรียกใช้ทาสก์แบบไม่พร้อมกันและเกิดข้อผิดพลาดใน Worker Process
- เพิ่มการรองรับการกำหนดค่าอินเทอร์เฟซแบบไบนารีของแอปพลิเคชัน (ABI) ที่เฉพาะเจาะจงในตัวแปร ที่มี ABI หลายรายการ
- เพิ่มการรองรับรายการหมายเลขซีเรียลของอุปกรณ์ที่คั่นด้วยคอมมาสำหรับตัวแปรสภาพแวดล้อม
ANDROID_SERIALเมื่อติดตั้งหรือเรียกใช้การทดสอบ - แก้ไขการติดตั้งที่ไม่สำเร็จในอุปกรณ์ที่ใช้ Android 5.0 (API ระดับ 20) ขึ้นไป เมื่อชื่อ APK มีช่องว่าง
- แก้ไขปัญหาต่างๆ ที่เกี่ยวข้องกับเอาต์พุตข้อผิดพลาดของ Android Asset Packaging Tool (AAPT)
- เพิ่มการรองรับการวัดประสิทธิภาพแบบเพิ่มของ JaCoCo เพื่อการสร้างแบบเพิ่มที่เร็วขึ้น ตอนนี้ปลั๊กอิน Android สำหรับ Gradle จะเรียกใช้เครื่องมือ JaCoCo โดยตรง หากต้องการบังคับให้ใช้เครื่องมือวัด JaCoCo เวอร์ชันใหม่กว่า คุณต้องเพิ่มเครื่องมือดังกล่าวเป็นการขึ้นต่อของสคริปต์บิลด์
- แก้ไขการรองรับ JaCoCo เพื่อให้ระบบไม่สนใจไฟล์ที่ไม่ใช่คลาส
- เพิ่มการรองรับ Vector Drawable สำหรับการสร้าง PNG ในเวลาบิลด์เพื่อให้เข้ากันได้แบบย้อนหลัง
ปลั๊กอิน Android สำหรับ Gradle จะสร้าง PNG สำหรับ Vector Drawable ทุกรายการที่พบในไดเรกทอรีทรัพยากร
ซึ่งไม่ได้ระบุเวอร์ชัน API หรือระบุแอตทริบิวต์
android:minSdkVersionที่มีค่า 20 หรือต่ำกว่าในองค์ประกอบ<uses-sdk>ในไฟล์ Manifest ของแอป คุณตั้งค่าความหนาแน่นของ PNG ได้โดย ใช้พร็อพเพอร์ตี้generatedDensitiesในส่วนdefaultConfigหรือproductFlavorของไฟล์build.gradle - เพิ่มการแชร์
android.jarที่จำลองได้ ซึ่งปลั๊กอินจะสร้างเพียงครั้งเดียวและใช้สำหรับการทดสอบหน่วย ตอนนี้โมดูลหลายโมดูล เช่นappและlibใช้ร่วมกัน ลบ$rootDir/buildเพื่อสร้างใหม่ - เปลี่ยนการประมวลผลทรัพยากร Java ให้เกิดขึ้นก่อนงานการปกปิดโค้ดแทนที่จะ เกิดขึ้นระหว่างการแพ็กเกจ APK การเปลี่ยนแปลงนี้จะช่วยให้งานการปกปิดมีโอกาส ในการปรับทรัพยากร Java ตามการปกปิดแพ็กเกจ
- แก้ไขปัญหาเกี่ยวกับการใช้โค้ด Java Native Interface (JNI) ในปลั๊กอินไลบรารีทดลอง
- เพิ่มความสามารถในการตั้งค่าเวอร์ชันแพลตฟอร์มแยกจากแอตทริบิวต์
android:compileSdkVersionในปลั๊กอินไลบรารีทดลอง
android { dataBinding { enabled = true } }
android { dataBinding { enabled = true } }
- ผสานรวมปลั๊กอิน Data Binding เข้ากับปลั๊กอิน Android สำหรับ Gradle หากต้องการเปิดใช้ ให้เพิ่มโค้ดต่อไปนี้
ในแต่ละไฟล์
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.3.1 (สิงหาคม 2015)
ทรัพยากร Dependency- Gradle 2.2.1 ขึ้นไป
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
- แก้ไขงาน ZipAlign เพื่อให้ ใช้เอาต์พุตของงานก่อนหน้าได้อย่างถูกต้องเมื่อใช้ชื่อไฟล์ที่กำหนดเอง
- แก้ไขการแพ็กเกจ Renderscript ด้วย NDK แล้ว
- คงการรองรับ
createDebugCoverageReportงานสร้าง - แก้ไขการรองรับการใช้พร็อพเพอร์ตี้
archiveBaseNameที่กำหนดเองในไฟล์บิลด์build.gradle - แก้ไขคำเตือน
Invalid ResourceTypelint ที่เกิดจากการค้นหาคำอธิบายประกอบของเมธอดพารามิเตอร์ เมื่อเรียกใช้ lint นอก Android Studio
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.3.0 (กรกฎาคม 2015)
ทรัพยากร Dependency- Gradle 2.2.1 ขึ้นไป
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
-
เพิ่มการรองรับพร็อพเพอร์ตี้
com.android.build.threadPoolSizeเพื่อควบคุมขนาดพูลเธรดของงานAndroidจาก ไฟล์gradle.propertiesหรือบรรทัดคำสั่ง ตัวอย่างต่อไปนี้ตั้งค่าพร็อพเพอร์ตี้นี้เป็น 4-Pcom.android.build.threadPoolSize=4 - ตั้งค่าลักษณะการทำงานเริ่มต้นของบิลด์เพื่อยกเว้นไฟล์
LICENSEและLICENSE.txtจาก APK หากต้องการรวมไฟล์เหล่านี้ไว้ใน APK ให้นำไฟล์เหล่านี้ออกจากพร็อพเพอร์ตี้packagingOptions.excludesในไฟล์build.gradleเช่นandroid { packagingOptions.excludes = [] }
android { packagingOptions.excludes.clear() }
- เพิ่มงาน
sourceSetsเพื่อตรวจสอบชุดซอร์สทั้งหมดที่ใช้ได้ - การรองรับการทำ Unit Test ได้รับการปรับปรุงเพื่อจดจำโฟลเดอร์แหล่งที่มาของหลายเวอร์ชันและตัวแปรบิลด์ ตัวอย่างเช่น หากต้องการทดสอบแอปที่มีหลายเวอร์ชัน
flavor1และflavorAที่มีประเภทบิลด์เป็นDebugชุดซอร์สของการทดสอบจะเป็นดังนี้- test
- testFlavor1
- testFlavorA
- testFlavor1FlavorA
- testFlavor1FlavorADebug
การทดสอบ Android จดจำโฟลเดอร์แหล่งที่มาของแอปที่มีหลายเวอร์ชันได้อยู่แล้ว
- ปรับปรุงการรองรับการทำ Unit Test เพื่อทำสิ่งต่อไปนี้
- เรียกใช้
javacในแหล่งที่มาหลักและแหล่งที่มาทดสอบ แม้ว่าจะตั้งค่าพร็อพเพอร์ตี้useJackเป็นtrueในไฟล์บิลด์ก็ตาม - รู้จักทรัพยากร Dependency อย่างถูกต้องสำหรับบิลด์แต่ละประเภท
- เรียกใช้
- เพิ่มการรองรับการระบุอาร์กิวเมนต์ของโปรแกรมเรียกใช้การทดสอบการวัดคุมจากบรรทัดคำสั่ง
เช่น
./gradlew connectedCheck \ -Pandroid.testInstrumentationRunnerArguments.size=medium \ -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB เพิ่มการรองรับพารามิเตอร์เพิ่มเติมของ Android Asset Packaging Tool (AAPT) ที่กำหนดเอง ในไฟล์
build.gradleเช่นandroid { aaptOptions { additionalParameters "--custom_option", "value" } }
android { aaptOptions { additionalParameters += listOf("--custom_option", "value") } }
- เพิ่มการรองรับ
โมดูล APK ทดสอบเป็นโมดูลทดสอบแยกต่างหาก โดยใช้พร็อพเพอร์ตี้
targetProjectPathและtargetVariantเพื่อตั้งค่าเส้นทาง APK และตัวแปรเป้าหมายหมายเหตุ: โมดูล APK ทดสอบไม่รองรับเวอร์ชันต่างๆ ของผลิตภัณฑ์และกำหนดเป้าหมายได้เฉพาะตัวแปรเดียว นอกจากนี้ ระบบยังไม่รองรับ Jacoco
- เพิ่มการตรวจสอบชื่อทรัพยากรก่อนผสานทรัพยากร
- เมื่อสร้างแพ็กเกจ AAR (Android ARchive) สำหรับโมดูลไลบรารี อย่าระบุตัวยึดตำแหน่ง
@{applicationId}อัตโนมัติใน การตั้งค่าการผสานไฟล์ Manifest ให้ใช้ตัวยึดตำแหน่งอื่นแทน เช่น@{libApplicationId}และ ระบุค่าสำหรับตัวยึดตำแหน่งนั้นหากต้องการรวมรหัสแอปพลิเคชันไว้ในคลังที่เก็บถาวร
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.2.0 (เมษายน 2015)
- การขึ้นต่อกัน
-
- Gradle 2.2.1 ขึ้นไป
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
- หมายเหตุทั่วไป
-
- ปรับปรุงการรองรับการเรียกใช้ Unit Test ด้วย Gradle
- เพิ่มการรองรับการรวมทรัพยากรแบบ Java ไว้ในเส้นทางคลาส เมื่อเรียกใช้การทดสอบหน่วยจาก Gradle โดยตรง
- เพิ่มการรองรับทรัพยากร Dependency ของการทำ Unit Test สำหรับอาร์ติแฟกต์ Android Archive (AAR)
- เพิ่มการรองรับพร็อพเพอร์ตี้
unitTestVariantsเพื่อให้จัดการตัวแปรการทดสอบหน่วยได้โดยใช้ไฟล์build.gradle - เพิ่ม
unitTest.allบล็อกโค้ดภายใต้testOptionsเพื่อกำหนดค่างานที่กำหนดเองสำหรับการทดสอบ หน่วย ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเพิ่มการตั้งค่าการกำหนดค่าการทดสอบหน่วยโดยใช้ตัวเลือกใหม่นี้android { testOptions { unitTest.all { jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option. } } }
android { testOptions { unitTest.all { jvmArgs += listOf("-XX:MaxPermSize=256m") // Or any other gradle option. } } }
- แก้ไขการจัดการ Enum และฟิลด์อินสแตนซ์สาธารณะในการ
แพ็กเกจของไฟล์
mockable-android.jar - แก้ไขทรัพยากร Dependency ของงานในโปรเจ็กต์ไลบรารีเพื่อให้คลาสทดสอบ คอมไพล์อีกครั้งหลังจากการเปลี่ยนแปลง
- เพิ่มพร็อพเพอร์ตี้
testProguardFileเพื่อใช้ไฟล์ ProGuard เมื่อลดขนาด APK ทดสอบ - เพิ่มพร็อพเพอร์ตี้
timeOutลงในบล็อกโค้ดadbOptionsเพื่อตั้งค่าเวลาบันทึกสูงสุดสำหรับ การบันทึกหน้าจอ Android Debug Bridge - เพิ่มการรองรับทรัพยากร 280 dpi
- ปรับปรุงประสิทธิภาพระหว่างการประเมินโปรเจ็กต์
- ปรับปรุงการรองรับการเรียกใช้ Unit Test ด้วย Gradle
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.1.3 (มีนาคม 2015)
- การขึ้นต่อกัน
-
- Gradle 2.2.1 ขึ้นไป
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
- หมายเหตุทั่วไป
-
- แก้ไขปัญหาการขึ้นต่อกันที่ซ้ำกันในแอปทดสอบซึ่งทำให้ ProGuard ทำงานล้มเหลว
- แก้ไขการใช้งาน Comparator ซึ่งไม่เป็นไปตามสัญญา Comparator ของ JDK และ สร้างข้อผิดพลาด JDK 7
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.1.2 (กุมภาพันธ์ 2015)
- การขึ้นต่อกัน
-
- Gradle 2.2.1 ขึ้นไป
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
- หมายเหตุทั่วไป
-
- เส้นทางที่แปลงเป็นมาตรฐานเมื่อสร้าง JAR ที่จำลองได้สำหรับการทดสอบหน่วย
- แก้ไขการตั้งค่า
archivesBaseNameในไฟล์build.gradleแล้ว - แก้ไขข้อผิดพลาดของตัวยึดตำแหน่งที่ยังไม่ได้รับการแก้ไขในเครื่องมือผสาน Manifest เมื่อสร้างแอปพลิเคชันทดสอบไลบรารี
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.1.1 (กุมภาพันธ์ 2015)
- การขึ้นต่อกัน
-
- Gradle 2.2.1 ขึ้นไป
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
- หมายเหตุทั่วไป
-
- แก้ไขตัวแปรบิลด์เพื่อให้มีเพียงตัวแปรที่แพ็กเกจแอป Wear เท่านั้นที่ทริกเกอร์ งานบิลด์เฉพาะ Wear
- เปลี่ยนปัญหาที่เกี่ยวข้องกับการขึ้นต่อกันให้ล้มเหลวในเวลาบิลด์แทน เวลาแก้ไขข้อบกพร่อง ลักษณะการทำงานนี้ช่วยให้คุณเรียกใช้ งานการวินิจฉัย (เช่น "dependencies") เพื่อช่วยแก้ไขความขัดแย้งได้
- แก้ไขเมธอด
android.getBootClasspath()เพื่อ แสดงผลค่า
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.1.0 (กุมภาพันธ์ 2015)
- การขึ้นต่อกัน
-
- Gradle 2.2.1 ขึ้นไป
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
- หมายเหตุทั่วไป
-
- เพิ่มการรองรับการทำ Unit Test ใหม่
- เปิดใช้การทดสอบหน่วยเพื่อเรียกใช้ใน JVM ในเครื่องกับไฟล์
android.jarเวอร์ชันพิเศษที่เข้ากันได้กับเฟรมเวิร์กการจำลองยอดนิยม เช่น Mockito - เพิ่มงานทดสอบใหม่
testDebug,testReleaseและtestMyFlavorDebugเมื่อใช้ Product Flavor - เพิ่มโฟลเดอร์แหล่งที่มาใหม่ซึ่งระบบรู้จักว่าเป็นการทดสอบหน่วย
src/test/java/,src/testDebug/java/,src/testMyFlavor/java/ - เพิ่มการกำหนดค่าใหม่ในไฟล์
build.gradleสำหรับการประกาศการขึ้นต่อกันสำหรับการทดสอบเท่านั้น เช่นtestCompile 'junit:junit:4.11'testMyFlavorCompile 'some:library:1.0'หมายเหตุ: ขณะนี้การอ้างอิงสำหรับการทดสอบเท่านั้น ยังใช้ร่วมกับ Jack (Java Android Compiler Kit) ไม่ได้
- เพิ่มตัวเลือก
android.testOptions.unitTests.returnDefaultValuesเพื่อควบคุมลักษณะการทำงานของ android.jar ที่จำลองได้ - แทนที่
Testในชื่องานทดสอบด้วยAndroidTestเช่น ตอนนี้assembleDebugTestงานassembleDebugAndroidTestเปลี่ยนเป็นassembleDebugTestงานassembleDebugAndroidTestแล้ว งานทดสอบหน่วย ยังคงมีUnitTestในชื่องาน เช่นassembleDebugUnitTest - แก้ไขไฟล์การกำหนดค่า ProGuard เพื่อไม่ให้มีผลกับ APK ทดสอบอีกต่อไป หากเปิดใช้ การลดขนาด ProGuard จะประมวลผล APK ของการทดสอบและ ใช้เฉพาะไฟล์การแมปที่สร้างขึ้นเมื่อลดขนาด APK หลัก
- การจัดการการขึ้นต่อกันที่อัปเดต
- แก้ไขปัญหาเมื่อใช้ขอบเขต
providedและpackageหมายเหตุ: ขอบเขตเหล่านี้ใช้ร่วมกับแพ็กเกจ AAR (Android ARchive) ไม่ได้ และจะทำให้บิลด์ที่มีแพ็กเกจ AAR ล้มเหลว
- แก้ไขการแก้ปัญหาการอ้างอิงเพื่อเปรียบเทียบการอ้างอิงของ แอปภายใต้การทดสอบและแอปทดสอบ หากพบอาร์ติแฟกต์ที่มี เวอร์ชันเดียวกันสำหรับทั้ง 2 แอป ระบบจะไม่รวมอาร์ติแฟกต์นั้นไว้กับ แอปทดสอบและจะแพ็กเกจเฉพาะกับแอปภายใต้การทดสอบเท่านั้น หาก พบอาร์ติแฟกต์ที่มีเวอร์ชันต่างกันสำหรับทั้ง 2 แอป บิลด์จะล้มเหลว
- แก้ไขปัญหาเมื่อใช้ขอบเขต
- เพิ่มการรองรับ
anyDpiตัวระบุ ทรัพยากรในการผสานทรัพยากร - ปรับปรุงความเร็วในการประเมินและการซิงค์ IDE สำหรับโปรเจ็กต์ที่มีโมดูล Android จำนวนมาก
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.0.1 (มกราคม 2015)
- การขึ้นต่อกัน
-
-
Gradle 2.2.1 ถึง 2.3.x
หมายเหตุ: ปลั๊กอิน Android สำหรับ Gradle เวอร์ชันนี้ใช้กับ Gradle 2.4 ขึ้นไปไม่ได้
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
-
- หมายเหตุทั่วไป
-
- แก้ไขปัญหาการสร้าง Gradle ล้มเหลวเมื่อเข้าถึงโมดูล
extractReleaseAnnotations(ปัญหา 81638) - แก้ไขปัญหาเกี่ยวกับ
Disableการส่ง--no-optimizeการตั้งค่าไปยัง Dalvik Executable (dex) bytecode (ปัญหา 82662) - แก้ไขปัญหาการผสานไฟล์ Manifest เมื่อนำเข้าไลบรารีที่มี
targetSdkVersionน้อยกว่า 16 - แก้ไขปัญหาการจัดลำดับความหนาแน่นเมื่อใช้ Android Studio กับ JDK 8
- แก้ไขปัญหาการสร้าง Gradle ล้มเหลวเมื่อเข้าถึงโมดูล
ปลั๊กอิน Android สำหรับ Gradle ฉบับแก้ไข 1.0.0 (ธันวาคม 2014)
- การขึ้นต่อกัน
-
-
Gradle 2.2.1 ถึง 2.3.x
หมายเหตุ: ปลั๊กอิน Android สำหรับ Gradle เวอร์ชันนี้ใช้กับ Gradle 2.4 ขึ้นไปไม่ได้
- เครื่องมือสร้าง 21.1.1 ขึ้นไป
-
- หมายเหตุทั่วไป
-
- การเปิดตัวปลั๊กอินครั้งแรก