ลดขนาด Instant App

Google Play Instant มอบประสบการณ์การใช้งานที่สมบูรณ์แบบเนทีฟด้วยการแตะเพียงครั้งเดียวบนเว็บ ลิงก์ ผู้ใช้ใช้งานแอปของคุณได้โดยไม่ต้องติดตั้งล่วงหน้า และคุณภาพของการมีส่วนร่วมที่สูงขึ้น เพื่อให้ Instant App โหลดได้อย่างรวดเร็ว เหมือนหน้าเว็บบนมือถือทั่วไป แต่คุณต้องสร้างโครงสร้างที่ดี Instant App ที่มีประสิทธิภาพ ยิ่งไบนารีของ Instant App มีขนาดเท่าใด ก็ยิ่งโหลดได้เร็วขึ้น และประสบการณ์ของผู้ใช้ ก็จะยิ่งราบรื่นขึ้นเท่านั้น

เอกสารนี้จะแสดงให้เห็นแนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการโครงสร้างแอปและ ขนาดไบนารีเพื่อให้ประสบการณ์การใช้งาน Instant App ราบรื่น คุณสามารถใช้ แนวทางปฏิบัติเพื่อประโยชน์ของแอปที่ติดตั้งได้ด้วยเช่นกัน

เปลี่ยนโครงสร้างภายในโค้ดเป็นโมดูลฟีเจอร์หลายรายการ

การปรับปรุงขนาดใหญ่ที่สุดสำหรับขนาดไบนารีของแอปจะเกิดขึ้นเมื่อคุณเปลี่ยนโครงสร้างภายในโค้ด ลงในโมดูลฟีเจอร์หลายรายการ เริ่มต้นด้วยฟีเจอร์พื้นฐาน โมดูล จากนั้นจึงแยกเวิร์กโฟลว์ที่เกี่ยวข้องกับเนื้อหาออกมาเป็นโมดูลฟีเจอร์ของตัวเอง กำหนดกิจกรรมเริ่มต้นและ URL ที่ไม่ซ้ำกันให้กับโมดูลฟีเจอร์แต่ละโมดูลเพื่อให้ผู้ใช้ สามารถดำเนินการตามขั้นตอนของโมดูลได้สำเร็จ

เมื่อคุณสร้างโมดูลฟีเจอร์ โปรดทำให้โมดูลฟีเจอร์พื้นฐานมีขนาดเล็กที่สุด เท่าที่จะเป็นไปได้ โดยเฉพาะอย่างยิ่ง โปรดให้ความสำคัญกับส่วนต่างๆ ของแอปที่ จำเป็นต้องเข้าถึงไลบรารีที่อ้างอิงของคุณ หากมีโมดูลฟีเจอร์เพียงโมดูลเดียวที่ใช้ ไลบรารีที่กำหนด ให้นำเข้าไลบรารีนั้นในตัวโมดูลฟีเจอร์ ไม่ใช่ฐาน โมดูลฟีเจอร์ โปรดทราบว่าหากต้องการเปิดตัว Instant App สำหรับ โมดูลฟีเจอร์หนึ่งๆ ขนาดทั้งหมดของจุดสนใจนั้น โมดูลและโมดูลฟีเจอร์ฐานต้องมีขนาดไม่เกิน 15 MB

แนวทางปฏิบัติแนะนำ

โปรดคำนึงถึงแนวทางปฏิบัติแนะนำต่อไปนี้เมื่อเปลี่ยนโครงสร้างภายในโค้ดของแอป

ใช้ฐานของโค้ดเดียวกันสำหรับแอปทั้ง 2 ประเภท
คุณสามารถลดความซับซ้อนของกระบวนการจัดการโครงการของแอปโดยใช้ ฐานของโค้ดแบบแยกส่วนเพื่อสร้างทั้งแอปที่ติดตั้งและ Instant App
ออกแบบสำหรับโมดูลฟีเจอร์หลายรายการ
แม้ว่าแอปของคุณจะมีเพียงเวิร์กโฟลว์เดียวและต้องการเพียงฟีเจอร์เดียว ในตอนนี้ การออกแบบโมดูลหลายโมดูลก็ยังคงเป็นความคิดที่ดี วิธีนี้ช่วยให้คุณเพิ่มโมดูลที่มีอยู่ลงในแอปได้โดยไม่ส่งผลกระทบต่อ ขนาดเดิมของโมดูลฟีเจอร์เดิม
อย่าให้ความสำคัญกับขีดจำกัดขนาดของโมดูลฟีเจอร์ในตอนต้น
ขีดจำกัดขนาดโมดูลฟีเจอร์จะไม่มีผลกับไบนารีที่สร้างขึ้นในเครื่อง คุณสามารถ ยังเผยแพร่ Instant App ผ่านแทร็กการทดสอบภายใน ซึ่งบังคับใช้ จำกัดขนาดโมดูลฟีเจอร์ไว้ที่ 15 MB เฉพาะอัลฟ่าและ แทร็กที่ใช้งานจริงบังคับใช้ขีดจำกัด 15 MB

อัปเดตแหล่งข้อมูลของแอป

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

ลดขนาดไฟล์ของรูปภาพ

คุณสามารถลดขนาดโดยรวมของรายการที่ถอนออกได้ของแอปอย่างมากโดยใช้ WebP ที่เป็นรูปแบบไฟล์แทน PNG Google Play Instant ให้การสนับสนุนที่สมบูรณ์ สำหรับ WebP ซึ่งรวมถึงความโปร่งใสและการบีบอัดแบบไม่สูญเสียรายละเอียด ดังนั้นคุณภาพของรูป ยังคงเหมือนเดิม

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

นำภาษาที่ไม่ได้ใช้ออก

ถ้าแอปของคุณรองรับหลายภาษา ให้ลดทรัพยากรที่แปลแล้วลงให้มากที่สุด คุณสามารถทำได้ ซึ่งจะเป็นประโยชน์อย่างยิ่งในการดำเนินการให้เสร็จสมบูรณ์หากคุณใช้ "แอป ที่เข้ากันได้" เช่น android.support.v7.appcompat ไลบรารีนี้มีข้อความในหลายภาษา ซึ่งบางภาษาอาจ ไม่รองรับ

หากต้องการเรียนรู้เพิ่มเติม โปรดดูวิธีนำทางเลือกอื่นที่ไม่ได้ใช้ออก ทรัพยากร โดยเฉพาะอย่างยิ่ง ภาษาที่ไม่ได้ใช้

นำไฟล์เพิ่มเติมออก

แอปของคุณอาจไม่ได้ใช้ทรัพยากรบางส่วนที่คุณนำเข้าไปอีกต่อไป โปรเจ็กต์ของคุณ Android Studio มีการตรวจสอบ Lint เพื่อช่วยคุณนำทรัพยากรเหล่านี้ออก สำหรับสถานการณ์เฉพาะนี้ ในการใช้เครื่องมือ ให้ทำตามขั้นตอนต่อไปนี้

  1. กด Control+Alt+Shift+I (Command+Alt+Shift+I ใน Mac OS)
  2. ในกล่องโต้ตอบที่ปรากฏขึ้น ให้พิมพ์ "unused resources"
  3. เลือกตัวเลือกทรัพยากรที่ไม่ได้ใช้เพื่อเริ่มการใช้ทรัพยากร ขั้นตอนการตรวจสอบ

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

นำไลบรารีที่ไม่ได้ใช้ออก

เมื่อแอปมีขอบเขตเพิ่มขึ้น ก็ต้องใช้ทรัพยากร Dependency มากมายจนคาดไม่ถึง โดยเฉพาะประเภทใดประเภทหนึ่งต่อไปนี้

  • ไลบรารีแบบเนทีฟ: ไลบรารีที่มีโค้ดแบบเนทีฟที่ Instant ของคุณ แอปไม่เคยทำงาน
  • ทรัพยากร Dependency แบบทรานซิทีฟ: ไลบรารีที่แอปนำเข้า ขึ้นกับไลบรารี

Android Studio มีเครื่องมือที่เป็นประโยชน์มากมายสำหรับการระบุส่วนที่ไม่เกี่ยวข้อง ทรัพยากร Dependency ในโปรเจ็กต์ของแอป

ไลบรารีภายนอก

มุมมองโปรเจ็กต์ของ Android Studio จะมีส่วนไลบรารีภายนอกด้วย

ส่วนนี้ประกอบด้วยไลบรารีทั้งหมดที่แอปของคุณใช้ รวมถึงเนทีฟ และทรัพยากร Dependency ทั้งหมด ในมุมมองนี้ ให้มองหาเอกสารที่ไม่ได้ใช้งานหรือซ้ำกัน ที่แอปของคุณไม่จำเป็นต้องใช้

ตัววิเคราะห์ APK

คุณสามารถใช้เครื่องมือเครื่องมือวิเคราะห์ APK เพื่อเปรียบเทียบ บิลด์ที่แตกต่างกัน รวมถึงบิลด์ของ Instant App

หลังจากที่คุณระบุไลบรารีที่แอปไม่จำเป็นต้องใช้แล้ว ให้ยกเว้นไลบรารีตาม การเพิ่มบรรทัดที่คล้ายกับบรรทัดต่อไปนี้ไปยังไฟล์บิลด์ Gradle

<feature_module>/build.gradle

ดึงดูด

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Kotlin

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการลดขนาดการนำเข้ารวมของแอป ทรัพยากร Dependency ดูคู่มือของ Gradle เรื่องการขึ้นต่อกัน การจัดการ

ใช้การนำส่งเนื้อหาในระบบคลาวด์

หากต้องการลดขนาดลงอีก คุณอาจต้องใช้การนำส่งเนื้อหาในระบบคลาวด์