ทดสอบและแก้ปัญหาการเพิ่มประสิทธิภาพ

หลังจากเปิดใช้การเพิ่มประสิทธิภาพแอปแล้ว ให้ตรวจสอบว่าแอปทํางานตามที่ตั้งใจไว้และการกำหนดค่า R8 ทํางานตามที่คาดไว้ ขั้นตอนทั่วไปมีดังนี้

  1. ทดสอบเส้นทางของผู้ใช้ที่สำคัญ (CUJ) ของแอป: เช่น ตรวจสอบว่าผู้ใช้ลงชื่อเข้าใช้และทํางานอื่นๆ ที่สําคัญได้
  2. วัดประสิทธิภาพที่เพิ่มขึ้นโดยใช้การเปรียบเทียบ: เปรียบเทียบแอปของคุณ ก่อนและหลังเปิดใช้การเพิ่มประสิทธิภาพแอป

หากพบปัญหา R8 มีเครื่องมือที่จะช่วยคุณแก้ปัญหา หากแก้ปัญหาเกี่ยวกับ R8 ไม่ได้ ให้รายงานข้อบกพร่อง

เคล็ดลับทั่วไป

ปัญหาเกี่ยวกับ R8 มักเป็นปัญหาเฉพาะของแอปคุณ แต่เคล็ดลับทั่วไปที่จะช่วยให้การแก้ไขข้อบกพร่องง่ายขึ้นมีดังนี้

  • ปิดการปรับให้ยากต่อการอ่านชั่วคราว: R8 จะปรับให้ยากต่อการอ่านโค้ดเป็นส่วนหนึ่งของกระบวนการเพิ่มประสิทธิภาพ โดยทั่วไปแล้ว การสร้างความสับสนไม่ใช่สาเหตุของข้อผิดพลาด แต่ทําให้แก้ไขข้อผิดพลาดได้ยากขึ้น เพิ่ม Flag ‑dontobfuscate และ ‑dontoptimize ลงในไฟล์กฎการเก็บรักษาเพื่อช่วยระบุโค้ดที่เป็นปัญหา
  • ตรวจสอบการสะท้อน: หากคุณพบข้อยกเว้นไม่มีองค์ประกอบดังกล่าว เช่น

    Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace 

    โดยปกติแล้ว ข้อยกเว้นหมายความว่ามีการใช้ฟิลด์ที่เป็นปัญหาผ่านการสะท้อน และคุณต้องเพิ่มกฎการเก็บ

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

ตรวจสอบว่ามีการใช้กฎใดบ้าง

หากต้องการแสดงผลรายงานฉบับเต็มของกฎทั้งหมดที่ R8 ใช้เมื่อสร้างโปรเจ็กต์ ให้ใส่ข้อมูลต่อไปนี้ในไฟล์proguard‑rules.proโมดูลของแอป

-printconfiguration <output-dir>/<report-name>.txt

คุณจะระบุเส้นทางและชื่อไฟล์ใดก็ได้ หากคุณไม่ระบุเส้นทางหรือชื่อไฟล์ R8 จะแสดงรายงานกฎที่ <module-name>/build/outputs/mapping/<build-type>/configuration.txt

ทําความเข้าใจสาเหตุที่เก็บโค้ดไว้

หากเห็นโค้ดที่เก็บไว้ซึ่งคุณคาดว่าจะถูกนําออก ให้ใช้ตัวเลือกการกําหนดค่า ‑whyareyoukeeping เพื่อช่วยทําความเข้าใจสาเหตุที่ระบบเก็บโค้ดไว้ R8 จะแสดงผลเส้นทางจากโค้ดที่เก็บไว้ไปยังจุดเข้าชมของแอป ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ ‑whyareyoukeeping ในคู่มือ Proguard

กู้คืนสแต็กเทรซเดิม

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

หากต้องการใช้ ReTrace ให้ระบุไฟล์การแมปและไฟล์สแต็กเทรซ ระบบจะรวมไฟล์การแมปชื่อ mapping.txt ไว้ใน Android App Bundle (AAB) โดยอัตโนมัติ ดูรายละเอียดเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับการติดตามซ้ำและบทความในศูนย์ช่วยเหลือของ Play Console เกี่ยวกับวิธีถอดรหัสการติดตามกองซ้อนข้อขัดข้อง