โมเดลการแสดงแอปของ 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 ยังรวมโมดูลพื้นฐานไว้เป็น dependencies ของโมดูลฟีเจอร์ด้วย ดังที่แสดงด้านล่าง
// 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 แต่จะสร้างและติดตั้ง APK ลงในอุปกรณ์ที่เพิ่มประสิทธิภาพเพื่อความเร็วในการทําให้ใช้งานได้แทน โดยไม่คำนึงถึงขนาด APK หากต้องการกำหนดค่า Android Studio ให้สร้างและนำส่ง APK และประสบการณ์การใช้งาน Instant จาก App Bundle แทน ให้แก้ไขการกำหนดค่าการเรียกใช้/แก้ไขข้อบกพร่อง
ใช้โมดูลฟีเจอร์สำหรับการนำส่งแบบกำหนดเอง
ประโยชน์ที่ไม่เหมือนใครของโมดูลฟีเจอร์คือความสามารถในการปรับแต่งวิธีและเวลาดาวน์โหลดฟีเจอร์ต่างๆ ของแอปลงในอุปกรณ์ที่ใช้ Android 5.0 (API ระดับ 21) ขึ้นไป ตัวอย่างเช่น หากต้องการลดขนาดการดาวน์โหลดเริ่มต้นของแอป ก็สามารถกำหนดค่าฟีเจอร์บางอย่างให้ดาวน์โหลดเมื่อจำเป็นตามคำขอได้ หรือตามอุปกรณ์ที่รองรับความสามารถบางอย่างเท่านั้นก็ได้ เช่น ความสามารถในการถ่ายภาพหรือรองรับฟีเจอร์ความจริงเสริม
แม้ว่าคุณจะได้รับการดาวน์โหลดที่เพิ่มประสิทธิภาพสูงโดยค่าเริ่มต้นเมื่ออัปโหลดแอปเป็น App Bundle แต่ตัวเลือกการนำส่งฟีเจอร์ขั้นสูงและปรับแต่งได้มากขึ้นจะกำหนดให้ต้องมีการกำหนดค่าเพิ่มเติมและแยกฟีเจอร์ของแอปออกเป็นโมดูลโดยใช้โมดูลฟีเจอร์ กล่าวคือ โมดูลฟีเจอร์เป็นองค์ประกอบพื้นฐานในการสร้างฟีเจอร์แบบแยกส่วนที่คุณสามารถกําหนดค่าให้ดาวน์โหลดแต่ละรายการได้ตามต้องการ
ลองสร้างแอปที่อนุญาตให้ผู้ใช้ซื้อและขายสินค้าในมาร์เก็ตเพลสออนไลน์ คุณสามารถแยกฟังก์ชันการทํางานต่อไปนี้ของแอปออกเป็นโมดูลฟีเจอร์แยกกันได้
- การลงชื่อเข้าใช้และการสร้างบัญชี
- การเรียกดู Marketplace
- การวางสินค้าเพื่อขาย
- กำลังประมวลผลการชำระเงิน
ตารางด้านล่างอธิบายตัวเลือกการนำส่งต่างๆ ที่โมดูลฟีเจอร์รองรับ และวิธีใช้ตัวเลือกดังกล่าวเพื่อเพิ่มประสิทธิภาพขนาดการดาวน์โหลดครั้งแรกของแอปตัวอย่างใน Marketplace
ตัวเลือกการนำส่ง | ลักษณะการทำงาน | ตัวอย่าง Use Case | เริ่มต้นใช้งาน |
---|---|---|---|
การนำส่งเมื่อติดตั้ง | ระบบจะดาวน์โหลดข้อบังคับของฟีเจอร์ที่ไม่ได้กําหนดค่าตัวเลือกการแสดงโฆษณาที่อธิบายไว้ข้างต้นเมื่อติดตั้งแอปโดยค่าเริ่มต้น ลักษณะการทํางานนี้มีความสําคัญเนื่องจากหมายความว่าคุณสามารถนําตัวเลือกการนำส่งขั้นสูงมาใช้ทีละน้อยได้ ตัวอย่างเช่น คุณจะได้รับประโยชน์จากการแยกฟีเจอร์ของแอปเป็นโมดูลและเปิดใช้การนำส่งแบบออนดีมานด์ก็ต่อเมื่อคุณติดตั้งใช้งานการดาวน์โหลดแบบออนดีมานด์โดยใช้ไลบรารีการนำส่งฟีเจอร์ Play อย่างเต็มรูปแบบแล้วเท่านั้น
นอกจากนี้ แอปของคุณยังขอถอนการติดตั้งฟีเจอร์ในภายหลังได้ด้วย ดังนั้นหากต้องการใช้ฟีเจอร์บางอย่างเมื่อติดตั้งแอป แต่ไม่ต้องการใช้หลังจากนั้น คุณสามารถลดขนาดการติดตั้งได้โดยขอให้นำฟีเจอร์ออกจากอุปกรณ์ |
หากแอปมีกิจกรรมการฝึกอบรมบางอย่าง เช่น คำแนะนำแบบอินเทอร์แอกทีฟเกี่ยวกับวิธีซื้อและขายสินค้าในตลาด คุณรวมฟีเจอร์ดังกล่าวไว้ในการติดตั้งแอปได้โดยค่าเริ่มต้น
อย่างไรก็ตาม แอปสามารถขอลบฟีเจอร์ออกได้หลังจากผู้ใช้ฝึกอบรมเสร็จแล้วเพื่อลดขนาดของแอปที่ติดตั้ง |
แยกแอปเป็นโมดูลโดยใช้โมดูลฟีเจอร์ที่ไม่ได้กำหนดค่าตัวเลือกการแสดงโฆษณาขั้นสูง
หากต้องการดูวิธีลดขนาดที่ติดตั้งของแอปด้วยการนำโมดูลฟีเจอร์บางอย่างที่ผู้ใช้อาจไม่ต้องการแล้วออก โปรดอ่านจัดการโมดูลที่ติดตั้งไว้ |
การนำส่งแบบออนดีมานด์ | อนุญาตให้แอปขอและดาวน์โหลดโมดูลฟีเจอร์ตามต้องการ | หากมีเพียง 20% ของผู้ที่ใช้แอปตลาดที่โพสต์สินค้าเพื่อขาย กลยุทธ์ที่ดีในการลดขนาดการดาวน์โหลดเริ่มต้นสำหรับผู้ใช้ส่วนใหญ่คือทำให้ฟังก์ชันการถ่ายภาพ รวมถึงคำอธิบายสินค้าและการวางขายสินค้าพร้อมให้ดาวน์โหลดแบบออนดีมานด์ กล่าวคือ คุณสามารถกำหนดค่าโมดูลฟีเจอร์สำหรับฟังก์ชันการขายของแอปให้ดาวน์โหลดได้ก็ต่อเมื่อผู้ใช้แสดงความสนใจที่จะวางขายสินค้าใน Marketplace เท่านั้น
นอกจากนี้ หากผู้ใช้ไม่ได้ขายสินค้าอีกต่อไปหลังจากผ่านไประยะเวลาหนึ่ง แอปจะลดขนาดที่ติดตั้งได้โดยขอให้ถอนการติดตั้งฟีเจอร์ |
สร้างโมดูลฟีเจอร์และกำหนดค่าการแสดงตามคำขอ จากนั้นแอปจะใช้ไลบรารีการนำส่งฟีเจอร์ Play เพื่อขอดาวน์โหลดโมดูลตามต้องการได้ |
การแสดงโฆษณาแบบมีเงื่อนไข | ให้คุณระบุข้อกำหนดบางอย่างของอุปกรณ์ของผู้ใช้ เช่น ฟีเจอร์ของฮาร์ดแวร์ ภาษา และระดับ API ขั้นต่ำเพื่อกำหนดว่าจะดาวน์โหลดฟีเจอร์แบบโมดูลเมื่อติดตั้งแอปหรือไม่ | หากแอปมาร์เก็ตเพลซเข้าถึงได้ทั่วโลก คุณอาจต้องรองรับวิธีการชำระเงินที่ได้รับความนิยมในบางภูมิภาคหรือบางพื้นที่เท่านั้น หากต้องการลดขนาดการดาวน์โหลดเริ่มต้นของแอป คุณสามารถสร้างโมดูลฟีเจอร์แยกต่างหากสำหรับการประมวลผลวิธีการชําระเงินบางประเภท และติดตั้งโมดูลเหล่านั้นในอุปกรณ์ของผู้ใช้แบบมีเงื่อนไขตามภาษาที่ลงทะเบียนไว้ | สร้างโมดูลฟีเจอร์และกําหนดค่าการแสดงโฆษณาแบบมีเงื่อนไข |
การนำส่งทันที | Google Play Instant ช่วยให้คุณโต้ตอบกับแอปได้โดยไม่ต้องติดตั้งแอปในอุปกรณ์ แต่ผู้ใช้จะทดลองใช้แอปของคุณผ่านปุ่ม "ลองเลย" ใน Google Play Store หรือ URL ที่คุณสร้างได้ รูปแบบการแสดงเนื้อหานี้จะช่วยให้คุณเพิ่มการมีส่วนร่วมกับแอปได้ง่ายขึ้น
การนำส่งทันทีช่วยให้คุณใช้ Google Play Instant เพื่ออนุญาตให้ผู้ใช้ได้สัมผัสประสบการณ์การใช้งานฟีเจอร์บางอย่างของแอปได้ทันทีโดยไม่ต้องติดตั้ง |
ลองนึกถึงเกมที่มี 2-3 ด่านแรกในข้อบังคับของฟีเจอร์ที่มีน้ำหนักเบา คุณสามารถเปิดใช้โมดูลนั้นในทันทีเพื่อให้ผู้ใช้ได้สัมผัสประสบการณ์การเล่นเกมผ่านลิงก์ 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 เพื่อตรวจสอบ APK ของโมดูลฟีเจอร์และระบุชื่อแพ็กเกจ
ข้อควรพิจารณาสำหรับโมดูลฟีเจอร์
โมดูลฟีเจอร์จะช่วยปรับปรุงความเร็วในการสร้างและความเร็วในการพัฒนาซอฟต์แวร์ รวมถึงปรับแต่งการนำส่งฟีเจอร์ของแอปอย่างละเอียดเพื่อลดขนาดของแอป อย่างไรก็ตาม โปรดคำนึงถึงข้อจำกัดและกรณีขอบเขตต่อไปนี้เมื่อใช้ข้อบังคับของฟีเจอร์
- การติดตั้งโมดูลฟีเจอร์ 50 รายการขึ้นไปในอุปกรณ์เครื่องเดียวผ่านการนําส่งแบบมีเงื่อนไขหรือแบบออนดีมานด์อาจทําให้เกิดปัญหาด้านประสิทธิภาพ โมดูลที่นำส่งเมื่อติดตั้งซึ่งไม่ได้กําหนดค่าให้นําออกได้จะรวมอยู่ในโมดูลฐานโดยอัตโนมัติและนับเป็นโมดูลฟีเจอร์เพียง 1 รายการในอุปกรณ์แต่ละเครื่อง
- จำกัดจำนวนโมดูลที่คุณกำหนดค่าให้นำออกได้สำหรับการนำส่งขณะติดตั้งไว้ที่ไม่เกิน 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 หรือไม่
หากแอปมีโมดูลฟีเจอร์ที่เปิดใช้ทันทีอย่างน้อย 1 รายการ คุณต้องเปิดใช้โมดูลฐานทันทีด้วย เมื่อใช้ 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> | รวบรวมตัวเลือกที่ปรับแต่งการนำส่งข้อบังคับดังที่แสดงด้านล่าง โปรดทราบว่าแต่ละข้อบังคับของฟีเจอร์ต้องกําหนดค่าตัวเลือกการแสดงโฆษณาที่กําหนดเองเหล่านี้เพียง 1 ประเภทเท่านั้น |
<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 Software Development Kit โปรดอ่านและทำความเข้าใจข้อกำหนดและนโยบายที่เกี่ยวข้องทั้งหมดก่อนเข้าถึงคลัง
ความปลอดภัยของข้อมูล
คลัง Play Core เป็นอินเทอร์เฟซรันไทม์ของแอปกับ Google Play Store ดังนั้นเมื่อคุณใช้ Play Core ในแอป Play Store จะดำเนินการตามกระบวนการของตนเอง ซึ่งรวมถึงการจัดการข้อมูลตามข้อกำหนดในการให้บริการของ Google Play ข้อมูลด้านล่างอธิบายวิธีที่ไลบรารี Play Core จัดการข้อมูลเพื่อประมวลผลคําขอที่เฉพาะเจาะจงจากแอป
API ภาษาเพิ่มเติม
ข้อมูลที่รวบรวมเกี่ยวกับการใช้งาน | รายการภาษาที่ติดตั้ง |
วัตถุประสงค์ของการเก็บรวบรวมข้อมูล | ระบบจะใช้ข้อมูลที่รวบรวมเพื่อแสดงแอปในเวอร์ชันภาษาต่างๆ และเพื่อเก็บรักษาภาษาที่ติดตั้งไว้หลังจากอัปเดตแอป |
การเข้ารหัสข้อมูล | ข้อมูลได้รับการเข้ารหัส |
การแชร์ข้อมูล | ไม่มีการโอนข้อมูลไปยังบุคคลที่สาม |
การลบข้อมูล | ระบบจะลบข้อมูลตามระยะเวลาการเก็บรักษาที่กําหนด |
การนำส่งฟีเจอร์ Play
ข้อมูลที่รวบรวมเกี่ยวกับการใช้งาน |
ข้อมูลเมตาของอุปกรณ์ เวอร์ชันแอปพลิเคชัน |
วัตถุประสงค์ของการเก็บรวบรวมข้อมูล | ระบบจะใช้ข้อมูลที่รวบรวมเพื่อแสดงโมดูลที่เหมาะสมกับอุปกรณ์ และเพื่อรักษาโมดูลที่ติดตั้งไว้หลังจากการอัปเดตและการสำรองและกู้คืนข้อมูล |
การเข้ารหัสข้อมูล | ข้อมูลได้รับการเข้ารหัส |
การแชร์ข้อมูล | ไม่มีการโอนข้อมูลไปยังบุคคลที่สาม |
การลบข้อมูล | ระบบจะลบข้อมูลตามระยะเวลาการเก็บรักษาที่กําหนด |
แม้ว่าเราจะมุ่งมั่นที่จะสร้างความโปร่งใสมากที่สุดเท่าที่จะทําได้ แต่คุณมีหน้าที่รับผิดชอบแต่เพียงผู้เดียวในการตัดสินใจว่าจะตอบกลับแบบฟอร์มส่วนความปลอดภัยของข้อมูล Google Play ที่เกี่ยวกับการเก็บรวบรวม การแชร์ และแนวทางปฏิบัติด้านการรักษาความปลอดภัยของข้อมูลผู้ใช้ในแอปอย่างไร