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