AAB (Android App Bundle) เป็นรูปแบบการเผยแพร่สำหรับแอปพลิเคชัน Android ที่แทนที่ APK ใน Google Play ตั้งแต่ปี 2021 ซึ่งแตกต่างจาก APK ตรงที่ AAB ไม่ใช่ไฟล์ติดตั้ง — มันคือคอนเทนเนอร์ที่ Google Play ใช้สร้าง APK ที่ปรับให้เหมาะสมสำหรับแต่ละอุปกรณ์แบบไดนามิก ตามข้อมูลจาก Android Developers, 2026 รูปแบบนี้ช่วยลดขนาดของแอปพลิเคชันที่ดาวน์โหลดโดยเฉลี่ย 15% โดยการตัดทรัพยากรที่ไม่ได้ใช้ออก
ประเด็นสำคัญ
AAB (Android App Bundle) เป็นรูปแบบการเผยแพร่ที่พัฒนาโดย Google เพื่อแทนที่ APK สำหรับการจัดจำหน่ายผ่าน Google Play ภายใน AAB คือไฟล์ ZIP ที่มีนามสกุล .aab ซึ่งประกอบด้วยโค้ดที่คอมไพล์แล้ว ทรัพยากร และเมตาดาตา ความแตกต่างหลัก: AAB ไม่ได้ถูกติดตั้งโดยตรงบนอุปกรณ์
นักพัฒนาอัปโหลด AAB ไปยัง Google Play Console เมื่อผู้ใช้พยายามติดตั้งแอปพลิเคชัน Google Play จะวิเคราะห์การกำหนดค่าอุปกรณ์: ความหนาแน่นของหน้าจอ (DPI), สถาปัตยกรรม CPU, ภาษา และเวอร์ชัน Android จากการวิเคราะห์นี้ จะสร้าง APK ขนาดเล็กที่สุดที่มีเฉพาะส่วนประกอบที่จำเป็นเท่านั้น
Google เปิดตัว AAB ในปี 2018 ในงานประชุม I/O ตั้งแต่เดือนสิงหาคม 2021 รูปแบบนี้กลายเป็นข้อบังคับสำหรับแอปพลิเคชันใหม่ทั้งหมดบน Google Play แอปพลิเคชันที่มีอยู่สามารถใช้ APK ต่อไปได้ แต่แอปพลิเคชันใหม่จะต้องเผยแพร่ในรูปแบบ AAB เท่านั้น
ความแตกต่าง ระหว่าง AAB และ APK นั้นเป็นพื้นฐาน: APK เป็นไฟล์ติดตั้งที่สมบูรณ์พร้อมสำหรับการติดตั้ง AAB คือคอนเทนเนอร์ที่มีส่วนประกอบต้นทางที่ต้องการการประมวลผล
| พารามิเตอร์ | APK | AAB |
|---|---|---|
| ประเภท | ไฟล์ติดตั้ง | คอนเทนเนอร์เผยแพร่ |
| การติดตั้ง | โดยตรงบนอุปกรณ์ | ผ่าน Google Play |
| ขนาด | ไฟล์เก็บถาวรแบบเต็ม | ส่วนประกอบต้นทาง |
| โมดูล | ทั้งหมดในไฟล์เดียว | โมดูลแยกต่างหาก |
| ลายเซ็น | นักพัฒนา | Google Play |
| การจัดจำหน่าย | ทุกช่องทาง | Google Play |
APK เหมาะสำหรับการจัดจำหน่ายนอก Google Play — ผ่านเว็บไซต์ อีเมล หรือระบบ MDM ขององค์กร AAB ผูกติดกับโครงสร้างพื้นฐานของ Google Play และไม่สามารถติดตั้งได้โดยตรง สำหรับการทดสอบ AAB จะใช้เครื่องมือ bundletool ซึ่งจำลองการสร้าง APK บนเครื่องท้องถิ่น
โครงสร้างภายในของ AAB คล้ายกับ APK แต่มีไดเรกทอรีและไฟล์เพิ่มเติมสำหรับอธิบายโมดูลและการพึ่งพาของโมดูล
| ไฟล์/ไดเรกทอรี | วัตถุประสงค์ |
|---|---|
| base/ | โมดูลพื้นฐาน: โค้ด ทรัพยากร manifest |
| BundleConfig.pb | การกำหนดค่า Bundle ในรูปแบบ protobuf |
| Bundle-metadata/ | เมตาดาต้าเกี่ยวกับเวอร์ชันของโมดูล |
| feature/ | โมดูลไดนามิก (ตามคำขอ) |
| assets/ | สินทรัพย์ของแอปพลิเคชัน |
| manifest/ | manifest ของแต่ละโมดูล |
โมดูล base เป็นส่วนประกอบบังคับของ AAB ประกอบด้วยโค้ดหลัก ทรัพยากร และ manifest ของแอปพลิเคชัน หากไม่มีโมดูลพื้นฐาน จะไม่สามารถสร้างแอปพลิเคชันได้ โมดูลอื่น ๆ ทั้งหมดเป็นทางเลือกและเชื่อมต่อผ่าน Dynamic Delivery
การกำหนดค่า AAB ใช้ Protocol Buffers (protobuf) แทน XML ไฟล์ .pb มีขนาดกะทัดรัดกว่าและถูกแยกวิเคราะห์ได้เร็วกว่าโดยโครงสร้างพื้นฐานเซิร์ฟเวอร์ของ Google เครื่องมือ bundletool จะแปลง protobuf เป็นรูปแบบที่อ่านได้สำหรับการดีบัก
Dynamic Delivery เป็นเทคโนโลยีหลักที่ AAB สร้างขึ้นมา ช่วยให้สามารถส่งให้ผู้ใช้เฉพาะส่วนของแอปพลิเคชันที่ตรงกับอุปกรณ์และภาษาของพวกเขา รวมถึงโหลดโมดูลเพิ่มเติมตามคำขอ
โมดูล Install-time จะถูกโหลดพร้อมกับ APK พื้นฐานระหว่างการติดตั้ง โมดูล Conditional จะถูกส่งเมื่อตรงตามเงื่อนไขเท่านั้น — ตัวอย่างเช่น โมดูลที่มีเนื้อหาสำหรับหน้าจอ 4K โมดูล On-demand จะถูกโหลดตามคำขอของผู้ใช้ภายในแอปพลิเคชัน
สำหรับทรัพยากรขนาดใหญ่ (สูงสุด 2 GB) จะใช้ Play Asset Delivery แทนไฟล์ OBB PAD รองรับโหมดการส่งสามโหมดเดียวกัน: install-time, fast-follow (ทันทีหลังจากติดตั้ง) และ on-demand
// การโหลดโมดูลตามคำขอผ่าน SplitInstallManager
val manager = SplitInstallManagerFactory
.create(context)
val request = SplitInstallRequest
.newBuilder()
.addModule("level_pack_3")
.build()
manager.startInstall(request)
.addOnSuccessListener {
Log.d("AAB", "Module installed")
}
แต่ละโมดูลไดนามิกถูกอธิบายในไฟล์ build.gradle แยกต่างหากพร้อมระบุประเภทการส่ง โมดูลสามารถมีทรัพยากร โค้ด และ manifest ของตัวเอง ซึ่งเป็นอิสระจากแอปพลิเคชันพื้นฐาน
การสร้าง AAB ทำผ่าน Android Gradle Plugin ด้วยงาน bundleRelease (หรือ bundleDebug) ผลลัพธ์คือไฟล์ .aab ในไดเรกทอรี build/outputs/bundle/
ไม่จำเป็นต้องมีการกำหนดค่าพิเศษสำหรับการสร้าง AAB — Android Gradle Plugin รองรับ Bundle โดยค่าเริ่มต้น เพียงระบุงาน bundle แทน assemble
// build.gradle.kts — การสร้าง AAB พร้อมลายเซ็น
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
// งาน: ./gradlew bundleRelease
Google มีเครื่องมือ bundletool สำหรับสร้าง APK จาก AAB บนเครื่องท้องถิ่น คำสั่ง `bundletool build-apks --bundle=app.aab --output=app.apks` จะสร้างชุด APK สำหรับทดสอบบนการกำหนดค่าอุปกรณ์ต่าง ๆ
bundletool ยังสามารถแตกไฟล์ AAB แสดงการกำหนดค่า และตรวจสอบความสมบูรณ์ของลายเซ็นก่อนอัปโหลดไปยัง Google Play Console สำหรับการดีบัก จะใช้คำสั่ง `bundletool dump manifest --bundle=app.aab` เพื่อแสดง manifest ของโมดูลพื้นฐาน
โดยค่าเริ่มต้น AAB จะแบ่งทรัพยากรตามสามมิติ: ภาษา ความหนาแน่นของหน้าจอ (density) และสถาปัตยกรรม CPU (abi) นักพัฒนาสามารถปิดการแบ่งใด ๆ ใน build.gradle — ตัวอย่างเช่น หากแอปพลิเคชันรองรับเฉพาะภาษาอังกฤษ การปิดการแบ่งหมายความว่าทรัพยากรสำหรับทุกรูปแบบจะรวมอยู่ใน APK พื้นฐาน
การปรับทรัพยากรให้เหมาะสม — AAB จะแปลง PNG เป็น WebP โดยอัตโนมัติโดยไม่สูญเสียคุณภาพ บีบอัดทรัพยากรที่ไม่ได้ใช้ และลบสตริงที่ซ้ำกัน การปรับให้เหมาะสมเหล่านี้จะถูกนำไปใช้ฝั่ง Google Play เมื่อสร้าง APK สุดท้าย ผลลัพธ์คือผู้ใช้ได้รับ APK ที่เล็กกว่าไฟล์เก็บถาวรเต็ม 15–25%
กระบวนการเผยแพร่ AAB ใน Google Play Console แตกต่างจาก APK เฉพาะรูปแบบของไฟล์ที่อัปโหลด คอนโซลจะรับไฟล์ .aab ตรวจสอบโครงสร้าง ลายเซ็น และการกำหนดค่าโมดูล จากนั้นสร้าง APK สำหรับอุปกรณ์แต่ละประเภท
เมื่ออัปโหลด AAB Google Play จะจัดการการจัดการคีย์ลายเซ็น นักพัฒนาอัปโหลดแพ็กเกจที่ลงนามด้วยคีย์ upload และ Google ลงนาม APK ที่สร้างขึ้นใหม่ด้วยคีย์ของตัวเอง การดำเนินการนี้ช่วยลดความซับซ้อนในการหมุนเวียนคีย์และการกู้คืนการเข้าถึงหากสูญเสีย keystore
Google Play Console มี การทดสอบ AAB ในตัว: คุณสามารถดาวน์โหลด APK ที่สร้างขึ้นสำหรับอุปกรณ์เฉพาะ หรือเรียกใช้การทดสอบภายในผ่านแทร็ก Internal Testing, Closed Alpha และ Open Beta
การย้ายไปยัง AAB อาจทำให้เกิดปัญหา โดยเฉพาะในโครงการที่มีโมดูลไดนามิกจำนวนมากหรือการกำหนดค่าทรัพยากรที่ซับซ้อน
หากโมดูลไดนามิกอ้างอิงทรัพยากรของโมดูลพื้นฐานด้วยชื่อที่ไม่ถูกต้อง Google Play จะปฏิเสธ AAB ในขั้นตอนการตรวจสอบ วิธีแก้ไข — ใช้การตรวจสอบ lint ก่อนสร้างและทดสอบโมดูลทั้งหมดผ่าน bundletool ในเครื่อง
การแบ่งตามภาษาอาจทำให้การเริ่มต้นแอปพลิเคชันช้าลงหากทรัพยากรสำหรับสถานที่ปัจจุบันถูกโหลดแบบไดนามิก คำแนะนำของ Google คือไม่ควรแบ่งภาษาหากมีน้อยกว่า 10 ภาษา หรือใช้ install-time สำหรับภาษาที่ได้รับความนิยมมากที่สุด
SDK บางตัว (การวิเคราะห์ โฆษณา แผนที่) ต้องการเข้าถึง manifest และทรัพยากรทั้งหมด การตรวจสอบความเข้ากันได้กับ AAB เป็นขั้นตอนบังคับก่อนการย้าย SDK หลักส่วนใหญ่ (Firebase, Google Ads, Crashlytics) รองรับ AAB อย่างเต็มรูปแบบตั้งแต่ปี 2022 สำหรับการตรวจสอบความเข้ากันได้ จะใช้ bundletool พร้อมแฟล็ก --validate ซึ่งจำลองการสร้าง APK ฝั่งเซิร์ฟเวอร์
AAB ใช้ versionCode จาก manifest ของโมดูลพื้นฐาน ซึ่งแตกต่างจาก APK ตรงที่ AAB รองรับ versionCode แยกต่างหากสำหรับแต่ละโมดูล — ซึ่งช่วยให้อัปเดตแต่ละส่วนของแอปพลิเคชันได้โดยไม่ต้องติดตั้งใหม่ทั้งหมด Dynamic Delivery ติดตามโมดูลที่ติดตั้งไว้และส่งเฉพาะส่วนประกอบที่เปลี่ยนแปลงระหว่างการอัปเดตผ่าน Google Play
Google Play Console ให้การวิเคราะห์โดยละเอียดสำหรับแต่ละ AAB: จำนวน APK ที่สร้างขึ้น, Split ใดที่เป็นที่ต้องการ, ขนาดดาวน์โหลดเฉลี่ยต่ออุปกรณ์ Android Vitals แสดงเมตริกประสิทธิภาพของ APK ที่สร้างขึ้น ข้อมูลนี้ช่วยปรับการกำหนดค่า Split ให้เหมาะสมและลดขนาดดาวน์โหลดสำหรับอุปกรณ์ประเภทต่าง ๆ
คำถามที่พบบ่อย
ไม่ AAB ไม่ได้ออกแบบมาสำหรับการติดตั้งโดยตรง Google Play จะแปลงเป็น APK สำหรับอุปกรณ์เฉพาะ สำหรับการทดสอบบนโทรศัพท์ จะใช้ bundletool ซึ่งสร้าง APK จาก AAB ในเครื่อง
Google Play สร้าง APK เฉพาะทรัพยากรที่ตรงกับอุปกรณ์ของผู้ใช้: ความหนาแน่นของหน้าจอหนึ่งแบบ, สถาปัตยกรรม CPU หนึ่งแบบ, ภาษาหนึ่งภาษา ทรัพยากรสำหรับการกำหนดค่าอื่น ๆ จะไม่รวม ซึ่งประหยัดปริมาณการดาวน์โหลด 15–30%
ไม่ แอปพลิเคชันที่มีอยู่สามารถเผยแพร่ APK ต่อไปได้ ข้อกำหนด AAB ใช้กับแอปพลิเคชันใหม่เท่านั้น Google แนะนำแต่ไม่บังคับให้อัปเดตโครงการที่มีอยู่เป็น AAB
เปลี่ยนงานสร้างจาก assembleRelease เป็น bundleRelease ตรวจสอบความเข้ากันได้ของ SDK ทั้งหมด กำหนดค่า App Signing ใน Google Play Console และอัปโหลด AAB แรกผ่านแทร็กที่มีอยู่
ใช่ AAB รวมไลบรารีเนทีฟในโมดูล Google Play ส่งเฉพาะไฟล์ .so สำหรับสถาปัตยกรรม CPU ของอุปกรณ์ ซึ่งมีความสำคัญโดยเฉพาะสำหรับเกมบน Unity และ Unreal Engine ที่มีบิลด์เนทีฟขนาดใหญ่
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม