ลดขนาด Instant App

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

เราทำการเปลี่ยนแปลงนี้ตามความคิดเห็นของนักพัฒนาแอปและการลงทุนอย่างต่อเนื่อง เพื่อปรับปรุงระบบนิเวศตั้งแต่เปิดตัว Google Play Instant

เราขอแนะนำให้นักพัฒนาแอปนำผู้ใช้ไปยัง แอปหรือเกมปกติของตนโดยใช้ Deep Link เพื่อเปลี่ยนเส้นทางผู้ใช้ไปยังเส้นทางหรือฟีเจอร์ที่เฉพาะเจาะจงเมื่อเกี่ยวข้อง เพื่อเพิ่มประสิทธิภาพในการเพิ่มผู้ใช้อย่างต่อเนื่อง

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

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

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

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

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

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

โปรดคำนึงถึงแนวทางปฏิบัติแนะนำต่อไปนี้เมื่อทำการรีแฟกเตอร์แอป

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

อัปเดตทรัพยากรของแอป

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

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

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

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

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

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

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

นำไฟล์ที่ไม่จำเป็นออก

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

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

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

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

เมื่อแอปมีขอบเขตกว้างขึ้น แอปอาจมีจำนวนการอ้างอิงที่น่าประหลาดใจ โดยเฉพาะการอ้างอิงประเภทใดประเภทหนึ่งต่อไปนี้

  • ไลบรารีแบบเนทีฟ: ไลบรารีที่มีโค้ดแบบเนทีฟที่ Instant App ไม่เคยเรียกใช้
  • การขึ้นต่อกันแบบทรานซิทีฟ: ไลบรารีที่ไลบรารีที่นำเข้าของแอปขึ้นต่อกัน

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

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

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

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

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

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

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

<feature_module>/build.gradle

Groovy

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")
    }
}

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

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

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