แก้ปัญหาประสิทธิภาพการสร้างด้วยตัววิเคราะห์บิลด์

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

ดูกลยุทธ์เพิ่มเติมในการปรับปรุงประสิทธิภาพการสร้างได้ที่เพิ่มประสิทธิภาพความเร็วในการสร้าง

เริ่มต้นใช้งาน

ทุกครั้งที่คุณสร้างแอป เครื่องมือวิเคราะห์การสร้างจะสร้างรายงานและแสดง ข้อมูลจากรายงานล่าสุดในหน้าต่างสร้าง

หากต้องการเริ่มต้นใช้งาน ให้ทำดังนี้

  1. หากยังไม่ได้สร้างแอป ให้สร้างแอปด้วยวิธีใดวิธีหนึ่งต่อไปนี้
    • คลิกสร้าง > สร้างโปรเจ็กต์จากแถบเมนู
    • หากต้องการสร้าง Android App Bundle หรือ APK ให้คลิกสร้าง > สร้าง Bundle / APK > สร้าง Bundle หรือสร้าง > สร้าง Bundle / APK > สร้าง APK จากแถบเมนู
  2. หากต้องการเปิดหน้าต่างสร้าง ให้เลือกดู > หน้าต่างเครื่องมือ > สร้างจากแถบเมนู
  3. หากต้องการดูรายงานการสร้างในเครื่องมือวิเคราะห์การสร้าง ให้คลิกแท็บเครื่องมือวิเคราะห์การสร้างในหน้าต่างสร้าง

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

ดูปลั๊กอินที่มีงานที่กำหนดระยะเวลาการสร้าง

เมื่อเปิดเครื่องมือวิเคราะห์บิลด์เป็นครั้งแรกหลังจากบิลด์เสร็จสมบูรณ์ หน้าต่าง จะแสดงภาพรวมของการวิเคราะห์บิลด์ ดังที่แสดงในรูปที่ 1

รูปที่ 1 หน้าภาพรวมของเครื่องมือวิเคราะห์การสร้าง จะแสดงข้อมูลสรุปของผลการวิเคราะห์

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

รูปที่ 2 เครื่องมือวิเคราะห์การสร้างจะแสดงรายละเอียดของปลั๊กอินที่มีผลต่อระยะเวลาการสร้าง

ดูงานที่กำหนดระยะเวลาการสร้าง

หากต้องการดูรายละเอียดของงานที่ส่งผลต่อระยะเวลาการสร้าง ให้คลิกงานที่ส่งผลต่อระยะเวลาการสร้างในหน้าภาพรวม หรือเลือกงานจากเมนูแบบเลื่อนลง หากโปรเจ็กต์ใช้ AGP 8.0 ขึ้นไป ระบบจะจัดกลุ่มงานตาม หมวดหมู่โดยค่าเริ่มต้น เพื่อให้ระบุส่วนที่ส่งผลต่อระยะเวลา การบิลด์ได้ง่ายขึ้น คลิกงานย่อยแต่ละรายการเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการดำเนินการ

รูปที่ 3 ตัววิเคราะห์บิลด์จะแสดงรายละเอียดของงานที่มีผลต่อระยะเวลาของบิลด์มากที่สุด

ตรวจสอบคำเตือน

หากตัววิเคราะห์บิลด์ตรวจพบว่าสามารถกำหนดค่าบางงานให้ทำงานได้อย่างมีประสิทธิภาพมากขึ้น ก็จะแสดงคำเตือน หากต้องการดูคำเตือนทั้งหมดที่เครื่องมือวิเคราะห์บิลด์ ระบุสำหรับการบิลด์ ให้คลิกคำเตือนทั้งหมดในหน้าภาพรวม หรือ เลือกคำเตือนจากเมนูแบบเลื่อนลง

คำเตือนบางรายการมีลิงก์สร้างรายงาน ดังที่แสดงในรูปที่ 4 เมื่อคลิกลิงก์สร้างรายงาน กล่องโต้ตอบจะปรากฏขึ้นพร้อมข้อมูลเพิ่มเติม ที่อาจช่วยให้นักพัฒนาปลั๊กอินแก้ไขปัญหาในปลั๊กอินเวอร์ชันใหม่ได้ คลิกคัดลอกเพื่อบันทึกข้อความลงในคลิปบอร์ดเพื่อให้วางข้อมูลลงในรายงานข้อบกพร่องไปยังนักพัฒนาปลั๊กอินได้ง่ายขึ้น

รูปที่ 4 ข้อมูลโดยละเอียดเกี่ยวกับคำเตือนของ Build Analyzer

ประเภทคำเตือน

