คุณเพิ่มประสิทธิภาพแพ็กเกจที่เฉพาะเจาะจงได้โดยใช้ R8 กับ packageScope ขั้นตอนนี้ออกแบบมาให้เป็นขั้นตอนแรกที่ไม่บังคับสำหรับแอปที่ยังไม่ได้ใช้ R8 และไม่แนะนำสำหรับแอปที่ใช้ R8 อยู่แล้ว
พิจารณาว่าจะใช้ packageScope หรือไม่
หากแอปใช้ R8 อยู่แล้ว โปรดอย่าใช้ packageScope เนื่องจากเป็นค่ากำหนดที่ไม่เหมาะสมในแง่ของประสิทธิภาพและขนาดแอป แต่ให้ปรับปรุงการกำหนดค่า R8 ของแอปด้วยกฎการเก็บที่ได้รับการปรับปรุง หรือหากใช้โหมดความเข้ากันได้ ให้ย้ายข้อมูลไปยังโหมดเต็มของ R8
สำหรับแอปที่ยังไม่ได้ใช้ R8 แต่กำลังจะใช้ ให้ใช้ packageScope เพื่อ
จัดการการเปลี่ยนผ่านแบบค่อยเป็นค่อยไป เนื่องจาก R8 ใช้การเพิ่มประสิทธิภาพที่มีประสิทธิภาพ
ซึ่งอาจเปลี่ยนลักษณะการทำงานของแอป การกำหนดขอบเขตการเพิ่มประสิทธิภาพเหล่านี้ไปยังแพ็กเกจที่เฉพาะเจาะจง
ซึ่งเพิ่มประสิทธิภาพได้อย่างปลอดภัย เช่น AndroidX และ Kotlin จะช่วยให้คุณได้รับ
การเพิ่มประสิทธิภาพโดยมีความเสี่ยงน้อยที่สุด หลังจากแอปเสถียรแล้ว คุณจะค่อยๆ
ขยายการเพิ่มประสิทธิภาพเหล่านี้ไปยังส่วนที่เหลือของโค้ดเบสและการอ้างอิง
โดยทดสอบความเสถียรในแต่ละขั้นตอน
สิ่งที่ต้องมีก่อน
การใช้ R8 กับ packageScope ต้องใช้ปลั๊กอิน Android Gradle เวอร์ชัน 9.0 ขึ้นไป
กำหนดค่าการเพิ่มประสิทธิภาพ
หากต้องการเปิดใช้การเพิ่มประสิทธิภาพด้วย 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 { proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro") optimization { enable = true packageScope = setOf("androidx.**","kotlin.**", "kotlinx.**") } } } }
Groovy
android { buildTypes { release { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 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 เพื่อระบุองค์ประกอบที่ทำให้แอปมีขนาดใหญ่ที่สุด
1. สร้าง AAB หรือ APK สำหรับเผยแพร่โดยปิด R8
1. เปิดในเครื่องมือวิเคราะห์และตรวจสอบไฟล์
dex1. จัดเรียงแพ็กเกจตามขนาด แพ็กเกจที่ใหญ่ที่สุดจะให้ผลตอบแทนจากการลงทุน (ROI) สูงสุด สำหรับการเพิ่มประสิทธิภาพ การกำหนดเป้าหมายไลบรารีเหล่านี้ ก่อนจะช่วยลดขนาดได้อย่างมากในช่วงต้นของกระบวนการ ตราบใดที่ไลบรารีเหล่านี้ไม่มีกฎการเก็บรักษาที่กว้างเกินไป ดูข้อมูลเพิ่มเติมได้ที่เลือกไลบรารีอย่างชาญฉลาด
- ประเมินการขึ้นต่อกัน ตรวจสอบไลบรารีของแอป ตัวเลือกที่ดีในการเพิ่มลงใน
- ยืนยันการเปลี่ยนแปลงลักษณะการทำงาน หลังจากเพิ่มคำนำหน้าแพ็กเกจใหม่แต่ละรายการแล้ว ให้ทำการทดสอบอย่างละเอียดเพื่อตรวจหาและแก้ไขการถดถอยหรือลักษณะการทำงานที่ไม่คาดคิด
- เพิ่มแพ็กเกจแอปเป็นรายการสุดท้าย หากแพ็กเกจแอปไม่ได้ใช้การสะท้อนมากนัก ให้รวมแพ็กเกจแอปไว้ใน
packageScopeและเพิ่มกฎการเก็บรักษา ทีละรายการตามที่จำเป็น หากแพ็กเกจแอปใช้การสะท้อนจำนวนมาก ให้รวมแพ็กเกจไว้ในpackageScopeและเพิ่มกฎการเก็บรักษาทั้งแพ็กเกจสำหรับ แพ็กเกจที่จำเป็น วนซ้ำกฎการเก็บรักษาเพื่อปรับแต่งกฎ - เปลี่ยนไปใช้ R8 ในทั้งแอป หลังจากที่การอ้างอิงส่วนใหญ่ของแอป
รวมอยู่ในการ
packageScopeประกาศและแอปของคุณ เสถียรแล้ว ให้นำpackageScopeออกเพื่อเพิ่มประสิทธิภาพทั้งแอปในโหมดเต็ม