Android Studio 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 ช่วยให้คุณสร้างและจัดการตัวแปรการสร้างได้ เช่น ตัวแปรสำหรับทำให้หมายเลขเวอร์ชันของข้อกำหนดต่างๆ ที่สอดคล้องกันทั่วทั้งโปรเจ็กต์
- ดูและแก้ไขตัวแปรการสร้างที่มีอยู่ในสคริปต์การสร้าง Gradle ของโปรเจ็กต์ได้อย่างรวดเร็ว
- เพิ่มตัวแปรการสร้างใหม่ในระดับโปรเจ็กต์หรือโมดูลจาก PSD โดยตรง
หมายเหตุ: หากไฟล์การกําหนดค่าบิลด์ที่มีอยู่กําหนดค่าผ่านสคริปต์ Groovy ที่ซับซ้อน คุณอาจแก้ไขค่าเหล่านั้นผ่าน PSD ไม่ได้ นอกจากนี้ คุณยังแก้ไขไฟล์บิลด์ที่เขียนด้วย Kotlin โดยใช้ PSD ไม่ได้
โมดูล
กำหนดค่าพร็อพเพอร์ตี้ที่ใช้กับตัวแปรการสร้างทั้งหมดในโมดูลที่มีอยู่ หรือเพิ่มโมดูลใหม่ลงในโปรเจ็กต์จากส่วนโมดูล เช่น คุณสามารถกําหนดค่าพร็อพเพอร์ตี้ defaultConfig
หรือจัดการการกําหนดค่าการรับรองได้ที่นี่
ทรัพยากร Dependency
ตรวจสอบและแสดงภาพทรัพยากรแต่ละรายการในกราฟทรัพยากรของโปรเจ็กต์ตามที่ Gradle แก้ปัญหาระหว่างการซิงค์โปรเจ็กต์โดยทำตามขั้นตอนต่อไปนี้
- เลือกทรัพยากร Dependencies ในแผงด้านซ้ายของ PSD
- ในแผงโมดูล ให้เลือกโมดูลที่ต้องการตรวจสอบการพึ่งพาที่แก้ไขแล้ว
- ทางด้านขวาของ PSD ให้เปิดแผงทรัพยากรที่เกี่ยวข้องซึ่งแก้ไขแล้วที่แสดงอยู่ด้านล่าง
นอกจากนี้ คุณยังค้นหาและเพิ่มข้อกำหนดเบื้องต้นลงในโปรเจ็กต์ได้อย่างรวดเร็วโดยการเลือกโมดูลจากส่วนข้อกำหนดเบื้องต้นของ PSD ก่อน จากนั้นคลิกปุ่ม (+) ในส่วนข้อกำหนดเบื้องต้นที่ประกาศ แล้วเลือกประเภทข้อกำหนดเบื้องต้นที่ต้องการเพิ่ม
คุณควรเห็นกล่องโต้ตอบคล้ายกับด้านล่าง ซึ่งจะช่วยให้คุณเพิ่มข้อกำหนดในโมดูลได้ ทั้งนี้ขึ้นอยู่กับประเภทของข้อกำหนดที่เลือก
ตัวแปรการสร้าง
ในส่วนนี้ของ PSD ให้สร้างและกําหนดค่าตัวแปรของบิลด์และรสชาติของผลิตภัณฑ์สําหรับแต่ละโมดูลในโปรเจ็กต์ คุณสามารถเพิ่มตัวยึดตําแหน่งไฟล์ Manifest, เพิ่มไฟล์ ProGuard, กําหนดคีย์การรับรอง และอื่นๆ
คำแนะนำ
ดูการอัปเดตที่แนะนำสำหรับทรัพยากร Dependency ของโปรเจ็กต์และตัวแปรการสร้างในส่วนคําแนะนําดังที่แสดงด้านล่าง
เครื่องมือจัดการทรัพยากรแบบใหม่
เครื่องมือจัดการทรัพยากรเป็นหน้าต่างเครื่องมือใหม่สำหรับการนําเข้า สร้าง จัดการ และใช้ทรัพยากรในแอป คุณสามารถเปิดหน้าต่างเครื่องมือได้โดยเลือกดู > หน้าต่างเครื่องมือ > เครื่องมือจัดการทรัพยากรจากแถบเมนู เครื่องมือจัดการทรัพยากรช่วยให้คุณทําสิ่งต่อไปนี้ได้
- แสดงทรัพยากรเป็นภาพ: คุณสามารถดูตัวอย่างรูปภาพ รูปภาพ และเทมเพลตเพื่อค้นหาทรัพยากรที่ต้องการได้อย่างรวดเร็ว
- การนําเข้าหลายรายการพร้อมกัน: คุณสามารถนําเข้าชิ้นงานที่วาดได้หลายรายการพร้อมกันได้โดยการลากและวางลงในหน้าต่างเครื่องมือเครื่องมือจัดการทรัพยากร หรือใช้วิซาร์ดนําเข้าสิ่งที่วาดได้ หากต้องการเข้าถึงวิซาร์ด ให้เลือกปุ่ม (+) ที่มุมซ้ายบนของหน้าต่างเครื่องมือ แล้วเลือกนำเข้าสิ่งที่วาดได้จากเมนูแบบเลื่อนลง
-
แปลง SVG เป็นออบเจ็กต์
VectorDrawable
: คุณสามารถใช้วิซาร์ดนําเข้าสิ่งที่วาดได้เพื่อแปลงรูปภาพ SVG เป็นออบเจ็กต์VectorDrawable
- ลากและวางชิ้นงาน: จากหน้าต่างเครื่องมือตัวจัดการทรัพยากร คุณสามารถลากและวางรายการที่วาดได้ทั้งในมุมมองการออกแบบและ XML ของเครื่องมือแก้ไขเลย์เอาต์
- ดูเวอร์ชันอื่น: ตอนนี้คุณดูเวอร์ชันอื่นของทรัพยากรได้โดยดับเบิลคลิกทรัพยากรภายในหน้าต่างเครื่องมือ มุมมองนี้แสดงเวอร์ชันต่างๆ ที่คุณสร้างและตัวกรองที่รวมไว้
- มุมมองไทล์และมุมมองรายการ: คุณเปลี่ยนมุมมองภายในหน้าต่างเครื่องมือเพื่อแสดงทรัพยากรในลักษณะต่างๆ ได้
ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำเกี่ยวกับวิธีจัดการทรัพยากรของแอป
การตรวจสอบรหัสบิลด์เมื่อทำโปรไฟล์และแก้ไขข้อบกพร่องของ APK
เมื่อคุณระบุไฟล์สัญลักษณ์การแก้ไขข้อบกพร่องสำหรับ.so
ไลบรารีที่แชร์ภายใน APK ของคุณ Android Studio จะตรวจสอบว่ารหัสบิลด์ของไฟล์สัญลักษณ์ที่ระบุตรงกับรหัสบิลด์ของไลบรารี .so
ภายใน APK
หากคุณสร้างไลบรารีแบบเนทีฟใน APK ด้วยรหัสบิลด์ Android Studio จะตรวจสอบว่ารหัสบิลด์ในไฟล์สัญลักษณ์ตรงกับรหัสบิลด์ในไลบรารีแบบเนทีฟหรือไม่ และจะปฏิเสธไฟล์สัญลักษณ์หากไม่ตรงกัน หากคุณไม่ได้สร้างด้วยรหัสบิลด์ การให้ไฟล์สัญลักษณ์ที่ไม่ถูกต้องอาจทำให้เกิดปัญหาในการแก้ไขข้อบกพร่อง
เปิดใช้ R8 โดยค่าเริ่มต้น
R8 รวมการกรอง Sugar, การลดขนาด, การสร้างความสับสน, การเพิ่มประสิทธิภาพ และการแปลงเป็น Dex ไว้ในขั้นตอนเดียว ซึ่งส่งผลให้ประสิทธิภาพของบิลด์ดีขึ้นอย่างเห็นได้ชัด R8 เปิดตัวในปลั๊กอิน Android Gradle 3.3.0 และตอนนี้เปิดใช้โดยค่าเริ่มต้นสำหรับทั้งโปรเจ็กต์แอปและไลบรารี Android ที่ใช้ปลั๊กอิน 3.4.0 ขึ้นไป
รูปภาพด้านล่างแสดงภาพรวมระดับสูงของกระบวนการคอมไพล์ก่อนเปิดตัว R8
ตอนนี้ R8 จะทำการปรับโค้ดให้ปราศจาก Sugar, การลดขนาด, การสร้างความสับสน, การเพิ่มประสิทธิภาพ และการถอด 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
ของโปรเจ็กต์หรือไม่ก็ตาม
ตอนนี้เครื่องมือแก้ไขการนําทางรองรับอาร์กิวเมนต์ทุกประเภทแล้ว
ตอนนี้เครื่องมือแก้ไขการนําทางรองรับอาร์กิวเมนต์ทุกประเภทที่คอมโพเนนต์การนําทางรองรับแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่รองรับได้ที่หัวข้อส่งข้อมูลระหว่างปลายทาง
การปรับปรุงเครื่องมือสร้างเลย์เอาต์ {:#layout-editor}
เราได้ปรับปรุงแผงแอตทริบิวต์ในเครื่องมือแก้ไขเลย์เอาต์ให้เหลือเพียงหน้าเดียวที่มีส่วนต่างๆ ที่คุณขยายเพื่อดูแอตทริบิวต์ที่กำหนดค่าได้ แผงแอตทริบิวต์ยังมีการอัปเดตต่อไปนี้ด้วย
- ส่วนแอตทริบิวต์ที่ประกาศใหม่จะแสดงแอตทริบิวต์ที่ไฟล์เลย์เอาต์ระบุไว้ และช่วยให้คุณเพิ่มแอตทริบิวต์ใหม่ได้อย่างรวดเร็ว
- ตอนนี้แผงแอตทริบิวต์ยังมีตัวบ่งชี้ข้างแอตทริบิวต์แต่ละรายการด้วย ซึ่งจะแสดงเป็นสี่เหลี่ยมจัตุรัสเต็มเมื่อค่าของแอตทริบิวต์เป็นการอ้างอิงทรัพยากร และแสดงเป็นสี่เหลี่ยมจัตุรัสว่างในกรณีอื่นๆ
- ระบบจะไฮไลต์แอตทริบิวต์ที่มีข้อผิดพลาดหรือคำเตือน ข้อความไฮไลต์สีแดงบ่งบอกถึงข้อผิดพลาด (เช่น เมื่อคุณใช้ค่าเลย์เอาต์ที่ไม่ถูกต้อง) และข้อความไฮไลต์สีส้มบ่งบอกถึงคําเตือน (เช่น เมื่อคุณใช้ค่าที่เขียนตายตัว)
การดำเนินการตามเจตนาใหม่เพื่อนําเข้าทรัพยากร Dependency อย่างรวดเร็ว
หากคุณเริ่มใช้คลาส Jetpack และ Firebase บางคลาสในโค้ด การดําเนินการตามเจตนาใหม่จะแนะนําให้เพิ่มการพึ่งพาไลบรารี Gradle ที่จําเป็นลงในโปรเจ็กต์ หากคุณยังไม่ได้ดำเนินการดังกล่าว เช่น หากคุณอ้างอิงคลาส WorkManager
โดยไม่นําเข้าการพึ่งพา android.arch.work:work-runtime
ที่จําเป็นก่อน การดําเนินการตามเจตนาจะช่วยให้คุณทําได้อย่างง่ายดายในคลิกเดียว ดังที่แสดงด้านล่าง
โดยเฉพาะอย่างยิ่ง เนื่องจาก Jetpack ได้จัดแพ็กเกจไลบรารีสนับสนุนใหม่เป็นแพ็กเกจแยกต่างหากที่จัดการและอัปเดตได้ง่ายขึ้น การดำเนินการตามเจตนานี้จึงช่วยให้คุณเพิ่มเฉพาะไลบรารีที่ต้องใช้ในการคอมโพเนนต์ Jetpack ที่ต้องการใช้ได้อย่างรวดเร็ว