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