คำเตือน: 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 สำหรับสถานการณ์นี้โดยเฉพาะเพื่อช่วยนำทรัพยากรเหล่านี้ออก หากต้องการใช้เครื่องมือนี้ ให้ทำตามขั้นตอนต่อไปนี้
- กด Control+Alt+Shift+I (Command+Alt+Shift+I ใน Mac OS)
- ในกล่องโต้ตอบที่ปรากฏขึ้น ให้พิมพ์
"unused resources"
- เลือกตัวเลือกทรัพยากรที่ไม่ได้ใช้เพื่อเริ่มกระบวนการตรวจสอบการใช้ทรัพยากร
หากยังมีทรัพยากรขนาดใหญ่อยู่ในแอป ให้พิจารณาว่าสามารถ ยกเลิกการแพ็กเกจทรัพยากรเหล่านั้นออกจากแอปและดาวน์โหลดเป็นไฟล์แบบสแตนด์อโลนหลังจากที่ ผู้ใช้เริ่มโต้ตอบกับแอปได้หรือไม่ การเลื่อนการโหลดรูปภาพประเภทนี้ มักจะต้องมีการเปลี่ยนแปลงโค้ด แต่จะช่วยลดขนาดไฟล์ของ 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
ใช้การนำส่งเนื้อหาผ่านระบบคลาวด์
หากต้องการลดขนาดลงอีก คุณอาจต้องใช้การนำส่งชิ้นงานในระบบคลาวด์