เพิ่มประสิทธิภาพแพ็กเกจที่ระบุด้วย packageScope (ทดลอง)

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

พิจารณาว่าจะใช้ packageScope หรือไม่

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

แอปที่ยังไม่ได้ใช้ R8 แต่กำลังจะใช้ R8 สามารถใช้ packageScope เพื่อ จัดการการเปลี่ยนผ่านแบบค่อยเป็นค่อยไปได้ เนื่องจาก R8 ใช้การเพิ่มประสิทธิภาพที่มีประสิทธิภาพ ซึ่งอาจเปลี่ยนลักษณะการทำงานของแอป การกำหนดขอบเขตการเพิ่มประสิทธิภาพเหล่านี้ไปยังแพ็กเกจที่เฉพาะเจาะจง ซึ่งเพิ่มประสิทธิภาพได้อย่างปลอดภัย เช่น AndroidX และ Kotlin จะช่วยให้คุณได้รับ การเพิ่มประสิทธิภาพโดยมีความเสี่ยงน้อยที่สุด หลังจากแอปเสถียรแล้ว คุณสามารถค่อยๆ ขยายการเพิ่มประสิทธิภาพเหล่านี้ไปยังส่วนที่เหลือของฐานของโค้ดและทรัพยากร Dependency โดยทดสอบความเสถียรในแต่ละระดับ

สิ่งที่ต้องมีก่อน

การใช้ R8 กับ packageScope ต้องมีสิ่งต่อไปนี้

กำหนดค่าการเพิ่มประสิทธิภาพ

หากต้องการเปิดใช้การเพิ่มประสิทธิภาพด้วย packageScope ให้ทำตามขั้นตอนต่อไปนี้

เลือกคลังที่จะเพิ่มประสิทธิภาพ

ระบุไลบรารีที่จะเพิ่มประสิทธิภาพ เราขอแนะนำให้เริ่มต้นด้วยไลบรารี AndroidX และ Kotlin androidx.**, kotlin.** และ kotlinx.** เนื่องจากเป็นไลบรารีที่เสถียรซึ่งได้รับการกำหนดค่าให้เข้ากันได้กับ R8

เปิดใช้การรองรับการใช้ R8 กับ packageScope

เพิ่มโค้ดต่อไปนี้ลงในไฟล์ gradle.properties ของโปรเจ็กต์

android.r8.gradual.support=true

ตั้งค่าบล็อกการเพิ่มประสิทธิภาพ

ในไฟล์ build.gradle.kts (หรือ build.gradle) ระดับโมดูล ให้เพิ่มบล็อก optimization ลงในการกำหนดค่าบิลด์ที่เผยแพร่ ภายในบล็อกนี้ ให้ใช้ packageScope เพื่อแสดงรายการแพ็กเกจที่ต้องการเพิ่มประสิทธิภาพ ในไฟล์ build.gradle.kts ให้รวมรายการแพ็กเกจไว้ใน setOf()

Kotlin

android {
    buildTypes {
        release {
            optimization {
                enable = true
                packageScope = setOf("androidx.**","kotlin.**", "kotlinx.**")
            }
        }
    }
}

ดึงดูด

android {
    buildTypes {
        release {
            optimization {
                enable = true
                packageScope = ["androidx.**", "kotlin.**", "kotlinx.**"]
            }
        }
    }
}

ทดสอบการเพิ่มประสิทธิภาพ

หลังจากใช้หรืออัปเดตpackageScopeประกาศแล้ว ให้ทดสอบแอปอย่างละเอียดเพื่อยืนยันว่าไม่มีข้อขัดข้องหรือการเปลี่ยนแปลงลักษณะการทำงานที่ไม่คาดคิดเกิดขึ้น