เครื่องมือวิเคราะห์บิลด์จะรายงานคำเตือนประเภทต่อไปนี้

  • เรียกใช้งานเสมอ: งานที่เรียกใช้เสมอจะทำให้งานอื่นๆ ทำงานในทุกบิลด์ ซึ่งไม่จำเป็น สาเหตุหลัก 2 ประการที่คุณอาจเห็นคำเตือนนี้มีดังนี้

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

    • (พบได้น้อย) งานมีค่า upToDateWhen เป็น false ซึ่งควรหลีกเลี่ยง อาจเป็นเพราะมีตรรกะบางอย่างที่ประเมินค่าเป็นเท็จ หรือupToDateWhenมีการฮาร์ดโค้ดให้เป็นเท็จ หากมีตรรกะที่ประเมินเป็นเท็จ ผลลัพธ์นี้อาจเป็นไปตามที่ตั้งใจไว้ และคุณอาจเลือกที่จะเพิกเฉยต่อคำเตือนได้ หากมีการฮาร์ดโค้ด upToDateWhen เป็นเท็จ คุณควรนำฮาร์ดโค้ดออกจากโค้ด

  • ปัญหาการตั้งค่างาน: คำเตือนนี้จะสร้างขึ้นสำหรับงานที่ประกาศไดเรกทอรีเดียวกันเป็นเอาต์พุต ซึ่งหมายความว่าเอาต์พุตของงานเหล่านั้นมักจะ ไม่ได้รับการเก็บรักษาไว้ระหว่างบิลด์ และงานเหล่านั้นจะทำงานเสมอแม้ว่าจะ ไม่มีการเปลี่ยนแปลงก็ตาม หากต้องการแก้ไขคำเตือนนี้ คุณควรประกาศไดเรกทอรีเอาต์พุตที่แตกต่างกันสำหรับงาน ซึ่งหมายถึงการประกาศไดเรกทอรีเอาต์พุตที่แตกต่างกันด้วยตนเองในที่ที่คุณทำได้ หรือ การเปลี่ยนเวอร์ชันปลั๊กอินหากงานที่ทริกเกอร์คำเตือนมาจาก ปลั๊กอินของบุคคลที่สาม

  • ตัวประมวลผลคำอธิบายประกอบแบบไม่เพิ่มขึ้น: คำเตือนนี้จะสร้างขึ้นใน สถานการณ์ที่ตัวประมวลผลคำอธิบายประกอบเป็นแบบไม่เพิ่มขึ้นและทำให้ งาน JavaCompile ทำงานแบบไม่เพิ่มขึ้นเสมอ หากต้องการแก้ไขคำเตือนนี้ ให้เปลี่ยนไปใช้ตัวประมวลผล คำอธิบายประกอบแบบเพิ่มทีละรายการ

  • แคชการกำหนดค่า: คำเตือนนี้จะแสดงขึ้นหากไม่ได้เปิดใช้การแคชการกำหนดค่า สำหรับโปรเจ็กต์ Build Analyzer จะแสดงลำดับการบิลด์เพื่อตรวจสอบว่าโปรเจ็กต์ของคุณเข้ากันได้กับการแคชการกำหนดค่าหรือไม่ หากการตรวจสอบความเข้ากันได้สำเร็จ คุณจะเปิดการแคชการกำหนดค่า ได้จากเครื่องมือวิเคราะห์บิลด์

  • ตรวจสอบ Jetifier: คำเตือนนี้จะแสดงขึ้นหากมีenableJetifier แฟล็ก และเปิดใช้ในโปรเจ็กต์ของคุณ นั่นคือหากคุณมี android.enableJetifier=true ในไฟล์ gradle.properties Build Analyzer สามารถตรวจสอบได้ว่า ควรถอดค่าสถานะออกอย่างปลอดภัยหรือไม่ เพื่อให้โปรเจ็กต์มี ประสิทธิภาพการสร้างที่ดีขึ้น และย้ายข้อมูลออกจากไลบรารี Android Support ที่ไม่มีการบำรุงรักษา

ตรวจสอบผลกระทบจากการดาวน์โหลด

Build Analyzer จะแสดงข้อมูลสรุปเกี่ยวกับเวลาที่ใช้ในการดาวน์โหลดทรัพยากร Dependency และมุมมองแบบละเอียดของการดาวน์โหลดต่อที่เก็บ หากต้องการตรวจสอบผลกระทบของการดาวน์โหลด ให้เลือกการดาวน์โหลดจากเมนูแบบเลื่อนลง ข้อมูลนี้ยังแสดงในหน้าต่าง ซิงค์ด้วย

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

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

รูปที่ 5 เครื่องมือวิเคราะห์บิลด์จะแสดงผลกระทบของการดาวน์โหลดต่อระยะเวลาของบิลด์

[Windows เท่านั้น] ตรวจสอบผลกระทบของซอฟต์แวร์ป้องกันไวรัส

Build Analyzer จะแจ้งให้คุณทราบหากซอฟต์แวร์ป้องกันไวรัสอาจส่งผลต่อประสิทธิภาพการบิลด์ ปัญหานี้อาจเกิดขึ้นหากซอฟต์แวร์ป้องกันไวรัส เช่น Windows Defender กำลังสแกนแบบเรียลไทม์ในไดเรกทอรีที่ Gradle ใช้ Build Analyzer แนะนํารายการไดเรกทอรีที่จะยกเว้นจากการสแกนที่ใช้งานอยู่ และหากเป็นไปได้ จะมีลิงก์ให้เพิ่มไดเรกทอรีเหล่านั้นลงในรายการยกเว้นโฟลเดอร์ของ Windows Defender