คำเตือน: Google Play Instant จะไม่มีให้บริการอีกต่อไป ตั้งแต่เดือนธันวาคม 2025 เป็นต้นไป คุณจะไม่สามารถเผยแพร่ Instant Apps ผ่าน Google Play ได้ และ Instant API ของบริการ Google Play ทั้งหมดจะหยุดทำงาน Play จะไม่แสดงแอปด่วนต่อผู้ใช้โดยใช้กลไกใดๆ อีกต่อไป
เราทำการเปลี่ยนแปลงนี้ตามความคิดเห็นของนักพัฒนาแอปและการลงทุนอย่างต่อเนื่อง เพื่อปรับปรุงระบบนิเวศตั้งแต่เปิดตัว Google Play Instant
เราขอแนะนำให้นักพัฒนาแอปนำผู้ใช้ไปยัง แอปหรือเกมปกติของตนโดยใช้ Deep Link เพื่อเปลี่ยนเส้นทางผู้ใช้ไปยังเส้นทางหรือฟีเจอร์ที่เฉพาะเจาะจงเมื่อเกี่ยวข้อง เพื่อเพิ่มประสิทธิภาพในการเพิ่มผู้ใช้อย่างต่อเนื่อง
หากยังคงใช้ปลั๊กอิน Android Gradle ฟีเจอร์ที่เลิกใช้งานแล้ว
(com.android.feature
) สำหรับโมดูล Android Instant App คุณจะต้อง
ย้ายข้อมูลไปใช้ปลั๊กอินแอปฐาน (com.android.application
) และ
ปลั๊กอินฟีเจอร์แบบไดนามิก (com.android.dynamic-feature
)
ในปลั๊กอิน Android Gradle 3.3.0 ขึ้นไป ปลั๊กอินแอปฐานจะรองรับ ประสบการณ์การใช้งานด่วน กล่าวคือ หากโมดูลแอปฐานเป็นไปตาม ข้อกำหนดในการเป็นประสบการณ์ทันที คุณจะได้รับประโยชน์โดยอัตโนมัติ จากนั้นคุณจะใส่ฟีเจอร์เพิ่มเติมที่ผู้ใช้ดาวน์โหลดได้ตามต้องการเป็น ประสบการณ์ทันทีโดยใช้ปลั๊กอินฟีเจอร์แบบไดนามิกได้ การตั้งค่านี้ช่วยให้รองรับทั้งประสบการณ์การใช้งานแอปที่ติดตั้งและแอป Instant ได้ง่ายขึ้นจากโปรเจ็กต์เดียว และช่วยให้คุณได้รับประโยชน์จากการเผยแพร่ด้วย Android App Bundle
ตารางต่อไปนี้อธิบายปลั๊กอินที่คุณจะย้ายข้อมูลได้ดีขึ้น
คำอธิบายโมดูล | ปลั๊กอินเดิม | ปลั๊กอินปัจจุบัน |
---|---|---|
โมดูลที่มีโค้ด ทรัพยากร และฟังก์ชันพื้นฐาน สำหรับประสบการณ์การใช้งานแอปที่ติดตั้งหรือแอป Instant | com.android.feature (พร้อม baseFeature = true )
|
com.android.application
หมายเหตุ: โมดูลนี้มีข้อมูลทั้งหมดในไฟล์ Manifest และ ข้อมูลการลงนามที่จำเป็นต่อการสร้างและแพ็กเกจแอปเป็น Android App Bundle หรือ APK |
ฟีเจอร์เพิ่มเติมแบบแยกส่วนที่ผู้ใช้ดาวน์โหลดได้ตามต้องการ | com.android.feature |
com.android.dynamic-feature (มี
dist:instant="true" และ
dist:onDemand="false" ในไฟล์ Manifest ของโมดูล) |
โค้ดและทรัพยากรสำหรับฟีเจอร์ที่ใช้ได้เฉพาะในแอปเวอร์ชันที่ติดตั้ง เท่านั้น | com.android.application |
com.android.dynamic-feature (พร้อม
dist:instant="false" และ dist:onDemand="false"
ในไฟล์ Manifest ของโมดูล) |
หน้านี้จะแสดงวิธีย้ายข้อมูลโปรเจ็กต์ Instant App ที่มีอยู่เพื่อสร้าง Android App Bundle ที่เปิดใช้ Instant นอกจากนี้ยังอธิบายวิธีสร้าง ทดสอบ และ เผยแพร่ Android App Bundle ที่เปิดใช้ค้นหาทันใจด้วย
หากคุณกำลังสร้างประสบการณ์แบบใช้งานได้ทันทีใหม่สำหรับแอป โปรดอ่านสร้างโมดูลฟีเจอร์ที่เปิดใช้ Instant แทน
ทําความเข้าใจการเปลี่ยนแปลง
เมื่อย้ายข้อมูลโปรเจ็กต์ไปใช้ปลั๊กอินฟีเจอร์แบบไดนามิกแทน Android App Bundle จะเป็นวิธีใหม่ในการสร้างและเผยแพร่ แอปของคุณ ซึ่งช่วยให้การจัดจำหน่าย APK ที่เพิ่มประสิทธิภาพแก่ผู้ใช้ ง่ายขึ้นอย่างมาก
App Bundle ช่วยให้การจัดจำหน่ายง่ายขึ้นด้วยการแพ็กเกจโค้ดที่คอมไพล์แล้วและทรัพยากรทั้งหมดของแอปเพื่ออัปโหลด แต่จะเลื่อนการสร้างและลงนาม APK ไปยัง Google Play จากนั้นโมเดลการนำส่งแอปแบบใหม่ของ Google Play จะใช้ App Bundle เพื่อสร้างและนำส่ง APK ที่เพิ่มประสิทธิภาพสำหรับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละราย เพื่อให้ผู้ใช้ดาวน์โหลดเฉพาะโค้ดและทรัพยากรที่จำเป็นในการเรียกใช้แอปของคุณ คุณจึงไม่ต้องสร้าง ทำ Signing และจัดการ APK หลายรายการเพื่อรองรับอุปกรณ์ต่างๆ อีกต่อไป และผู้ใช้จะได้รับการดาวน์โหลดที่มีขนาดเล็กลงและเพิ่มประสิทธิภาพมากขึ้น
เมื่อใช้ปลั๊กอินฟีเจอร์ที่เลิกใช้งานแล้ว การสร้างแอป Instant ต้อง สร้างโมดูลฟีเจอร์พื้นฐานซึ่งมีโค้ดและทรัพยากรที่ใช้ร่วมกัน สำหรับโมดูลทั้งหมด รวมถึงโมดูลแอป Instant ส่วนโค้ดที่เหลือ รวมอยู่ในโมดูลฟีเจอร์ที่ไม่ใช่โมดูลฐานหลายโมดูล ซึ่งมีจุดแรกเข้า สำหรับประสบการณ์แบบใช้งานได้ทันที สำหรับแอปเวอร์ชันที่ติดตั้งแล้ว โปรเจ็กต์ของคุณอาจมีโมดูลแอปแยกต่างหาก ซึ่งมีโค้ดและ กิจกรรมที่จำเป็นสำหรับแอปที่ติดตั้งเท่านั้น
เมื่อย้ายข้อมูลแอปให้รองรับ Android App Bundle โมดูลแอปจะ กลับมามีบทบาทเป็นโมดูลฐาน และคุณจะจัดระเบียบประสบการณ์การใช้งานเพิ่มเติมที่ติดตั้งหรือ แบบใช้งานได้ทันทีเป็นโมดูลฟีเจอร์ กล่าวคือ ตอนนี้โปรเจ็กต์ของคุณจะคล้ายกับโปรเจ็กต์แอปมาตรฐานมากขึ้น โดยมีโมดูลพื้นฐานที่เปิดใช้ Instant App และสามารถรวมประสบการณ์แบบใช้งานได้ทันทีแบบแยกโมดูลเพิ่มเติมได้
หากต้องการย้ายข้อมูลโปรเจ็กต์ Instant App ที่มีอยู่และใช้รูปแบบการจัดจำหน่ายที่เพิ่มประสิทธิภาพมากขึ้นของ Android App Bundle ให้ทำตามขั้นตอนที่อธิบายไว้ในส่วน ด้านล่าง
แปลงโมดูลฟีเจอร์ฐานเป็นโมดูลแอป
ก่อนอื่นคุณต้องแก้ไขไฟล์ build.gradle
ของโมดูลฟีเจอร์ฐานก่อน
ที่จะแปลงเป็นโมดูลแอปหลัก โดยทำดังนี้
- ลบ
baseFeature true
บรรทัด นำทรัพยากร Dependency ที่ใช้การกำหนดค่าทรัพยากร Dependency
feature
หรือapplication
ออกGroovy
dependencies { ... // delete any lines that look like // feature project(":foo") // feature project(":bar") // application project(":app") }
Kotlin
dependencies { ... // delete any lines that look like // feature(project(":foo")) // feature(project(":bar")) // application(project(":app")) }
ย้าย
applicationId
พร้อมกับการกำหนดค่าสคริปต์บิลด์อื่นๆ ที่คุณ คาดว่าจะอยู่ในโมดูลแอปฐานจากโมดูลcom.android.application
ปัจจุบันไปยังโมดูลcom.android.feature
ตัวอย่างบางส่วนแสดงอยู่ด้านล่าง สำหรับขั้นตอนนี้ การคัดลอกและวางบล็อกของbuild.gradle
จากโมดูลแอปก่อนหน้าลงในไฟล์build.gradle
ของโมดูลแอปใหม่ อาจง่ายกว่า ทั้งนี้ขึ้นอยู่กับbuild.gradle
การตั้งค่าandroid
เฉพาะของคุณ อย่างไรก็ตาม คุณควรระมัดระวังเมื่อดำเนินการดังกล่าวGroovy
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId = "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { getByName("release") { minifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } }
ทําเครื่องหมายโมดูลฟีเจอร์เป็นโมดูลที่เปิดใช้ทันทีโดยเพิ่มแท็กการกระจายชุดที่เหมาะสมลงในไฟล์ Manifest ดังที่แสดงด้านล่าง
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
แปลงโมดูลฟีเจอร์เป็นโมดูลแอปฐานโดยเปลี่ยนประเภทปลั๊กอินเป็น
com.android.application
ดังนี้Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following plugins { id 'com.android.application' }
Kotlin
// Replace "plugins { id("com.android.feature") }" // with the following plugins { id("com.android.application") }
แปลงโมดูลแอปเดิมเป็นโมดูลฟีเจอร์ที่ติดตั้ง
หากไม่มีโค้ดหรือทรัพยากรในโมดูลแอปเก่า คุณก็สามารถ ลบโมดูลนั้นได้เลย เนื่องจากขั้นตอนที่คุณทำในส่วนก่อนหน้าได้แปลงโมดูลฟีเจอร์ เป็นโมดูลแอปฐานของแอปแล้ว
อย่างไรก็ตาม หากคุณมีโค้ดและทรัพยากรในโมดูลแอปเดิมที่แสดงถึง ฟังก์ชันการทำงานที่คุณต้องการให้ผู้ใช้ใช้งานได้เมื่อติดตั้งแอป ให้ทำตามขั้นตอนในส่วนนี้เพื่อแปลงโมดูลแอปเป็นโมดูลฟีเจอร์
การสร้างฟีเจอร์โมดูลเกี่ยวข้องกับการเปลี่ยนประเภทปลั๊กอินจาก
com.android.application
เป็น com.android.dynamic-feature
พร้อมกับการเปลี่ยนแปลงbuild.gradle
อื่นๆ อีก 2-3 รายการ ดังนี้
เปลี่ยนประเภทปลั๊กอินจาก
com.android.application
เป็นcom.android.dynamic-feature
Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following: plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "plugins { id("com.android.application") }" // with the following: plugins { id("com.android.dynamic-feature") }
ตามที่อธิบายไว้ในส่วนก่อนหน้า ให้ตรวจสอบว่าคุณได้ย้ายการกำหนดค่าบิลด์ที่ปลั๊กอิน
com.android.application
ต้องการไปยังโมดูลแอปฐานแล้ว เช่น กฎapplicationId
หรือproguardFiles
เปลี่ยนชื่อโมดูลเป็น "installed_feature" หรือชื่ออื่นที่คล้ายกันดังนี้
- เปิดแผงโปรเจ็กต์โดยเลือกดู > หน้าต่างเครื่องมือ > โปรเจ็กต์จากแถบเมนู
- คลิกขวาที่โมดูลฟีเจอร์ แล้วเลือกจัดระเบียบใหม่ > เปลี่ยนชื่อ
- ในกล่องโต้ตอบที่ปรากฏขึ้น ให้เลือกเปลี่ยนชื่อโมดูล แล้วคลิกตกลง
- ป้อนชื่อใหม่สำหรับโมดูล แล้วคลิกตกลง
เช่นเดียวกับขั้นตอนที่ 3 ให้เปลี่ยนชื่อโมดูลแอปใหม่ที่คุณสร้างในส่วนก่อนหน้าเป็นชื่อที่สื่อความหมาย เช่น "app"
เพิ่มการอ้างอิงการติดตั้งใช้งานในโมดูล "app" ในไฟล์
build.gradle
ของฟีเจอร์ โมดูล ดังที่แสดงด้านล่างGroovy
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation project(":app") }
Kotlin
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation(project(":app")) }
เพิ่มฟีเจอร์ลงในไฟล์
build.gradle
ของโมดูลแอปใหม่Groovy
android { ... // In the base app module, specify each feature module. dynamicFeatures = [":installed_feature"] }
Kotlin
android { ... // In the base app module, specify each feature module. dynamicFeatures.addAll(listOf(":installed_feature")) }
ในไฟล์ Manifest ของโมดูลฟีเจอร์ ให้ทําเครื่องหมายโมดูลฟีเจอร์เป็น โมดูลที่ติดตั้งได้โดยการเพิ่มแท็กการกระจาย App Bundle ที่เหมาะสมลงใน ไฟล์ Manifest
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="false" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
แปลงโมดูลฟีเจอร์อื่นๆ เป็นโมดูลฟีเจอร์ที่พร้อมใช้งาน Instant
หากแยกฟังก์ชันการทำงานเพิ่มเติมของแอปออกเป็นฟีเจอร์หลายโมดูล คุณจะต้องทำตามขั้นตอนในส่วนนี้เพื่อแปลงโมดูลเหล่านั้นเป็นฟีเจอร์โมดูลที่เปิดใช้ทันที
สำหรับโมดูลฟีเจอร์ที่เหลือแต่ละโมดูลในโปรเจ็กต์ ให้ทำดังนี้เพื่อแปลง เป็นฟีเจอร์ที่เปิดใช้ทันที
เปลี่ยนประเภทปลั๊กอินในไฟล์
build.gradle
เป็นcom.android.dynamic-feature
ดังที่แสดงด้านล่างGroovy
// Replace 'com.android.feature' with 'com.android.dynamic-feature' plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "com.android.feature" with "com.android.dynamic-feature" plugins { id("com.android.dynamic-feature") }
ทำเครื่องหมายโมดูลฟีเจอร์แต่ละโมดูลว่าเปิดใช้ทันทีได้โดยเพิ่มข้อมูลต่อไปนี้ ลงในไฟล์ Manifest
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
เพิ่มโมดูลฟีเจอร์ลงในไฟล์
build.gradle
ของโมดูลแอปพลิเคชันใหม่ ซึ่งเป็นที่ที่คุณเพิ่มinstalled_feature
ลงในรายการโมดูลฟีเจอร์Groovy
android { ... dynamicFeatures = [":installed_feature", ":feature_1", ":feature_2"] // or whichever name exists for the instant enabled feature module }
Kotlin
android { ... dynamicFeatures.addAll(listOf(":installed_feature", ":feature_1", ":feature_2")) // or whichever name exists for the instant enabled feature module }
สร้าง ทดสอบ และเผยแพร่ App Bundle ใหม่ที่เปิดใช้ Instant
หลังจากทำตามขั้นตอนในหน้านี้แล้ว โปรเจ็กต์จะสร้างอาร์ติแฟกต์เดียว ซึ่งก็คือ Android App Bundle ที่คุณใช้เผยแพร่ทั้งเวอร์ชันที่ติดตั้งและเวอร์ชันแบบใช้งานได้ทันทีของแอปไปยัง Google Play Console และเปิดตัวแยกกันสำหรับแทร็กแบบใช้งานได้ทันทีและแทร็กที่ติดตั้งได้ นอกจากนี้ App Bundle ยังช่วยให้คุณได้รับประโยชน์จากการนำส่ง APK ที่เพิ่มประสิทธิภาพสำหรับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละราย ดังนั้นผู้ใช้จะดาวน์โหลดเฉพาะโค้ดและทรัพยากรที่จำเป็นต่อการเรียกใช้แอปของคุณเท่านั้น นั่นหมายความว่าคุณไม่ต้องสร้าง ลงนาม และจัดการ APK หลายรายการเพื่อรองรับอุปกรณ์ต่างๆ อีกต่อไป และผู้ใช้จะได้รับการดาวน์โหลดที่มีขนาดเล็กลงและเพิ่มประสิทธิภาพมากขึ้น
หากต้องการเริ่มสร้างและทดสอบ App Bundle ที่เปิดใช้ Instant ให้ไปที่ สร้าง App Bundle