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 ช่วยให้คุณสร้างและจัดการตัวแปรบิลด์ ได้ เช่น ตัวแปรที่ใช้เพื่อรักษารุ่นของทรัพยากร Dependency ให้สอดคล้องกัน ในโปรเจ็กต์
- ดูและแก้ไขตัวแปรบิลด์ที่มีอยู่ในสคริปต์บิลด์ Gradle ของโปรเจ็กต์อย่างรวดเร็ว
- เพิ่มตัวแปรบิลด์ใหม่ที่ระดับโปรเจ็กต์หรือโมดูลโดยตรงจาก PSD
หมายเหตุ: หากไฟล์การกำหนดค่าบิลด์ที่มีอยู่กำหนดค่า ผ่านสคริปต์ Groovy ที่ซับซ้อน คุณอาจแก้ไขค่าเหล่านั้น ผ่าน PSD ไม่ได้ นอกจากนี้ คุณยังแก้ไขไฟล์บิลด์ที่เขียนด้วย Kotlin โดยใช้ PSD ไม่ได้
โมดูล
กำหนดค่าพร็อพเพอร์ตี้ที่จะใช้กับตัวแปรบิลด์ทั้งหมดในโมดูลที่มีอยู่
หรือเพิ่มโมดูลใหม่ลงในโปรเจ็กต์จากส่วนโมดูล ตัวอย่างเช่น คุณสามารถกําหนดค่าพร็อพเพอร์ตี้ defaultConfig
หรือจัดการการกําหนดค่าการลงนามได้ที่นี่
การขึ้นต่อกัน
ตรวจสอบและแสดงภาพการขึ้นต่อกันแต่ละรายการในกราฟการขึ้นต่อกันของโปรเจ็กต์ตามที่ Gradle แก้ไขระหว่างการซิงค์โปรเจ็กต์โดยทำตามขั้นตอนต่อไปนี้
- เลือกการขึ้นต่อกันในแผงด้านซ้ายของ PSD
- ในบานหน้าต่างโมดูล ให้เลือกโมดูลที่ต้องการตรวจสอบ การอ้างอิงที่แก้ไขแล้ว
- ทางด้านขวาของ PSD ให้เปิดแผงการอ้างอิงที่แก้ไขแล้ว ซึ่ง แสดงอยู่ด้านล่าง
นอกจากนี้ คุณยังค้นหาและเพิ่มการอ้างอิงลงในโปรเจ็กต์ได้อย่างรวดเร็วโดยเริ่มจาก การเลือกโมดูลจากส่วนการอ้างอิงของ PSD คลิกปุ่ม (+) ในส่วนการอ้างอิงที่ประกาศ แล้วเลือกประเภท ของการอ้างอิงที่ต้องการเพิ่ม
คุณควรเห็นกล่องโต้ตอบที่คล้ายกับกล่องโต้ตอบด้านล่าง ซึ่งจะช่วยให้คุณเพิ่มการอ้างอิงลงในโมดูลได้ ทั้งนี้ขึ้นอยู่กับประเภทของการอ้างอิงที่คุณเลือก
ตัวแปรบิลด์
ในส่วนนี้ของ PSD ให้สร้างและกำหนดค่าตัวแปรบิลด์และรสชาติผลิตภัณฑ์ สำหรับแต่ละโมดูลในโปรเจ็กต์ คุณสามารถเพิ่มตัวยึดตำแหน่งของไฟล์ Manifest, เพิ่มไฟล์ ProGuard และกำหนดคีย์การลงนาม และอื่นๆ
คำแนะนำ
ดูการอัปเดตที่แนะนำสำหรับทรัพยากร Dependency ของโปรเจ็กต์และตัวแปรบิลด์ในส่วนคำแนะนำตามที่แสดงด้านล่าง
Resource Manager ใหม่
Resource Manager เป็นหน้าต่างเครื่องมือใหม่สำหรับการนำเข้า สร้าง จัดการ และ ใช้ทรัพยากรในแอป คุณสามารถเปิดหน้าต่างเครื่องมือได้โดยเลือกดู > หน้าต่างเครื่องมือ > Resource Manager จากแถบเมนู Resource Manager ช่วยให้คุณทำสิ่งต่อไปนี้ได้
- แสดงภาพทรัพยากร: คุณสามารถดูตัวอย่าง Drawable, สี และเลย์เอาต์เพื่อ ค้นหาทรัพยากรที่ต้องการได้อย่างรวดเร็ว
- การนำเข้าหลายรายการพร้อมกัน: คุณสามารถนำเข้าชิ้นงาน Drawable หลายรายการพร้อมกันได้โดย ลากและวางลงในหน้าต่างเครื่องมือตัวจัดการทรัพยากร หรือ ใช้ตัวช่วยสร้างนำเข้า Drawable หากต้องการเข้าถึงวิซาร์ด ให้เลือกปุ่ม (+) ที่มุมซ้ายบนของหน้าต่างเครื่องมือ แล้วเลือกนำเข้า Drawable จากเมนูแบบเลื่อนลง
-
แปลง SVG เป็นออบเจ็กต์
VectorDrawable
: คุณสามารถใช้ตัวช่วยสร้าง นำเข้า Drawable เพื่อแปลงรูปภาพ SVG เป็นออบเจ็กต์VectorDrawable
ได้ - ลากและวางชิ้นงาน: จากหน้าต่างเครื่องมือเครื่องมือจัดการทรัพยากร คุณสามารถ ลากและวาง Drawable ลงในทั้งมุมมองการออกแบบและมุมมอง XML ของเครื่องมือแก้ไขเลย์เอาต์
- ดูเวอร์ชันอื่น: ตอนนี้คุณสามารถดูเวอร์ชันอื่นของ ทรัพยากรได้โดยดับเบิลคลิกทรัพยากรภายในหน้าต่างเครื่องมือ มุมมองนี้ แสดงเวอร์ชันต่างๆ ที่คุณสร้างขึ้นและตัวระบุที่รวมอยู่
- มุมมองแบบไทล์และแบบรายการ: คุณเปลี่ยนมุมมองภายในหน้าต่างเครื่องมือเพื่อ แสดงภาพทรัพยากรในรูปแบบต่างๆ ได้
ดูข้อมูลเพิ่มเติมได้ในคำแนะนำเกี่ยวกับวิธี จัดการทรัพยากรของแอป
ตรวจสอบรหัสบิลด์เมื่อทำโปรไฟล์และแก้ไขข้อบกพร่องของ 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, Shrinking, Obfuscating, การเพิ่มประสิทธิภาพ และ Dexing (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 ที่ต้องการ ใช้ได้อย่างรวดเร็ว