เปลี่ยนจากการเพิ่มประสิทธิภาพแพ็กเกจที่ระบุเป็นการเพิ่มประสิทธิภาพทั้งแอป

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

  1. เริ่มต้นด้วยไลบรารีที่เสถียร เริ่มต้นด้วยการรวมเฉพาะไลบรารีที่ใช้กันอย่างแพร่หลายและมีเสถียรภาพ ซึ่งเข้ากันได้กับการเพิ่มประสิทธิภาพของ R8 ในpackageScope รายการ เริ่มต้นด้วยไลบรารี AndroidX และ Kotlin androidx.**, kotlin.** และ kotlinx.**
  2. เพิ่มแพ็กเกจทีละรายการ ค่อยๆ เพิ่มคำนำหน้าแพ็กเกจใหม่ลงใน packageScope:
    1. ประเมินการขึ้นต่อกัน ตรวจสอบไลบรารีของแอป ไลบรารีที่ควรเพิ่มลงในpackageScopeรายการ ได้แก่ ไลบรารีอย่างเป็นทางการของ Google (เช่น com.google.**) และไลบรารีอื่นๆ ที่มีประสิทธิภาพ เช่น OkHttp (เช่น okhttp3.** และ okio.**) ให้จัดลําดับความสําคัญของไลบรารีที่ไม่มีการใช้การสะท้อน การซีเรียลไลซ์ หรือการเรียกโค้ดเนทีฟ (JNI) มากนัก
    2. จัดลำดับความสำคัญตามขนาดแพ็กเกจ ใช้ APK Analyzer ของ Android Studio เพื่อระบุองค์ประกอบที่ทำให้แอปมีขนาดใหญ่ที่สุด
      1. สร้าง AAB หรือ APK สำหรับเผยแพร่โดยปิด R8
      2. เปิดในเครื่องมือวิเคราะห์และตรวจสอบdexไฟล์
      3. จัดเรียงแพ็กเกจตามขนาด แพ็กเกจที่ใหญ่ที่สุดจะให้ผลตอบแทนจากการลงทุน (ROI) สูงสุดสำหรับการเพิ่มประสิทธิภาพ การกำหนดเป้าหมายไลบรารีเหล่านี้ก่อนจะช่วยให้คุณลดขนาดได้มากที่สุดในช่วงต้นของกระบวนการ ตราบใดที่ไลบรารีเหล่านี้ไม่มีกฎการเก็บรักษาที่กว้างเกินไป ดูข้อมูลเพิ่มเติมได้ที่ เลือกไลบรารีอย่างชาญฉลาด
  3. ยืนยันการเปลี่ยนแปลงลักษณะการทำงาน หลังจากเพิ่มคำนำหน้าแพ็กเกจใหม่แต่ละรายการแล้ว ให้ทำการทดสอบอย่างละเอียดเพื่อตรวจหาและแก้ไขการถดถอยหรือลักษณะการทำงานที่ไม่คาดคิด
  4. เพิ่มแพ็กเกจแอปเป็นรายการสุดท้าย หากแพ็กเกจแอปไม่ได้ใช้การสะท้อนมากนัก ให้รวมแพ็กเกจแอปไว้ใน packageScope และเพิ่มกฎการเก็บรักษา ทีละรายการตามที่จำเป็น หากแพ็กเกจแอปใช้การสะท้อนจำนวนมาก ให้รวมแพ็กเกจไว้ใน packageScope และเพิ่มกฎการเก็บรักษาทั่วทั้งแพ็กเกจสำหรับ แพ็กเกจที่จำเป็น วนซ้ำกฎการเก็บรักษาเพื่อปรับแต่งกฎ
  5. เปลี่ยนไปใช้ R8 ในทั้งแอป หลังจากที่การอ้างอิงส่วนใหญ่ของแอป รวมอยู่ในการประกาศ packageScope และแอปของคุณ เสถียรแล้ว ให้นำ packageScope ออกเพื่อเพิ่มประสิทธิภาพทั้งแอปในโหมดเต็มรูปแบบ