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
Android Studio IDE หลักได้รับการอัปเดตให้มีการปรับปรุงจาก 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
หรือจัดการการกําหนดค่าการรับรองได้ที่นี่
ทรัพยากร Dependency
ตรวจสอบและแสดงภาพทรัพยากรแต่ละรายการในกราฟทรัพยากรของโปรเจ็กต์ตามที่ Gradle แก้ปัญหาระหว่างการซิงค์โปรเจ็กต์โดยทำตามขั้นตอนต่อไปนี้
- เลือกทรัพยากร Dependencies ในแผงด้านซ้ายของ PSD
- ในแผงโมดูล ให้เลือกโมดูลที่ต้องการตรวจสอบการพึ่งพาที่แก้ไขแล้ว
- ทางด้านขวาของ PSD ให้เปิดแผงทรัพยากรที่เกี่ยวข้องซึ่งแก้ไขแล้วที่แสดงอยู่ด้านล่าง
นอกจากนี้ คุณยังค้นหาและเพิ่มทรัพยากร Dependency ลงในโปรเจ็กต์ได้อย่างรวดเร็วโดยเลือกโมดูลจากส่วนการขึ้นต่อกันของ PSD ก่อน คลิกปุ่ม (+) ในส่วนทรัพยากร Dependency ที่ประกาศ แล้วเลือกประเภทของทรัพยากร Dependency ที่ต้องการเพิ่ม
คุณควรเห็นกล่องโต้ตอบคล้ายกับด้านล่าง ซึ่งจะช่วยให้คุณเพิ่มข้อกำหนดในโมดูลได้ ทั้งนี้ขึ้นอยู่กับประเภทของข้อกำหนดที่เลือก
สร้างตัวแปร
ในส่วนนี้ของ 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 จะทำการปรับขนาด การทำให้ซอร์สโค้ดอ่านไม่ออก การเพิ่มประสิทธิภาพ และการแปลงโค้ด Java เป็นรูปแบบ DEX (D8) ทั้งหมดให้เสร็จสมบูรณ์ในขั้นตอนเดียวดังที่แสดงด้านล่าง
โปรดทราบว่า R8 ออกแบบมาให้ทำงานร่วมกับกฎ ProGuard ที่มีอยู่ คุณจึงอาจไม่ต้องดำเนินการใดๆ เพื่อรับประโยชน์จาก R8 อย่างไรก็ตาม เนื่องจาก ProGuard เป็นเทคโนโลยีที่แตกต่างจาก 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 ที่ต้องการใช้ได้อย่างรวดเร็ว