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 แก้ปัญหาระหว่างการซิงค์โปรเจ็กต์โดยทำตามขั้นตอนต่อไปนี้

  1. เลือกทรัพยากร Dependencies ในแผงด้านซ้ายของ PSD
  2. ในแผงโมดูล ให้เลือกโมดูลที่ต้องการตรวจสอบการพึ่งพาที่แก้ไขแล้ว
  3. ทางด้านขวาของ 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 ProGuard เป็นขั้นตอนคอมไพล์ที่แตกต่างจากการแยกไฟล์ Dex และการแยก Sugar

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

การใช้ R8 ทำให้สามารถลดน้ำตาล ลดขนาด ปรับให้ยากต่อการอ่าน (Obfuscate) เพิ่มประสิทธิภาพ และลดความยุ่งยากในขั้นตอนคอมไพล์เพียงขั้นตอนเดียว

โปรดทราบว่า 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 ที่ต้องการใช้ได้อย่างรวดเร็ว