โมเดลการแสดงแอปของ Google Play ใช้ Android App Bundle เพื่อสร้างและแสดง APK ที่เพิ่มประสิทธิภาพสำหรับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละราย เพื่อให้ผู้ใช้ดาวน์โหลดเฉพาะโค้ดและทรัพยากรที่จำเป็นในการเรียกใช้แอปของคุณ
การนำส่งฟีเจอร์ Play ใช้ความสามารถขั้นสูงของ App Bundle ซึ่งช่วยให้ สามารถนำส่งฟีเจอร์บางอย่างของแอปแบบมีเงื่อนไขหรือดาวน์โหลดตามคำขอได้ โดยคุณต้องแยกฟีเจอร์เหล่านี้ออกจากแอปฐานเป็น โมดูลฟีเจอร์ก่อน
การกำหนดค่าบิลด์ของโมดูลฟีเจอร์
เมื่อสร้างโมดูลฟีเจอร์ใหม่โดยใช้ Android Studio ทาง IDE จะใช้ปลั๊กอิน Gradle ต่อไปนี้กับไฟล์ build.gradle
ของโมดูล
// The following applies the dynamic-feature plugin to your feature module.
// The plugin includes the Gradle tasks and properties required to configure and build
// an app bundle that includes your feature module.
plugins {
id 'com.android.dynamic-feature'
}
พร็อพเพอร์ตี้หลายรายการที่ใช้ได้กับ ปลั๊กอินแอปพลิเคชันมาตรฐาน จะใช้ได้กับโมดูลฟีเจอร์ด้วย ส่วนต่อไปนี้ จะอธิบายพร็อพเพอร์ตี้ที่คุณควรและไม่ควรรวมไว้ในการกำหนดค่าบิลด์ของ ฟีเจอร์โมดูล
สิ่งที่ไม่ควรระบุในการกำหนดค่าการสร้างโมดูลฟีเจอร์
เนื่องจากโมดูลฟีเจอร์แต่ละโมดูลขึ้นอยู่กับโมดูลฐาน โมดูลฟีเจอร์จึง
รับค่าการกำหนดค่าบางอย่างด้วย ดังนั้นคุณควรละเว้นรายการต่อไปนี้ในไฟล์ build.gradle
ของฟีเจอร์โมดูล
- การกำหนดค่าการลงนาม: ระบบจะลงนาม App Bundle โดยใช้การกำหนดค่าการลงนาม ที่คุณระบุในโมดูลฐาน
- พร็อพเพอร์ตี้
minifyEnabled
: คุณสามารถ เปิดใช้การลดขนาดโค้ด สำหรับทั้งโปรเจ็กต์แอปได้จากการกำหนดค่าบิลด์ของโมดูลฐานเท่านั้น ดังนั้น คุณจึงควรละเว้นพร็อพเพอร์ตี้นี้จาก ฟีเจอร์โมดูล อย่างไรก็ตาม คุณสามารถ ระบุกฎ ProGuard เพิ่มเติม สำหรับแต่ละโมดูลฟีเจอร์ได้ versionCode
และversionName
: เมื่อสร้าง App Bundle Gradle จะใช้ข้อมูลเวอร์ชันแอปที่โมดูลฐานระบุ คุณควรละเว้นพร็อพเพอร์ตี้เหล่านี้จากไฟล์build.gradle
ของโมดูลฟีเจอร์
สร้างความสัมพันธ์กับโมดูลฐาน
เมื่อ Android Studio สร้างโมดูลฟีเจอร์ ระบบจะทำให้โมดูลดังกล่าวมองเห็นได้
ในโมดูลฐานโดยการเพิ่มพร็อพเพอร์ตี้ android.dynamicFeatures
ลงในไฟล์ build.gradle
ของโมดูลฐาน ดังที่แสดงด้านล่าง
// In the base module’s build.gradle file.
android {
...
// Specifies feature modules that have a dependency on
// this base module.
dynamicFeatures = [":dynamic_feature", ":dynamic_feature2"]
}
นอกจากนี้ Android Studio ยังรวมโมดูลฐานเป็นทรัพยากร Dependency ของโมดูลฟีเจอร์ด้วย ดังที่แสดงด้านล่าง
// In the feature module’s build.gradle file:
...
dependencies {
...
// Declares a dependency on the base module, ':app'.
implementation project(':app')
}
ระบุกฎ ProGuard เพิ่มเติม
แม้ว่าการกำหนดค่าบิลด์ของโมดูลฐานเท่านั้นที่อาจเปิดใช้การลดขนาดโค้ด
สำหรับโปรเจ็กต์แอป แต่คุณก็สามารถระบุกฎ ProGuard ที่กำหนดเองกับโมดูลฟีเจอร์แต่ละโมดูลได้โดยใช้พร็อพเพอร์ตี้
proguardFiles
ดังที่แสดงด้านล่าง
android.buildTypes {
release {
// You must use the following property to specify additional ProGuard
// rules for feature modules.
proguardFiles 'proguard-rules-dynamic-features.pro'
}
}
โปรดทราบว่ากฎ ProGuard เหล่านี้จะผสานรวมกับกฎจากโมดูลอื่นๆ (รวมถึงโมดูลฐาน) ในเวลาที่สร้าง ดังนั้นแม้ว่าโมดูลฟีเจอร์แต่ละโมดูลจะระบุกฎชุดใหม่ แต่กฎเหล่านั้นจะมีผลกับโมดูลทั้งหมดในโปรเจ็กต์แอป
ทําให้แอปใช้งานได้
ขณะพัฒนาแอปที่รองรับโมดูลฟีเจอร์ คุณสามารถ
ติดตั้งใช้งานแอปกับอุปกรณ์ที่เชื่อมต่อได้ตามปกติโดยเลือก
เรียกใช้ > เรียกใช้จากแถบเมนู (หรือโดยคลิกเรียกใช้ ใน
แถบเครื่องมือ)
หากโปรเจ็กต์แอปมีโมดูลฟีเจอร์อย่างน้อย 1 โมดูล คุณจะเลือกฟีเจอร์ที่จะรวมเมื่อติดตั้งใช้งานแอปได้โดยการแก้ไขการกำหนดค่าการเรียกใช้/การแก้ไขข้อบกพร่องที่มีอยู่ดังนี้
- เลือกเรียกใช้ > แก้ไขการกำหนดค่าจากแถบเมนู
- จากแผงด้านซ้ายของกล่องโต้ตอบการกำหนดค่าการเรียกใช้/การแก้ไขข้อบกพร่อง ให้เลือกการกำหนดค่าแอป Android ที่ต้องการ
- ในส่วนฟีเจอร์แบบไดนามิกที่จะติดตั้งใช้งานในแท็บทั่วไป ให้เลือกช่องข้างโมดูลฟีเจอร์แต่ละรายการที่คุณต้องการรวมไว้เมื่อติดตั้งใช้งานแอป
- คลิกตกลง
โดยค่าเริ่มต้น Android Studio จะไม่ใช้ App Bundle ในการติดตั้งใช้งานแอป แต่ IDE จะสร้างและติดตั้ง APK ในอุปกรณ์ที่เพิ่มประสิทธิภาพเพื่อความเร็วในการติดตั้งใช้งานแทนที่จะเป็นขนาด APK หากต้องการกำหนดค่า Android Studio ให้สร้างและติดตั้งใช้งาน APK และประสบการณ์แบบใช้งานได้ทันทีจาก App Bundle แทน ให้แก้ไขการกำหนดค่าการเรียกใช้/การแก้ไขข้อบกพร่อง
ใช้โมดูลฟีเจอร์สำหรับการนำส่งแบบกำหนดเอง
ข้อดีเฉพาะของโมดูลฟีเจอร์คือความสามารถในการปรับแต่งวิธีและเวลา ในการดาวน์โหลดฟีเจอร์ต่างๆ ของแอปไปยังอุปกรณ์ที่ใช้ Android 5.0 (API ระดับ 21) ขึ้นไป ตัวอย่างเช่น หากต้องการลดขนาดการดาวน์โหลดเริ่มต้นของแอป คุณสามารถกำหนดค่าฟีเจอร์บางอย่างให้ดาวน์โหลดเมื่อจำเป็นตามคำขอ หรือตามอุปกรณ์ที่รองรับความสามารถบางอย่างเท่านั้นก็ได้ เช่น ความสามารถในการถ่ายภาพหรือรองรับฟีเจอร์ความจริงเสริม
แม้ว่าคุณจะได้รับการดาวน์โหลดที่มีการเพิ่มประสิทธิภาพสูงโดยค่าเริ่มต้นเมื่ออัปโหลดแอปเป็น App Bundle แต่ตัวเลือกการนำส่งฟีเจอร์ขั้นสูงและปรับแต่งได้มากขึ้น ต้องมีการกำหนดค่าเพิ่มเติมและการแยกฟีเจอร์ของแอปเป็นโมดูลโดยใช้โมดูลฟีเจอร์ กล่าวคือ โมดูลฟีเจอร์เป็นองค์ประกอบพื้นฐานสำหรับการสร้างฟีเจอร์แบบแยกส่วนที่คุณกำหนดค่าให้ดาวน์โหลดแต่ละฟีเจอร์ได้ตามต้องการ
ลองพิจารณาแอปที่อนุญาตให้ผู้ใช้ซื้อและขายสินค้าในมาร์เก็ตเพลสออนไลน์ คุณสามารถแยกฟังก์ชันการทำงานแต่ละอย่างต่อไปนี้ของแอปออกเป็นโมดูลฟีเจอร์แยกกันได้อย่างสมเหตุสมผล
- การเข้าสู่ระบบและการสร้างบัญชี
- การเรียกดู Marketplace
- การวางสินค้าเพื่อขาย
- การประมวลผลการชำระเงิน
ตารางด้านล่างอธิบายตัวเลือกการนำส่งต่างๆ ที่โมดูลฟีเจอร์รองรับ และวิธีใช้ตัวเลือกเหล่านั้นเพื่อเพิ่มประสิทธิภาพขนาดการดาวน์โหลดเริ่มต้นของแอปมาร์เก็ตเพลสตัวอย่าง
ตัวเลือกการนำส่ง | ลักษณะการทำงาน | ตัวอย่างกรณีการใช้งาน | เริ่มต้นใช้งาน |
---|---|---|---|
การนำส่งเมื่อติดตั้ง | ระบบจะดาวน์โหลดโมดูลฟีเจอร์ที่ไม่ได้กำหนดค่าตัวเลือกการนำส่งใดๆ
ตามที่อธิบายไว้ข้างต้นเมื่อติดตั้งแอปโดยค่าเริ่มต้น ซึ่งเป็นลักษณะการทำงานที่สำคัญเนื่องจากหมายความว่าคุณสามารถใช้ตัวเลือกการนำส่งขั้นสูงได้ทีละน้อย
เช่น คุณจะได้รับประโยชน์จากการแยกฟีเจอร์ของแอปเป็นโมดูล และเปิดใช้การนำส่งตามคำขอได้หลังจากที่ได้ติดตั้งใช้งานการดาวน์โหลดตามคำขออย่างเต็มรูปแบบโดยใช้ไลบรารีการนำส่งฟีเจอร์ Play แล้วเท่านั้น
นอกจากนี้ แอปของคุณยังขอถอนการติดตั้งฟีเจอร์ในภายหลังได้ด้วย ดังนั้น หากคุณต้องการฟีเจอร์บางอย่างเมื่อติดตั้งแอป แต่ไม่ต้องการหลังจากนั้น คุณสามารถลดขนาดการติดตั้งได้โดยขอให้นำฟีเจอร์ออกจากอุปกรณ์ |
หากแอปมีกิจกรรมการฝึกอบรมบางอย่าง เช่น คำแนะนำแบบอินเทอร์แอกทีฟ
เกี่ยวกับวิธีซื้อและขายสินค้าในมาร์เก็ตเพลส คุณสามารถรวมฟีเจอร์นั้น
ไว้ในการติดตั้งแอปได้โดยค่าเริ่มต้น
อย่างไรก็ตาม เพื่อลดขนาดการติดตั้งของแอป แอปสามารถขอ ลบฟีเจอร์หลังจากที่ผู้ใช้ฝึกอบรมเสร็จแล้วได้ |
แยกแอปเป็นโมดูลโดยใช้โมดูลฟีเจอร์
ที่ไม่ได้กำหนดค่าตัวเลือกการนำส่งขั้นสูง
หากต้องการดูวิธีลดขนาดการติดตั้งแอปโดยการนำโมดูลฟีเจอร์บางอย่างที่ผู้ใช้อาจไม่ต้องการใช้ออก โปรดอ่านจัดการ โมดูลที่ติดตั้ง |
การนำส่งแบบออนดีมานด์ | อนุญาตให้แอปขอและดาวน์โหลดโมดูลฟีเจอร์ได้ตามต้องการ | หากมีเพียง 20% ของผู้ที่ใช้แอปมาร์เก็ตเพลสที่โพสต์สินค้าเพื่อขาย กลยุทธ์ที่ดีในการลดขนาดการดาวน์โหลดเริ่มต้นสำหรับผู้ใช้ส่วนใหญ่คือการทำให้ฟังก์ชันการถ่ายภาพ ซึ่งรวมถึงคำอธิบายสินค้าและการวางสินค้าเพื่อขายพร้อมให้ดาวน์โหลดตามความต้องการ กล่าวคือ คุณสามารถกำหนดค่าโมดูลฟีเจอร์สำหรับ
ฟังก์ชันการขายของแอปให้ดาวน์โหลดได้ต่อเมื่อผู้ใช้แสดง
ความสนใจที่จะวางขายสินค้าในมาร์เก็ตเพลสเท่านั้น
นอกจากนี้ หากผู้ใช้ไม่ได้ขายสินค้าอีกต่อไปหลังจากระยะเวลาหนึ่ง แอปสามารถลดขนาดการติดตั้งได้โดยขอถอนการติดตั้งฟีเจอร์ |
สร้างโมดูลฟีเจอร์และ กำหนดค่าการแสดง ตามคำขอ จากนั้นแอปจะใช้ ไลบรารีการนำส่งฟีเจอร์ Play เพื่อขอ ดาวน์โหลดโมดูลตามต้องการได้ |
การแสดงโฆษณาตามเงื่อนไข | ช่วยให้คุณระบุข้อกำหนดบางอย่างของอุปกรณ์ผู้ใช้ได้ เช่น ฟีเจอร์ฮาร์ดแวร์ ภาษา และระดับ API ขั้นต่ำ เพื่อพิจารณาว่าจะดาวน์โหลดฟีเจอร์แบบแยกส่วน เมื่อติดตั้งแอปหรือไม่ | หากแอปมาร์เก็ตเพลสมีการเข้าถึงทั่วโลก คุณอาจต้องรองรับ วิธีการชำระเงินที่ได้รับความนิยมในบางภูมิภาคหรือในพื้นที่เท่านั้น หากต้องการลดขนาดการดาวน์โหลดแอปครั้งแรก คุณสามารถสร้าง โมดูลฟีเจอร์แยกต่างหากเพื่อประมวลผลวิธีการชำระเงินบางประเภท และติดตั้งโมดูลเหล่านั้นแบบมีเงื่อนไขในอุปกรณ์ของผู้ใช้ตาม ภาษาที่ลงทะเบียนไว้ | สร้างฟีเจอร์โมดูลและ กำหนดค่าการนำส่งตามเงื่อนไข |
การนำส่งทันที | Google Play Instant
ช่วยให้ผู้ใช้โต้ตอบกับแอปได้โดยไม่ต้องติดตั้งแอป
ในอุปกรณ์ แต่ผู้ใช้จะสามารถทดลองใช้แอปของคุณผ่านปุ่ม "ลองเลย" ใน Google Play Store หรือ URL ที่คุณสร้างขึ้น รูปแบบการนำส่งเนื้อหานี้ช่วยให้คุณเพิ่มการมีส่วนร่วมกับแอปได้ง่ายขึ้น
การนำส่งทันทีช่วยให้คุณใช้ Google Play Instant เพื่อให้ผู้ใช้ได้สัมผัสฟีเจอร์บางอย่างของแอปได้ทันทีโดยไม่ต้องติดตั้ง |
พิจารณาเกมที่มีเลเวลแรกๆ ของเกมใน ฟีเจอร์โมดูลแบบเบา คุณสามารถเปิดใช้ Instant สำหรับโมดูลนั้นเพื่อให้ผู้ใช้ได้สัมผัสประสบการณ์การเล่นเกมทันทีผ่านลิงก์ URL หรือปุ่ม "ลองเลย" โดยไม่ต้องติดตั้งแอป | สร้างโมดูลฟีเจอร์และ
กำหนดค่า
การนำส่งทันที จากนั้นแอปจะใช้
ไลบรารีการนำส่งฟีเจอร์ Play เพื่อขอ
ดาวน์โหลดโมดูลตามต้องการได้
โปรดทราบว่าการแยกฟีเจอร์ของแอปเป็นโมดูลโดยใช้โมดูลฟีเจอร์ เป็นเพียงขั้นตอนแรกเท่านั้น หากต้องการรองรับ Google Play Instant ขนาดดาวน์โหลดของโมดูลพื้นฐานของแอปและฟีเจอร์ที่เปิดใช้ Instant ที่ระบุต้องเป็นไปตามข้อจำกัดด้านขนาดที่เข้มงวด ดูข้อมูลเพิ่มเติมได้ที่ อ่านเปิดใช้ ประสบการณ์การใช้งานทันทีโดยลดขนาดแอปหรือเกม |
การสร้าง URI สำหรับทรัพยากร
หากต้องการเข้าถึงทรัพยากรที่จัดเก็บไว้ในฟีเจอร์โมดูลโดยใช้ URI ให้สร้าง URI ทรัพยากรของฟีเจอร์โมดูลโดยใช้ Uri.Builder()
ดังนี้
Kotlin
val uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build()
Java
String uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build().toString();
ระบบจะสร้างแต่ละส่วนของเส้นทางไปยังทรัพยากรในขณะรันไทม์ เพื่อให้มั่นใจว่าระบบจะสร้างเนมสเปซที่ถูกต้องหลังจากโหลด APK ที่แยกแล้ว
ตัวอย่างวิธีสร้าง URI สมมติว่าคุณมีแอปและ โมดูลฟีเจอร์ที่มีชื่อต่อไปนี้
- ชื่อแพ็กเกจแอป:
com.example.my_app_package
- ชื่อแพ็กเกจทรัพยากรของฟีเจอร์:
com.example.my_app_package.my_dynamic_feature
หาก resId
ในข้อมูลโค้ดด้านบนอ้างอิงถึงทรัพยากรไฟล์ดิบชื่อ "my_video" ในโมดูลฟีเจอร์ โค้ด Uri.Builder()
ด้านบนจะแสดงผลดังนี้
android.resource://com.example.my_app_package/raw/com.example.my_app_package.my_dynamic_feature:my_video
จากนั้นแอปจะใช้ URI นี้เพื่อเข้าถึงทรัพยากรของโมดูลฟีเจอร์ได้
หากต้องการตรวจสอบเส้นทางใน URI คุณสามารถใช้ APK Analyzer เพื่อตรวจสอบ APK ของโมดูลฟีเจอร์และระบุชื่อแพ็กเกจได้โดยทำดังนี้

