ในเดือนสิงหาคม 2021 Google ได้ตัดสินใจว่าจะเปลี่ยนแปลงวิธีการเผยแพร่แอป Android โดยพื้นฐาน โดยแอปใหม่ทั้งหมดที่ส่งไปยัง Google Play Store จะต้องใช้รูปแบบ ชุดแอป Android (AAB) แทน APK แบบดั้งเดิม การเปลี่ยนแปลงนี้ส่งผลต่อนักพัฒนา ผู้ใช้ และระบบนิเวศทั้งหมดของการเผยแพร่แอปจากบุคคลที่สาม แต่จริงๆ แล้ว App Bundle คืออะไร มันทำงานอย่างไร และทำไมคุณถึงต้องสนใจ?
คู่มือนี้ครอบคลุมทุกอย่างตั้งแต่ด้านเทคนิคภายในของรูปแบบ AAB ไปจนถึงความหมายเชิงปฏิบัติสำหรับผู้ใช้ที่ต้องการแชร์แอปกับเพื่อนหรือติดตั้งลงในอุปกรณ์ที่ไม่มีสิทธิ์เข้าถึง Play Store
Android App Bundle คืออะไร
Android App Bundle เป็นรูปแบบการเผยแพร่ที่มีโค้ดและทรัพยากรที่คอมไพล์ทั้งหมดของแอป แต่เลื่อนการสร้าง APK ที่ติดตั้งได้ขั้นสุดท้ายไปยัง Google Play ให้คิดว่ามันเป็นเทมเพลตหลักที่เซิร์ฟเวอร์ของ Google สร้างแพ็คเกจเฉพาะอุปกรณ์ที่ได้รับการปรับปรุงประสิทธิภาพได้ทันที
ไม่เหมือนกับ APK ซึ่งเป็นแพ็คเกจพร้อมติดตั้ง ไฟล์ AAB ไม่สามารถติดตั้งบนอุปกรณ์ได้โดยตรง เป็นอาร์ติแฟกต์บิวด์ที่ได้รับการอัปโหลดไปยัง Play Store ซึ่งโครงสร้างพื้นฐานของ Google ประมวลผลและสร้าง APK ที่ปรับแต่งสำหรับการกำหนดค่าอุปกรณ์แต่ละอย่าง
นามสกุลไฟล์คือ .aab และภายในใช้รูปแบบบัฟเฟอร์โปรโตคอลรวมกับโครงสร้างคล้าย ZIP ประกอบด้วยโค้ดไบต์ DEX ของแอป ทรัพยากร เนื้อหา ไลบรารีเนทิฟ และไฟล์ข้อมูลเมตาบันเดิลพิเศษที่บอก Google Play ถึงวิธีแยกเนื้อหา
ทำไมต้องมี App Bundle ที่ได้รับคำสั่งจาก Google
แรงจูงใจหลักเบื้องหลัง App Bundle คือ การลดขนาดการดาวน์โหลดแอป แอป Android ทั่วไปต้องรองรับความหนาแน่นของหน้าจอหลายแบบ (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), สถาปัตยกรรม CPU หลายตัว (armeabi-v7a, arm64-v8a, x86, x86_64) และหลายภาษา ในโมเดล APK แบบดั้งเดิม ทรัพยากรทั้งหมดเหล่านี้จะถูกรวมเป็นไฟล์เดียว แม้ว่าอุปกรณ์ใดๆ ก็ตามต้องการเพียงเศษเสี้ยวของไฟล์เหล่านั้นก็ตาม
พิจารณาเกมที่มีไลบรารีดั้งเดิมสำหรับสถาปัตยกรรม CPU สี่แบบและพื้นผิวสำหรับความหนาแน่นของหน้าจอห้าระดับ APK สากลอาจมีขนาด 200 MB แต่เวอร์ชันเฉพาะอุปกรณ์ที่มีเฉพาะสถาปัตยกรรมและความหนาแน่นที่เกี่ยวข้องอาจเป็น 80 MB นั่นคือขนาดการดาวน์โหลดลดลง 60%
Google รายงานว่าแอปที่ใช้ App Bundle มีขนาดเล็กกว่า APK สากลที่เทียบเท่าโดยเฉลี่ย 15% สำหรับแอปและเกมขนาดใหญ่ การประหยัดอาจลดลงอย่างมาก การดาวน์โหลดที่น้อยลงหมายถึงการติดตั้งที่เร็วขึ้น การใช้แบนด์วิธที่น้อยลง และการติดตั้งที่ถูกละทิ้งน้อยลงเนื่องจากปัญหาด้านขนาด
App Bundle ทำงานภายในอย่างไร
โครงสร้างมัด
ไฟล์ AAB ได้รับการจัดระเบียบเป็นโมดูล โดยแต่ละโมดูลจะมีรหัส ทรัพยากร และทรัพย์สินของตัวเอง โครงสร้างที่พบบ่อยที่สุด ได้แก่ :
- โมดูลฐาน: ประกอบด้วยโค้ดแอปหลักและทรัพยากรที่ทุกอุปกรณ์ต้องการ สิ่งนี้จะถูกติดตั้งอยู่เสมอ
- การแยกการกำหนดค่า: แยกส่วนสำหรับทรัพยากรภาษา ทรัพยากรความหนาแน่นของหน้าจอ และไลบรารีดั้งเดิมของ ABI (สถาปัตยกรรม CPU)
- โมดูลคุณลักษณะแบบไดนามิก: โมดูลเสริมที่สามารถดาวน์โหลดได้ตามความต้องการหลังการติดตั้งครั้งแรก
- ชุดสินทรัพย์: เนื้อหาขนาดใหญ่ เช่น ระดับเกมหรือสื่อที่สามารถส่งมอบในเวลาติดตั้ง ตามความต้องการ หรือในเบื้องหลัง
แยกการสร้าง APK
เมื่อผู้ใช้ดาวน์โหลดแอปจาก Play Store เซิร์ฟเวอร์ของ Google จะตรวจสอบการกำหนดค่าของอุปกรณ์และสร้างชุด APK แยกที่ปรับให้เหมาะกับอุปกรณ์นั้นโดยเฉพาะ การติดตั้งทั่วไปอาจรวมถึง:
- base.apk รหัสแอปพลิเคชันหลักและทรัพยากรที่จำเป็น
- split_config.arm64_v8a.apk ไลบรารีดั้งเดิมสำหรับ CPU ของอุปกรณ์
- split_config.xxhdpi.apk ทรัพยากรสำหรับความหนาแน่นหน้าจอของอุปกรณ์
- split_config.en.apk ทรัพยากรภาษาสำหรับโลแคลของผู้ใช้
APK แบบแยกเหล่านี้ได้รับการติดตั้งร่วมกันเป็นแอปแบบลอจิคัลเดียว ตัวจัดการแพ็คเกจ Android ถือว่าพวกมันเป็นแอปพลิเคชั่นเดียว แต่เป็นไฟล์ที่แยกจากกันบนอุปกรณ์ นี่เป็นกลไกที่ช่วยให้สามารถประหยัดขนาดได้
การจัดส่งแบบไดนามิก
หนึ่งในคุณสมบัติที่ทรงพลังที่สุดของ App Bundle คือการจัดส่งแบบไดนามิก นักพัฒนาสามารถทำเครื่องหมายคุณสมบัติบางอย่างว่าสามารถดาวน์โหลดได้ตามความต้องการ ตัวอย่างเช่น แอพแก้ไขรูปภาพอาจมีฟิลเตอร์ขั้นสูงเป็นโมดูลคุณสมบัติไดนามิก ผู้ใช้ที่ไม่เคยใช้ตัวกรองเหล่านั้นจะไม่ดาวน์โหลดตัวกรองเหล่านี้ ซึ่งช่วยประหยัดพื้นที่จัดเก็บข้อมูล
โมดูลฟีเจอร์ไดนามิกจะถูกดาวน์โหลดและติดตั้งผ่านไลบรารี Play Core ณ รันไทม์ แอปสามารถตรวจสอบได้ว่ามีการติดตั้งโมดูลแล้วหรือไม่ และร้องขอให้ดาวน์โหลดเมื่อจำเป็น ดังนั้นผู้ใช้จึงได้สัมผัสกับฟังก์ชันการทำงานใหม่ในรูปแบบการดาวน์โหลดในแอปขนาดเล็ก แทนที่จะติดตั้งใหม่ทั้งหมด
AAB กับ APK: ความแตกต่างที่สำคัญ
การทำความเข้าใจความแตกต่างระหว่างรูปแบบเหล่านี้จะช่วยชี้แจงว่าแต่ละรูปแบบเหมาะสมเมื่อใด:
- ไฟล์ ความสามารถในการติดตั้ง: APK สามารถติดตั้งได้โดยตรงบนอุปกรณ์ Android ใด ๆ ไฟล์ AAB ไม่สามารถติดตั้งได้โดยตรงและต้องได้รับการประมวลผลก่อน
- ขนาด: APK สากลประกอบด้วยทรัพยากรสำหรับการกำหนดค่าทั้งหมด AAB ช่วยให้สามารถจัดส่งเฉพาะอุปกรณ์ ส่งผลให้การดาวน์โหลดมีขนาดเล็กลง
- การลงนาม: ด้วย APK นักพัฒนาจะลงนามในแพ็คเกจสุดท้ายที่สามารถติดตั้งได้ เมื่อใช้ AAB นักพัฒนาซอฟต์แวร์จะลงนามในบันเดิล และ Google จะลงนาม APK ที่สร้างขึ้นอีกครั้งโดยใช้ Play App Signing
- APK ของ การกระจาย: สามารถเผยแพร่ผ่านช่องทางใดก็ได้ AAB ได้รับการออกแบบมาเพื่อ Play Store เป็นหลัก แม้ว่าเครื่องมืออย่าง Bundletool จะสามารถสร้าง APK จากสิ่งเหล่านี้ได้ในเครื่องก็ตาม
- ความสามารถในการแชร์: คุณสามารถแชร์ไฟล์ APK กับบุคคลอื่นได้อย่างง่ายดาย การแชร์แอปที่ติดตั้งจาก AAB จำเป็นต้องรวบรวม APK แยกทั้งหมด ซึ่งซับซ้อนกว่า
ข้อโต้แย้งการลงนาม
ประเด็นที่มีการถกเถียงกันมากที่สุดประการหนึ่งของคำสั่ง AAB คือ เล่นการลงนามแอป เมื่อนักพัฒนาซอฟต์แวร์อัปโหลด AAB แล้ว Google จะเก็บคีย์การลงนามซึ่งใช้ในการลงนาม APK สุดท้ายที่ส่งให้กับผู้ใช้ ซึ่งหมายความว่า Google มีความสามารถในการแก้ไขเนื้อหา APK ในทางเทคนิคก่อนที่จะลงนามและส่งมอบ
Google แย้งว่านี่เป็นสิ่งจำเป็นเพราะพวกเขาจำเป็นต้องลงนาม APK แยกที่พวกเขาสร้างขึ้น นักพัฒนาซอฟต์แวร์เก็บคีย์การอัปโหลดไว้เพื่อตรวจสอบสิทธิ์การอัปโหลดของตน แต่คีย์การลงนามแอปจริงได้รับการจัดการโดยโครงสร้างพื้นฐานของ Google
สำหรับนักพัฒนาส่วนใหญ่ นี่เป็นการแลกเปลี่ยนที่สมเหตุสมผล Google ให้บริการสำรองและกู้คืนคีย์ และลดความเสี่ยงของการสูญหายของคีย์ (ซึ่งจะขัดขวางการอัปเดตแอปอย่างถาวร) อย่างไรก็ตาม นักพัฒนาที่เน้นความเป็นส่วนตัวและผู้สนับสนุนโอเพ่นซอร์สได้หยิบยกข้อกังวลเกี่ยวกับการรวมศูนย์ความไว้วางใจนี้
สิ่งนี้หมายความว่าสำหรับผู้ใช้ที่แชร์แอพ
การเปลี่ยนไปใช้ App Bundle มีผลกระทบที่สำคัญต่อผู้ใช้ที่ต้องการแชร์แอปนอก Play Store ดังนี้
การแยกแอปที่ติดตั้งไว้
เมื่อคุณแยกแอปที่ติดตั้งจาก AAB คุณจะไม่ได้รับไฟล์ APK ไฟล์เดียว คุณจะได้รับคอลเล็กชัน APK แบบแยกแทน การแยกเหล่านี้เป็นแบบเฉพาะอุปกรณ์ หมายความว่าแอปที่ดึงมาจากโทรศัพท์ที่มีโปรเซสเซอร์ ARM64 และหน้าจอ xxhdpi จะไม่ทำงานบนอุปกรณ์ที่มีการกำหนดค่าอื่น
รูปแบบ XAPK และ APKS
เพื่อจัดการกับความท้าทายในการแชร์ APK แบบแยก จึงได้สร้างรูปแบบคอนเทนเนอร์ เช่น XAPK และ APKS รูปแบบเหล่านี้จะรวม APK ที่แยกทั้งหมดไว้ด้วยกันเป็นไฟล์เดียวที่ดาวน์โหลดได้ เมื่อคุณพบไฟล์ XAPK อาจมีแอปที่เดิมเผยแพร่เป็น App Bundle
เครื่องมือแปลง XAPK เป็น APK ของเราสามารถช่วยคุณแยก APK พื้นฐานจากรูปแบบคอนเทนเนอร์เหล่านี้ได้ อย่างไรก็ตาม โปรดทราบว่า APK พื้นฐานเพียงอย่างเดียวอาจไม่ได้มีทรัพยากรทั้งหมดที่จำเป็นสำหรับแอปในการทำงานอย่างถูกต้องในทุกอุปกรณ์ เนื่องจากความหนาแน่นและทรัพยากรเฉพาะของ ABI อาจอยู่ใน APK ที่แยกกัน
การใช้บันเดิลทูล
Google มีเครื่องมือโอเพ่นซอร์สที่เรียกว่า bundletool ซึ่งสามารถสร้าง APK จากไฟล์ AAB ในเครื่องได้ นักพัฒนาซอฟต์แวร์สามารถใช้สิ่งนี้เพื่อสร้าง APK สากลสำหรับการทดสอบหรือการเผยแพร่ทางเลือก คำสั่งดูเหมือนว่า:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
สิ่งนี้จะสร้าง APK สากลที่มีทรัพยากรทั้งหมดสำหรับการกำหนดค่าทั้งหมด จะมีขนาดใหญ่กว่ารุ่นเฉพาะอุปกรณ์แต่ใช้งานได้กับทุกอุปกรณ์ นี่คือแนวทางที่ใช้โดย เครื่องมือแปลง AAB เป็น APK ของเรา
ผลกระทบต่อ App Store ทางเลือก
คำสั่งของ AAB ส่งผลต่อ Google Play Store เป็นหลัก ร้านค้าแอปทางเลือกและช่องทางการจัดจำหน่ายโดยตรงยังคงสามารถรับไฟล์ APK ได้ นักพัฒนาซอฟต์แวร์ที่ต้องการเผยแพร่นอก Play สามารถสร้าง APK สากลควบคู่ไปกับการอัปโหลด AAB ของตนต่อไปได้
อย่างไรก็ตาม นักพัฒนาซอฟต์แวร์บางรายสร้างเฉพาะ AAB และอาศัย Play เพียงอย่างเดียวเพื่อการจัดจำหน่าย ซึ่งหมายความว่าแอปจากนักพัฒนาเหล่านี้หาได้ยากนอกระบบนิเวศของ Play Store ที่เก็บแอปของบุคคลที่สามได้รับการดัดแปลงโดยการโฮสต์คอลเลกชัน APK แบบแยก (เป็นไฟล์ XAPK หรือ APKS) หรือโดยใช้ Bundletool เพื่อสร้าง APK สากล
โมดูลคุณสมบัติไดนามิกในทางปฏิบัติ
โมดูลฟีเจอร์ไดนามิกแสดงถึงความสามารถที่น่าสนใจที่สุดประการหนึ่งของรูปแบบ App Bundle ต่อไปนี้เป็นกรณีการใช้งานจริงบางส่วน:
- คุณสมบัติกล้อง: แอปอาจมีฟิลเตอร์ AR เป็นโมดูลไดนามิก ซึ่งจะดาวน์โหลดเมื่อผู้ใช้เข้าถึงฟีเจอร์กล้องเป็นครั้งแรกเท่านั้น
- ข้อมูลการแปล ชุดภาษา: สำหรับภาษาที่ไม่ค่อยแพร่หลายสามารถจัดส่งได้ตามความต้องการ แทนที่จะรวมเข้ากับการติดตั้งทุกครั้ง
- เกม ระดับเกม: สามารถนำเสนอเนื้อหาเพิ่มเติมตามความคืบหน้าของผู้เล่น ทำให้การดาวน์โหลดครั้งแรกมีขนาดเล็ก
- คุณสมบัติขั้นสูงของ เครื่องมือระดับมืออาชีพ: ในแอปเพิ่มประสิทธิภาพสามารถมอบให้กับผู้ใช้ที่ต้องการเท่านั้น
สำหรับผู้ใช้ หมายความว่าขนาดที่ติดตั้งของแอปอาจเพิ่มขึ้นเมื่อเวลาผ่านไปเมื่อมีการดาวน์โหลดโมดูลแบบไดนามิก นอกจากนี้ยังหมายความว่าการแชร์แอปดังกล่าวจำเป็นต้องรวมโมดูลที่ดาวน์โหลดทั้งหมด ซึ่งจะทำให้กระบวนการแยกข้อมูลซับซ้อนยิ่งขึ้น
แนวทางปฏิบัติที่ดีที่สุดสำหรับนักพัฒนา
หากคุณกำลังพัฒนาแอป Android คำแนะนำในการทำงานกับ App Bundles อย่างมีประสิทธิภาพมีดังนี้
- ทดสอบกับ Bundletool ในเครื่องเสมอ ก่อนอัพโหลดลง Play สร้าง APK เฉพาะอุปกรณ์และตรวจสอบว่าทำงานได้อย่างถูกต้อง
- ใช้แทร็กทดสอบภายในของ Play Console เพื่อตรวจสอบว่า APK แบบแยกติดตั้งและทำงานอย่างถูกต้องบนอุปกรณ์จริง
- พิจารณาจัดเตรียม APK สากล สำหรับช่องทางการจัดจำหน่ายทางเลือก หากฐานผู้ใช้ของคุณขยายออกไปนอก Play Store
- คุณสมบัติ คำนึงถึงขอบเขตของโมดูลคุณลักษณะแบบไดนามิก ที่ใช้บ่อยควรอยู่ในโมดูลฐาน ไม่ใช่โมดูลไดนามิก
- ทดสอบบนอุปกรณ์ที่มีการกำหนดค่าต่างกัน เพื่อให้แน่ใจว่าการแยกการกำหนดค่าถูกสร้างขึ้นอย่างถูกต้องและไม่มีทรัพยากรขาดหายไป
- รักษาคีย์การอัปโหลดของคุณให้ปลอดภัย ขณะที่ Google จัดการคีย์ App Signing คีย์การอัปโหลดของคุณจะตรวจสอบตัวตนของคุณในฐานะนักพัฒนาซอฟต์แวร์
อนาคตของการจัดจำหน่ายแอพ
รูปแบบ App Bundle มีการพัฒนาอย่างต่อเนื่อง Google ได้เปิดตัวฟีเจอร์ต่างๆ เช่น Play Asset Delivery สำหรับเนื้อหาเกมขนาดใหญ่, SDK Runtime สำหรับ SDK โฆษณา และการสนับสนุนที่ได้รับการปรับปรุงสำหรับการกำหนดค่า Wear OS และ Android TV แนวโน้มนี้มุ่งสู่การส่งมอบส่วนประกอบแอปตามความต้องการที่ละเอียดยิ่งขึ้น
สำหรับผู้ใช้ หมายความว่าแนวคิดเรื่องไฟล์แอปเดียวที่มีในตัวเองกำลังกลายเป็นเรื่องปกติน้อยลงสำหรับแอป Play Store การทำความเข้าใจรูปแบบต่างๆ เช่น XAPK, APKS และเครื่องมือที่ใช้งานได้จะมีความสำคัญมากขึ้นสำหรับทุกคนที่จัดการแอปนอกขั้นตอนมาตรฐานของ Play Store
เมื่อใดควรเก็บ AAB ไว้กับเมื่อใดควรสร้าง Universal APK
Android App Bundle แสดงให้เห็นถึงการเปลี่ยนแปลงขั้นพื้นฐานในวิธีการจัดแพ็กเกจและจัดส่งแอป แม้ว่าจะนำมาซึ่งประโยชน์อย่างแท้จริงในแง่ของขนาดการดาวน์โหลดและประสิทธิภาพในการจัดส่ง แต่ก็ยังทำให้เกิดความซับซ้อนสำหรับผู้ใช้ที่แชร์แอปหรือติดตั้งจากแหล่งอื่น การทำความเข้าใจวิธีการทำงานของ AAB วิธีสร้าง APK แบบแยก และเครื่องมือใดบ้างที่สามารถใช้เพื่อแปลงระหว่างรูปแบบต่างๆ จะทำให้คุณมีสิ่งที่จำเป็นในการเลือกรูปแบบที่ถูกต้องและแปลงระหว่างรูปแบบเหล่านั้นด้วยความมั่นใจ
นักพัฒนาเข้าถึง AAB เพื่อเพิ่มประสิทธิภาพวิธีการส่งมอบแอป ผู้ใช้ในชีวิตประจำวันส่วนใหญ่จะพบสิ่งนี้เฉพาะเมื่อพวกเขาพยายามติดตั้งบางอย่างบนอุปกรณ์ที่ไม่มีการเข้าถึง Play Store ไม่ว่าจะด้วยวิธีใด สิ่งที่ควรค่าแก่การจดจำนั้นเป็นเรื่องง่าย: AAB เป็นรูปแบบการเผยแพร่ ไม่ใช่รูปแบบการติดตั้ง และมีเครื่องมือที่เชื่อมช่องว่างระหว่างทั้งสอง