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

คุณเพิ่มประสิทธิภาพแพ็กเกจที่เฉพาะเจาะจงได้โดยใช้ 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 ในทั้งแอป กระบวนการนี้เกี่ยวข้องกับ การขยายความครอบคลุมของการเพิ่มประสิทธิภาพทีละน้อย ดังนี้

  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 1. เปิดในเครื่องมือวิเคราะห์และตรวจสอบไฟล์ dex 1. จัดเรียงแพ็กเกจตามขนาด แพ็กเกจที่ใหญ่ที่สุดจะให้ผลตอบแทนจากการลงทุน (ROI) สูงสุด สำหรับการเพิ่มประสิทธิภาพ การกำหนดเป้าหมายไลบรารีเหล่านี้ ก่อนจะช่วยลดขนาดได้อย่างมากในช่วงต้นของกระบวนการ ตราบใดที่ไลบรารีเหล่านี้ไม่มีกฎการเก็บรักษาที่กว้างเกินไป ดูข้อมูลเพิ่มเติมได้ที่เลือกไลบรารีอย่างชาญฉลาด
  3. ยืนยันการเปลี่ยนแปลงลักษณะการทำงาน หลังจากเพิ่มคำนำหน้าแพ็กเกจใหม่แต่ละรายการแล้ว ให้ทำการทดสอบอย่างละเอียดเพื่อตรวจหาและแก้ไขการถดถอยหรือลักษณะการทำงานที่ไม่คาดคิด
  4. เพิ่มแพ็กเกจแอปเป็นรายการสุดท้าย หากแพ็กเกจแอปไม่ได้ใช้การสะท้อนมากนัก ให้รวมแพ็กเกจแอปไว้ใน packageScope และเพิ่มกฎการเก็บรักษา ทีละรายการตามที่จำเป็น หากแพ็กเกจแอปใช้การสะท้อนจำนวนมาก ให้รวมแพ็กเกจไว้ใน packageScope และเพิ่มกฎการเก็บรักษาทั้งแพ็กเกจสำหรับ แพ็กเกจที่จำเป็น วนซ้ำกฎการเก็บรักษาเพื่อปรับแต่งกฎ
  5. เปลี่ยนไปใช้ R8 ในทั้งแอป หลังจากที่การอ้างอิงส่วนใหญ่ของแอป รวมอยู่ในการpackageScopeประกาศและแอปของคุณ เสถียรแล้ว ให้นำ packageScope ออกเพื่อเพิ่มประสิทธิภาพทั้งแอปในโหมดเต็ม