ข้อควรพิจารณาสําหรับโมดูลฟีเจอร์
โมดูลฟีเจอร์ช่วยให้คุณปรับปรุงความเร็วในการสร้างและความเร็วในการทำงานของวิศวกร รวมถึงปรับแต่งการนำส่งฟีเจอร์ของแอปได้อย่างครอบคลุมเพื่อลดขนาดของแอป อย่างไรก็ตาม โปรดคำนึงถึงข้อจำกัดและกรณีที่พบได้ยากบางอย่างเมื่อใช้โมดูลฟีเจอร์
- การติดตั้งโมดูลฟีเจอร์ 50 รายการขึ้นไปในอุปกรณ์เครื่องเดียวผ่านการนำส่งแบบมีเงื่อนไขหรือแบบออนดีมานด์อาจทำให้เกิดปัญหาด้านประสิทธิภาพ โมดูลที่นำส่งเมื่อติดตั้งซึ่งไม่ได้กำหนดค่าเป็นโมดูลที่นำออกได้จะรวมอยู่ในโมดูลฐานโดยอัตโนมัติ และจะนับเป็นโมดูลฟีเจอร์เพียงโมดูลเดียวในแต่ละอุปกรณ์
- จำกัดจำนวนโมดูลที่คุณกำหนดค่าเป็นแบบถอดออกได้สำหรับการนำส่งในเวลาติดตั้งไม่เกิน 10 โมดูล ไม่เช่นนั้น เวลาในการดาวน์โหลดและติดตั้งแอปอาจเพิ่มขึ้น
- เฉพาะอุปกรณ์ที่ใช้ Android 5.0 (API ระดับ 21) ขึ้นไปเท่านั้นที่รองรับ ฟีเจอร์การดาวน์โหลดและติดตั้งตามต้องการ หากต้องการให้ฟีเจอร์พร้อมใช้งานใน Android เวอร์ชันก่อนหน้า ให้เปิดใช้การผสานเมื่อสร้างโมดูลฟีเจอร์
- เปิดใช้ SplitCompat เพื่อให้แอปมีสิทธิ์เข้าถึงฟีเจอร์โมดูลที่ดาวน์โหลดมาซึ่งนำส่งตาม ความต้องการ
- โมดูลฟีเจอร์ไม่ควรกำหนดกิจกรรมในไฟล์ Manifest โดยตั้งค่า
android:exported
เป็นtrue
เนื่องจากไม่มีการรับประกันว่าอุปกรณ์ ได้ดาวน์โหลดโมดูลฟีเจอร์แล้วเมื่อแอปอื่นพยายามเปิดใช้ กิจกรรม นอกจากนี้ แอปควรยืนยันว่าได้ดาวน์โหลดฟีเจอร์แล้วก่อนที่จะพยายามเข้าถึงโค้ดและทรัพยากรของฟีเจอร์ ดูข้อมูลเพิ่มเติมได้ที่จัดการโมดูลที่ติดตั้ง - เนื่องจากการนำส่งฟีเจอร์ Play กำหนดให้คุณต้องเผยแพร่แอปโดยใช้ App Bundle โปรดตรวจสอบว่าคุณทราบปัญหาที่ทราบเกี่ยวกับ App Bundle
ข้อมูลอ้างอิงของไฟล์ Manifest ของโมดูลฟีเจอร์
เมื่อสร้างโมดูลฟีเจอร์ใหม่โดยใช้ Android Studio ทาง IDE จะรวมแอตทริบิวต์ไฟล์ Manifest ส่วนใหญ่ที่โมดูลต้องใช้เพื่อให้ทำงาน เหมือนโมดูลฟีเจอร์ นอกจากนี้ ระบบบิลด์จะแทรกแอตทริบิวต์บางอย่างในเวลาคอมไพล์ คุณจึงไม่จำเป็นต้องระบุหรือแก้ไขด้วยตนเอง ตารางต่อไปนี้อธิบายแอตทริบิวต์ของไฟล์ Manifest ที่สำคัญต่อ โมดูลฟีเจอร์
แอตทริบิวต์ | คำอธิบาย |
---|---|
<manifest | นี่คือบล็อก
<manifest> ทั่วไป
|
xmlns:dist="http://schemas.android.com/apk/distribution" | ระบุdist: เนมสเปซ XML ใหม่ซึ่งมี
คำอธิบายเพิ่มเติมด้านล่าง |
split="split_name" |
เมื่อ Android Studio สร้าง App Bundle ของคุณ ระบบจะรวมแอตทริบิวต์นี้
ไว้ให้ ดังนั้นคุณไม่ควรระบุหรือแก้ไข
แอตทริบิวต์นี้ด้วยตนเอง
กำหนดชื่อของโมดูลที่แอปของคุณระบุ เมื่อขอโมดูลตามคำขอโดยใช้ไลบรารีการนำส่งฟีเจอร์ Play วิธีที่ Gradle กำหนดค่าสำหรับแอตทริบิวต์นี้ โดยค่าเริ่มต้น เมื่อสร้างโมดูลฟีเจอร์โดยใช้ Android Studio ทาง IDE จะใช้สิ่งที่คุณระบุเป็นชื่อโมดูลเพื่อระบุโมดูลเป็นโปรเจ็กต์ย่อยของ Gradle ใน ไฟล์การตั้งค่า Gradle
เมื่อสร้าง App Bundle, Gradle จะใช้องค์ประกอบสุดท้ายของ
เส้นทางโปรเจ็กต์ย่อยเพื่อแทรกแอตทริบิวต์ไฟล์ Manifest นี้ในไฟล์ Manifest ของโมดูล
ตัวอย่างเช่น หากคุณสร้างฟีเจอร์โมดูลใหม่ในไดเรกทอรี |
android:isFeatureSplit="true | false"> |
เมื่อ Android Studio สร้าง App Bundle ของคุณ ระบบจะรวม
แอตทริบิวต์นี้ไว้ให้ ดังนั้นคุณไม่ควรใส่
หรือแก้ไขแอตทริบิวต์นี้ด้วยตนเอง
ระบุว่าโมดูลนี้เป็นโมดูลฟีเจอร์
ไฟล์ Manifest ในโมดูลฐานและ APK การกำหนดค่าจะ
ละเว้นแอตทริบิวต์นี้หรือตั้งค่าเป็น |
<dist:module | กำหนดแอตทริบิวต์ที่กำหนดวิธีแพ็กเกจโมดูลและ กระจายเป็น APK |
dist:instant="true | false" |
ระบุว่าโมดูลควรพร้อมใช้งานผ่าน
Google Play Instant เป็น
ประสบการณ์การใช้งานแบบ Instant หรือไม่
หากแอปมีโมดูลฟีเจอร์ที่เปิดใช้ Instant App อย่างน้อย 1 โมดูล คุณต้องเปิดใช้ Instant App ในโมดูลฐานด้วย เมื่อใช้ Android Studio 3.5 ขึ้นไป IDE จะดำเนินการนี้ให้คุณเมื่อคุณ สร้างฟีเจอร์โมดูลที่เปิดใช้ แอปด่วน คุณตั้งค่าองค์ประกอบ XML นี้เป็น |
dist:title="@string/feature_name"> |
ระบุชื่อที่ผู้ใช้มองเห็นสำหรับโมดูล เช่น
อุปกรณ์อาจแสดงชื่อนี้เมื่อขอการยืนยันการดาวน์โหลด
คุณต้องรวมทรัพยากรสตริงสำหรับชื่อนี้
ในไฟล์ |
<dist:fusing dist:include="true | false" /> |
ระบุว่าจะรวมโมดูลไว้ใน APK หลายรายการที่กำหนดเป้าหมายเป็นอุปกรณ์ที่ใช้ Android 4.4 (API ระดับ 20) หรือต่ำกว่าหรือไม่
นอกจากนี้ เมื่อคุณ
ใช้ |
<dist:delivery> | ห่อหุ้มตัวเลือกที่ปรับแต่งการนำส่งโมดูล ดังที่แสดงด้านล่าง โปรดทราบว่าโมดูลฟีเจอร์แต่ละโมดูลต้องกำหนดค่าตัวเลือกการนำส่งที่กำหนดเองเหล่านี้เพียงประเภทเดียว |
<dist:install-time> |
ระบุว่าโมดูลควรพร้อมใช้งานเมื่อติดตั้ง ลักษณะการทำงานนี้เป็นลักษณะเริ่มต้นสำหรับโมดูลฟีเจอร์ที่ไม่ได้ระบุตัวเลือกการนำส่งที่กำหนดเองประเภทอื่น
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการดาวน์โหลดระหว่างการติดตั้ง โปรดอ่าน กำหนดค่าการนำส่งระหว่างการติดตั้ง โหนดนี้ยังระบุเงื่อนไขที่จำกัดโมดูลให้ใช้ได้กับ อุปกรณ์ที่ตรงตามข้อกำหนดบางอย่าง เช่น ฟีเจอร์ของอุปกรณ์ ประเทศของผู้ใช้ หรือระดับ API ขั้นต่ำ ดูข้อมูลเพิ่มเติมได้ที่ กำหนดค่าการนำส่งแบบมีเงื่อนไข |
<dist:removable dist:value="true | false" /> |
เมื่อไม่ได้ตั้งค่าหรือตั้งค่าเป็น เมื่อตั้งค่า ค่าเริ่มต้นคือ หมายเหตุ: ฟีเจอร์นี้จะใช้ได้เมื่อใช้ปลั๊กอิน Android Gradle เวอร์ชัน 4.2 หรือเมื่อใช้ bundletool v1.0 จากบรรทัดคำสั่งเท่านั้น |
</dist:install-time> | |
<dist:on-demand /> |
ระบุว่าโมดูลควรพร้อมให้ดาวน์โหลดแบบออนดีมานด์
กล่าวคือ โมดูลจะไม่พร้อมใช้งานในเวลาที่ติดตั้ง แต่แอปของคุณอาจขอให้ดาวน์โหลดในภายหลังได้
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการดาวน์โหลดตามต้องการ โปรดอ่าน กำหนดค่าการนำส่งตามต้องการ |
</dist:delivery> | |
</dist:module> | |
<application
android:hasCode="true | false"> ... </application> |
หากโมดูลฟีเจอร์ไม่ได้สร้างไฟล์ DEX (กล่าวคือ ไม่มีโค้ดที่คอมไพล์เป็นรูปแบบไฟล์ DEX ในภายหลัง) คุณต้องทำดังนี้ (มิฉะนั้น คุณอาจได้รับข้อผิดพลาดขณะรันไทม์)
|
... </manifest> |
แหล่งข้อมูลเพิ่มเติม
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้โมดูลฟีเจอร์ โปรดดูแหล่งข้อมูลต่อไปนี้
บล็อกโพสต์
- ฟีเจอร์ใหม่ที่จะช่วยคุณพัฒนา เผยแพร่ และทำให้ธุรกิจให้เติบโตใน Google Play
- การอัปเดต Android App Bundle ล่าสุด รวมถึง API ภาษาเพิ่มเติม
- Patchwork Plaid เรื่องราวของการแยกแอปออกเป็นโมดูลย่อยๆ
วิดีโอ
- การนำส่งที่ปรับแต่งได้ด้วย App Bundle และการแชร์บิลด์ทดสอบที่ง่ายดาย
- เครื่องมือใหม่ในการเพิ่มประสิทธิภาพขนาดแอปและเพิ่มจำนวนการติดตั้งใน Google Play
ข้อกำหนดในการให้บริการและความปลอดภัยของข้อมูล
การเข้าถึงหรือใช้ไลบรารีการนำเสนอฟีเจอร์ของ Play หมายความว่าคุณยอมรับ ข้อกำหนดในการให้บริการของชุดพัฒนาซอฟต์แวร์ Play Core โปรดอ่าน และทำความเข้าใจข้อกำหนดและนโยบายที่เกี่ยวข้องทั้งหมดก่อนเข้าถึงคลัง
ความปลอดภัยของข้อมูล
คลัง Play Core คืออินเทอร์เฟซรันไทม์ของแอปกับ Google Play Store ดังนั้น เมื่อคุณใช้ Play Core ในแอป Play Store จะเรียกใช้กระบวนการของตัวเอง ซึ่งรวมถึงการจัดการข้อมูลตามที่ระบุไว้ในข้อกำหนดในการให้บริการของ Google Play ข้อมูลด้านล่างอธิบายวิธีที่ไลบรารี Play Core จัดการข้อมูลเพื่อ ประมวลผลคำขอที่เฉพาะเจาะจงจากแอป
API ภาษาเพิ่มเติม
ข้อมูลที่รวบรวมเกี่ยวกับการใช้งาน | รายการภาษาที่ติดตั้ง |
วัตถุประสงค์ของการเก็บรวบรวมข้อมูล | ระบบจะใช้ข้อมูลที่รวบรวมเพื่อแสดงแอปในเวอร์ชันภาษาต่างๆ และเพื่อรักษาภาษาที่ติดตั้งไว้หลังจากการอัปเดตแอป |
การเข้ารหัสข้อมูล | ข้อมูลจะได้รับการเข้ารหัส |
การแชร์ข้อมูล | จะไม่มีการโอนข้อมูลไปยังบุคคลที่สาม |
การลบข้อมูล | ระบบจะลบข้อมูลหลังจากระยะเวลาการเก็บรักษาที่กำหนด |
การนำส่งฟีเจอร์ Play
ข้อมูลที่รวบรวมเกี่ยวกับการใช้งาน |
ข้อมูลเมตาของอุปกรณ์ เวอร์ชันแอปพลิเคชัน |
วัตถุประสงค์ของการเก็บรวบรวมข้อมูล | ระบบจะใช้ข้อมูลที่รวบรวมเพื่อแสดงโมดูลที่เหมาะสมในอุปกรณ์ และเพื่อรักษาโมดูลที่ติดตั้งไว้หลังจากการอัปเดต การสำรองข้อมูล และการกู้คืน |
การเข้ารหัสข้อมูล | ข้อมูลจะได้รับการเข้ารหัส |
การแชร์ข้อมูล | จะไม่มีการโอนข้อมูลไปยังบุคคลที่สาม |
การลบข้อมูล | ระบบจะลบข้อมูลหลังจากระยะเวลาการเก็บรักษาที่กำหนด |
แม้ว่าเราจะมุ่งมั่นที่จะสร้างความโปร่งใสมากที่สุดเท่าที่จะทำได้ แต่คุณมีหน้าที่รับผิดชอบแต่เพียงผู้เดียว ในการตัดสินใจว่าจะตอบกลับแบบฟอร์มส่วนความปลอดภัยของข้อมูลของ Google Play ที่เกี่ยวกับการเก็บรวบรวม การแชร์ และแนวทางปฏิบัติด้านการรักษาความปลอดภัยของข้อมูลผู้ใช้ในแอปอย่างไร