การเพิ่มประสิทธิภาพและปกปิดโค้ดโดยใช้ R8 หรือเครื่องมือทางเลือก (เช่น เครื่องมือเพิ่มประสิทธิภาพที่เข้ากันได้กับ ProGuard หรือโปรแกรมประมวลผลภายหลัง DEX รอง) จะช่วยลดขนาด DEX ของแอป ปรับปรุงประสิทธิภาพรันไทม์ และลดร่องรอยการใช้หน่วยความจำ
ไฟล์ DEX หรือ Dalvik Executable มีโค้ดที่คอมไพล์แล้วซึ่งใช้
ในการเรียกใช้แอป โดยทั่วไปจะรวมโค้ด Java และ Kotlin ซึ่งแตกต่างจาก
โค้ด C++ ที่คอมไพล์แล้วหรือไฟล์ .so
วัดการเพิ่มประสิทธิภาพโค้ด R8 ในเครื่อง
หากต้องการวัดขนาด DEX ที่ไม่ได้บีบอัดของ App Bundle ในเครื่องโดยใช้บรรทัดคำสั่ง ให้เรียกใช้คำสั่งต่อไปนี้
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
หากแอปเพิ่มประสิทธิภาพด้วย R8 คุณจะวัดการเพิ่มประสิทธิภาพ การปกปิดโค้ด และการลดขนาด App Bundle ได้โดยใช้เครื่องมือวิเคราะห์การกำหนดค่า R8 ดูคําจํากัดความโดยละเอียดของการลดขนาด การเพิ่มประสิทธิภาพ และการปรับให้ยากต่อการอ่านได้ที่ใช้เครื่องมือวิเคราะห์การกำหนดค่า R8 รายงานเครื่องมือวิเคราะห์การกำหนดค่า R8 ยังรวมอยู่ในทักษะเครื่องมือวิเคราะห์ R8 ด้วย
หากต้องการตรวจสอบข้อมูลเมตาหลังการเพิ่มประสิทธิภาพที่ฝังอยู่ใน App Bundle (สำหรับ AGP
เวอร์ชัน 8.10 ขึ้นไป) ให้แตกไฟล์ r8.json ดังนี้
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
แก้ไขปัญหา
หากต้องการแก้ไขคะแนนการเพิ่มประสิทธิภาพโค้ด DEX ที่ต่ำ ให้ตรวจสอบคำแนะนำตาม ระบบบิลด์และเครื่องมือเพิ่มประสิทธิภาพ
ปลั๊กอิน Android Gradle และ R8
หากต้องการปรับปรุงคะแนนการเพิ่มประสิทธิภาพโค้ด DEX ของ R8 โปรดดูคำแนะนำที่ ปรับปรุงการเพิ่มประสิทธิภาพ R8 นอกจากนี้ คุณยังใช้ทักษะเครื่องมือวิเคราะห์ R8 เพื่อรับ คำแนะนำเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพกฎการเก็บรักษาของแอปได้ด้วย
ระบบบิลด์ที่ไม่ใช่ R8 และโปรแกรมประมวลผล DEX ภายหลัง
หากไปป์ไลน์บิลด์ใช้เครื่องมือบิลด์ที่กำหนดเองหรือโปรแกรมประมวลผลภายหลัง DEX รอง ให้ทำตามขั้นตอนต่อไปนี้เพื่อปรับปรุงการเพิ่มประสิทธิภาพแอป
- เปิด App Bundle ใน Android Studio แล้วดูใน ตัววิเคราะห์ APK
- เลือกไฟล์
.dexทั้งหมด - โปรดใส่ใจกับไฟล์ที่มีขนาดใหญ่ที่สุดขณะสลับปุ่ม "เลิกปิดบังชื่อ" (หมายเหตุ: คุณต้องอัปโหลดไฟล์
mapping.txt) หากพบว่าไฟล์บางไฟล์ยังคงมีขนาดใหญ่แม้ว่าจะมีการปกปิดแล้ว แสดงว่าไฟล์เหล่านั้นอาจได้รับผลกระทบจากกฎการเก็บรักษาทั่วทั้งแพ็กเกจ - ดูในไฟล์
proguard-rules.pro,configuration.txtหรือ ไฟล์ที่เทียบเท่าสำหรับเครื่องมือเพิ่มประสิทธิภาพหากคุณไม่ได้ใช้ R8 แล้วค้นหากฎ keep ที่ตรงกับแพ็กเกจที่ไม่ได้เข้ารหัส เช่น หากcom.foo.เป็นแพ็กเกจขนาดใหญ่ใน dex ให้มองหากฎการเก็บรักษาในรูปแบบ-keep com.foo.**หรือ-keep com.foo.bar.** - โปรดทราบว่ากฎการเก็บรักษาของผู้ใช้ไลบรารีอาจระบุได้ไม่ชัดเจนนัก หากสงสัยว่ากฎผู้ใช้ไลบรารีส่งผลต่อการเพิ่มประสิทธิภาพ คุณสามารถตรวจสอบได้ในเครื่องโดยเพิ่มกฎดังกล่าวลงในแอปตัวอย่างแบบสแตนด์อโลนโดยใช้ AGP เวอร์ชันล่าสุด และตรวจสอบด้วยเครื่องมือวิเคราะห์การกำหนดค่า R8