หลังจากเปิดใช้การเพิ่มประสิทธิภาพแอปแล้ว ให้ตรวจสอบว่าแอปทํางานตามที่ตั้งใจไว้และการกำหนดค่า R8 ทํางานตามที่คาดไว้ ขั้นตอนทั่วไปมีดังนี้
- ทดสอบเส้นทางของผู้ใช้ที่สำคัญ (CUJ) ของแอป: เช่น ตรวจสอบว่าผู้ใช้ลงชื่อเข้าใช้และทํางานอื่นๆ ที่สําคัญได้
- วัดประสิทธิภาพที่เพิ่มขึ้นโดยใช้การเปรียบเทียบ: เปรียบเทียบแอปของคุณ ก่อนและหลังเปิดใช้การเพิ่มประสิทธิภาพแอป
หากพบปัญหา 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 เกี่ยวกับวิธีถอดรหัสการติดตามกองซ้อนข้อขัดข้อง