โมดูลฟีเจอร์ช่วยให้คุณแยกฟีเจอร์และทรัพยากรบางอย่างออกจากโมดูลพื้นฐานของแอปและรวมไว้ใน App Bundle ได้ จากนั้นคุณสามารถปรับแต่งตัวเลือกการนำส่งเพื่อควบคุมเวลาและวิธีที่อุปกรณ์ที่ใช้ Android 5.0 (ระดับ API 21) ขึ้นไปจะดาวน์โหลดฟีเจอร์ของแอป
โปรดทราบว่าการแยกโมดูลประเภทนี้ต้องใช้ความพยายามมากขึ้นและอาจต้องเปลี่ยนโครงสร้างภายในโค้ดที่มีอยู่ของแอป ดังนั้นให้พิจารณาอย่างรอบคอบว่าฟีเจอร์ใดของแอปจะได้รับประโยชน์สูงสุดจากการพร้อมใช้งานตามต้องการของผู้ใช้
หากต้องการแยกฟีเจอร์ของแอปเป็นโมดูลอย่างค่อยเป็นค่อยไปโดยไม่เปลี่ยนลักษณะการทำงานของแอปหรือปรับแต่งตัวเลือกการนำส่งขั้นสูง คุณสามารถทำได้โดยสร้างโมดูลฟีเจอร์ที่กำหนดค่าไว้สำหรับการนำส่งขณะติดตั้ง กล่าวคือ คุณสามารถแยกฟีเจอร์เป็นโมดูลฟีเจอร์ได้ แต่ไม่ต้องเปิดใช้ตัวเลือกขั้นสูงเพื่อให้ฟีเจอร์พร้อมใช้งานเมื่อผู้ใช้ติดตั้งแอป
นอกจากนี้ โมดูลฟีเจอร์ที่กำหนดค่าไว้สำหรับการนำส่งขณะติดตั้งจะมีตัวเลือกให้ถอนการติดตั้งในภายหลังหากไม่จำเป็นต้องใช้แล้ว ซึ่งจะต้องตั้งค่าเป็นแบบถอดออกได้
ส่วนนี้จะอธิบายวิธีสร้างโมดูลฟีเจอร์สำหรับการนำส่งขณะติดตั้ง ก่อนเริ่มต้น โปรดตรวจสอบว่าคุณใช้ Android Studio 3.5 ขึ้นไปและปลั๊กอิน Android Gradle 3.5.0 ขึ้นไป
กำหนดค่าโมดูลใหม่สำหรับการนำส่งขณะติดตั้ง
วิธีที่ง่ายที่สุดในการสร้างโมดูลฟีเจอร์ใหม่คือการใช้ Android Studio 3.5 ขึ้นไป เนื่องจากโมดูลฟีเจอร์มีการขึ้นต่อกันโดยธรรมชาติกับโมดูลแอปพื้นฐาน คุณจึงเพิ่มโมดูลฟีเจอร์ได้เฉพาะในโปรเจ็กต์แอปที่มีอยู่เท่านั้น
หากต้องการเพิ่มโมดูลฟีเจอร์ลงในโปรเจ็กต์แอปโดยใช้ Android Studio ให้ทำดังนี้
- เปิดโปรเจ็กต์แอปใน IDE หากยังไม่ได้ดำเนินการ
- เลือกไฟล์ > ใหม่ > โมดูลใหม่จากแถบเมนู
- ในกล่องโต้ตอบสร้างโมดูลใหม่ ให้เลือกโมดูลฟีเจอร์แบบไดนามิก แล้วคลิกถัดไป
- ในส่วนกำหนดค่าโมดูลใหม่ ให้ทำตามขั้นตอนต่อไปนี้
- เลือกโมดูลแอปพลิเคชันพื้นฐานสำหรับโปรเจ็กต์แอปจากเมนูแบบเลื่อนลง
- ระบุชื่อโมดูล IDE จะใช้ชื่อนี้เพื่อระบุโมดูลเป็นโปรเจ็กต์ย่อยของ Gradle ในไฟล์การตั้งค่า Gradle เมื่อคุณสร้าง App Bundle แล้ว Gradle จะใช้องค์ประกอบสุดท้ายของชื่อโปรเจ็กต์ย่อยเพื่อแทรกแอตทริบิวต์
<manifest split>ในไฟล์ Manifest ของโมดูลฟีเจอร์ - ระบุชื่อแพ็กเกจของโมดูล โดยค่าเริ่มต้น Android Studio จะแนะนำชื่อแพ็กเกจที่รวมชื่อแพ็กเกจรูทของโมดูลพื้นฐานและชื่อโมดูลที่คุณระบุไว้ในขั้นตอนก่อนหน้า
- เลือกระดับ API ขั้นต่ำที่ต้องการให้โมดูลรองรับ ค่านี้ควรตรงกับค่าของโมดูลพื้นฐาน
- คลิกถัดไป
ในส่วนตัวเลือกการดาวน์โหลดโมดูล ให้ทำดังนี้
ระบุชื่อโมดูลโดยใช้อักขระไม่เกิน 50 ตัว โมดูลพื้นฐานของแอปต้องมีชื่อโมดูลเป็นทรัพยากรสตริง ซึ่งคุณแปลได้ เมื่อสร้างโมดูลโดยใช้ Android Studio แล้ว IDE จะเพิ่มทรัพยากรสตริงลงในโมดูลพื้นฐานให้คุณ และแทรกรายการต่อไปนี้ในไฟล์ Manifest ของโมดูลฟีเจอร์
<dist:module ... dist:title="@string/feature_title"> </dist:module>หมายเหตุ: หากคุณเปิดใช้การลดขนาดทรัพยากร เช่น สำหรับบิลด์ที่เผยแพร่ เครื่องมือลดขนาดอาจนำทรัพยากรสตริงชื่อโมดูลออกหากโค้ดในโมดูลฐานไม่ได้อ้างอิงถึงทรัพยากรดังกล่าว หากต้องการตรวจสอบว่าทรัพยากรสตริงยังคงอยู่ในเอาต์พุตของบิลด์ ให้รวมทรัพยากรไว้ในไฟล์เก็บทรัพยากรที่กำหนดเอง
ในเมนูแบบเลื่อนลงในส่วนการรวมเวลาติดตั้ง ให้เลือกรวมโมดูลในเวลาติดตั้ง Android Studio จะแทรกข้อมูลต่อไปนี้ในไฟล์ Manifest ของโมดูลเพื่อแสดงตัวเลือกของคุณ
<dist:module ... > <dist:delivery> <dist:install-time /> </dist:delivery> </dist:module>หากต้องการดูวิธีสร้างโมดูลฟีเจอร์ที่ดาวน์โหลดได้หลังจากติดตั้งแอป โปรดอ่านกำหนดค่าการนำส่งแบบออนดีมานด์
เลือกช่องข้างการรวมหากต้องการให้โมดูลนี้พร้อมใช้งานในอุปกรณ์ที่ใช้ Android 4.4 (ระดับ API 20) และต่ำกว่า และรวมอยู่ใน Multi-APK ซึ่งหมายความว่าคุณสามารถละเว้น APK แยกจากอุปกรณ์ที่ไม่รองรับการดาวน์โหลดและติดตั้ง APK แยกได้ Android Studio จะแทรกข้อมูลต่อไปนี้ในไฟล์ Manifest ของโมดูลเพื่อแสดงตัวเลือกของคุณ
<dist:module ...> <dist:fusing dist:include="true | false" /> </dist:module>
คลิกเสร็จสิ้น
หลังจาก Android Studio สร้างโมดูลเสร็จแล้ว ให้ตรวจสอบเนื้อหาด้วยตนเองจากแผงโปรเจ็กต์ (เลือกมุมมอง > หน้าต่างเครื่องมือ > โปรเจ็กต์จากแถบเมนู) โค้ด ทรัพยากร และองค์กรเริ่มต้นควรคล้ายกับของโมดูลแอปมาตรฐาน
ทำให้โมดูลเวลาติดตั้งนำออกได้
การสร้างโมดูลฟีเจอร์สำหรับการนำส่งขณะติดตั้งซึ่งมีตัวเลือกให้ถอนการติดตั้งในภายหลังหากไม่จำเป็นต้องใช้อีกต่อไปอาจเป็นประโยชน์ เช่น หากต้องการลดขนาดแอปที่ติดตั้ง คุณสามารถแยกเนื้อหาที่จำเป็นสำหรับการฝึกอบรมหรือการเตรียมความพร้อมผู้ใช้งานใหม่ออกเป็นโมดูล แล้วถอนการติดตั้งโมดูลฟีเจอร์โดยใช้ Play Core API หลังจากที่ผู้ใช้ตั้งค่าให้ใช้แอปของคุณแล้ว
โดยค่าเริ่มต้น โมดูลเวลาติดตั้งจะนำออกไม่ได้ หากต้องการทำเครื่องหมายโมดูลว่านำออกได้และอนุญาตให้ถอนการติดตั้ง ให้เพิ่มแท็ก removable และตั้งค่าเป็น true ดังนี้
<dist:module ... >
<dist:delivery>
<dist:install-time>
<dist:removable dist:value="true"/>
</dist:install-time>
</dist:delivery>
</dist:module>