bundletool เป็นเครื่องมือพื้นฐานที่ Android Studio, ปลั๊กอิน Android Gradle
และ Google Play ใช้เพื่อสร้าง Android App Bundle bundletool
สามารถแปลง App Bundle เป็น APK ต่างๆ ที่ติดตั้งใช้งานในอุปกรณ์ได้
Android SDK Bundle (ASB) และ APK ของ ASB สร้างขึ้นด้วย bundletool นอกจากนี้ ยังมีให้บริการเป็นเครื่องมือบรรทัดคำสั่งด้วย คุณจึงสร้าง App Bundle และ
SDK Bundle ด้วยตนเอง และสร้าง APK ของแอปหรือ APK ของ SDK ที่เปิดใช้รันไทม์ที่ Google Play สร้างฝั่งเซิร์ฟเวอร์ขึ้นมาใหม่ได้
ดาวน์โหลดภาษาbundletool
หากยังไม่ได้ดาวน์โหลด ให้ดาวน์โหลด bundletool จาก
ที่เก็บ GitHub
สร้างและทดสอบ App Bundle
คุณใช้ Android Studio หรือbundletoolเครื่องมือบรรทัดคำสั่งเพื่อสร้าง
Android App Bundle แล้วทดสอบการสร้าง APK จาก App Bundle นี้ได้
สร้าง App Bundle
ใช้ Android Studio และปลั๊กอิน Android Gradle เพื่อสร้างและลงนามใน Android App Bundle
อย่างไรก็ตาม หากใช้ IDE ไม่ได้ เช่น เนื่องจากคุณใช้เซิร์ฟเวอร์บิลด์ต่อเนื่อง คุณก็สร้าง App Bundle จากบรรทัดคำสั่งและลงนามโดยใช้ jarsigner ได้เช่นกัน
ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้าง App Bundle ด้วย bundletool
ได้ที่
สร้าง App Bundle โดยใช้ Bundletool
สร้างชุด APK จาก App Bundle
หลังจากสร้าง Android App Bundle แล้ว ให้ทดสอบวิธีที่ Google Play ใช้เพื่อสร้าง APK และลักษณะการทำงานของ APK เหล่านั้นเมื่อนำไปใช้งานในอุปกรณ์
คุณทดสอบ App Bundle ได้ 2 วิธีดังนี้
- ใช้
bundletoolเครื่องมือบรรทัดคำสั่งในเครื่อง - อัปโหลด Bundle ไปยัง Play Console ผ่าน Google Play โดยใช้แทร็กการทดสอบ
ส่วนนี้จะอธิบายวิธีใช้ bundletool เพื่อทดสอบ App Bundle ในเครื่อง
เมื่อ bundletool สร้าง APK จาก App Bundle ของคุณ ระบบจะรวม APK ที่สร้างขึ้นไว้ในคอนเทนเนอร์ที่เรียกว่าที่เก็บถาวรของชุด APK ซึ่งใช้ส่วนขยายไฟล์ .apks
หากต้องการสร้างชุด APK สำหรับการกำหนดค่าอุปกรณ์ทั้งหมดที่แอปของคุณ
รองรับจาก App Bundle ให้ใช้คำสั่ง bundletool build-apks ดังที่แสดง
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
หากต้องการติดตั้ง APK ในอุปกรณ์ คุณต้องระบุ
ข้อมูลการลงนามของแอปด้วย ดังที่แสดงในคำสั่งต่อไปนี้ หากคุณไม่ได้ระบุข้อมูลการลงนาม bundletool จะพยายามลงนาม APK ด้วยคีย์การแก้ไขข้อบกพร่อง
ให้คุณ
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks --ks=/MyApp/keystore.jks --ks-pass=file:/MyApp/keystore.pwd --ks-key-alias=MyKeyAlias --key-pass=file:/MyApp/key.pwd
ตารางต่อไปนี้อธิบายรายละเอียดเพิ่มเติมเกี่ยวกับแฟล็กและตัวเลือกต่างๆ ที่คุณตั้งค่าได้เมื่อ
ใช้คำสั่ง bundletool build-apks
ตารางที่ 1 ตัวเลือกสำหรับคำสั่ง
bundletool build-apks
| ตั้งค่าสถานะ | คำอธิบาย |
|---|---|
--bundle=path |
(ต้องระบุ) ระบุเส้นทางไปยัง App Bundle ที่คุณสร้างโดยใช้ Android Studio ดูข้อมูลเพิ่มเติมได้ที่ สร้างโปรเจ็กต์ |
--output=path |
(ต้องระบุ) ระบุชื่อของเอาต์พุต
.apks ซึ่งมีอาร์ติแฟกต์ APK ทั้งหมดสำหรับ
แอปของคุณ หากต้องการทดสอบอาร์ติแฟกต์ในไฟล์นี้บนอุปกรณ์ ให้ทำตามขั้นตอนใน
ส่วนเกี่ยวกับวิธีติดตั้งใช้งาน APK
ในอุปกรณ์ที่เชื่อมต่อ
|
--overwrite |
เขียนทับไฟล์เอาต์พุตที่มีอยู่ด้วย
เส้นทางที่คุณระบุโดยใช้ตัวเลือก --output หากคุณ
ไม่ใส่แฟล็กนี้และมีไฟล์เอาต์พุตอยู่แล้ว คุณจะได้รับ
ข้อผิดพลาดในการสร้าง
|
--aapt2=path |
ระบุเส้นทางที่กำหนดเองไปยัง AAPT2
โดยค่าเริ่มต้น bundletool จะมี AAPT2 เวอร์ชันของตัวเอง
|
--ks=path |
(ไม่บังคับ) ระบุเส้นทางไปยังคีย์สโตร์การติดตั้งใช้งานที่ใช้เพื่อ
ลงนามใน APK หากไม่รวมแฟล็กนี้
bundletool จะพยายามลงนาม APK ด้วยการลงนามแก้ไขข้อบกพร่อง
คีย์
|
--ks-pass=pass:password หรือ --ks-pass=file:/path/to/file |
ระบุรหัสผ่านคีย์สโตร์ หากคุณ
ระบุรหัสผ่านเป็นข้อความธรรมดา ให้ระบุด้วย pass:
หากส่งเส้นทางไปยังไฟล์ที่มีรหัสผ่าน ให้ระบุเส้นทางด้วย file: หากคุณระบุคลังคีย์โดยใช้
แฟล็ก --ks โดยไม่ได้ระบุ --ks-pass
bundletool จะแจ้งให้คุณป้อนรหัสผ่านจากบรรทัดคำสั่ง
|
--ks-key-alias=alias |
ระบุนามแฝงของคีย์การลงนามที่ต้องการใช้ |
--key-pass=pass:password หรือ --key-pass=file:/path/to/file |
ระบุรหัสผ่านสำหรับคีย์การลงนาม หากคุณ
ระบุรหัสผ่านเป็นข้อความธรรมดา ให้ระบุด้วย pass:
หากส่งเส้นทางไปยังไฟล์ที่มีรหัสผ่าน ให้ระบุเส้นทางด้วย file: หากรหัสผ่านนี้เหมือนกับรหัสผ่าน สำหรับที่เก็บคีย์เอง คุณก็ไม่ต้องระบุแฟล็กนี้ |
--connected-device |
สั่งให้ bundletool สร้าง APK ที่กำหนดค่าของอุปกรณ์ที่เชื่อมต่อเป็นเป้าหมาย หากไม่ใส่ Flag นี้
bundletool จะสร้าง APK สำหรับการกำหนดค่าอุปกรณ์ทั้งหมดที่แอปของคุณรองรับ
|
--device-id=serial-number |
หากมีอุปกรณ์ที่เชื่อมต่อมากกว่า 1 เครื่อง ให้ใช้แฟล็กนี้เพื่อระบุ รหัสซีเรียลของอุปกรณ์ที่ต้องการติดตั้งใช้งานแอป |
--device-spec=spec_json |
ระบุเส้นทางไปยังไฟล์
.json ที่ระบุการกำหนดค่าอุปกรณ์ที่คุณต้องการ
กำหนดเป้าหมาย ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับวิธี
สร้างและใช้ไฟล์ JSON ของข้อกําหนดของอุปกรณ์
|
--mode=universal |
ตั้งค่าโหมดเป็น universal ใช้ตัวเลือกนี้หากต้องการ
bundletool สร้าง APK เดียวที่มีโค้ดและทรัพยากรทั้งหมดของ
แอป เพื่อให้ APK เข้ากันได้กับการกำหนดค่าอุปกรณ์ทั้งหมดที่
แอปของคุณรองรับ
หมายเหตุ: โปรดทราบว่า APK เหล่านี้มีขนาดใหญ่กว่า APK ที่เพิ่มประสิทธิภาพ สำหรับการกำหนดค่าอุปกรณ์ที่เฉพาะเจาะจง อย่างไรก็ตาม คุณจะแชร์ กับผู้ทดสอบภายในได้ง่ายกว่า เช่น หากต้องการทดสอบแอปในการกำหนดค่าอุปกรณ์หลายแบบ |
--local-testing
|
เปิดใช้ App Bundle สำหรับการทดสอบในเครื่อง
การทดสอบในเครื่องช่วยให้คุณทดสอบแบบวนซ้ำได้อย่างรวดเร็วโดยไม่ต้องอัปโหลดไปยังเซิร์ฟเวอร์ของ Google Play
ดูตัวอย่างวิธีทดสอบการติดตั้งโมดูลโดยใช้แฟล็ก
|
นำ APK ไปใช้ในอุปกรณ์ที่เชื่อมต่อ
หลังจากสร้างชุด APK แล้ว bundletool จะสามารถติดตั้งใช้งานชุดค่าผสม APK ที่ถูกต้องจากชุดนั้นไปยังอุปกรณ์ที่เชื่อมต่อได้
เช่น หากคุณมีอุปกรณ์ที่เชื่อมต่อซึ่งใช้ Android 5.0 (API ระดับ 21) ขึ้นไป bundletool จะพุช APK พื้นฐาน, APK โมดูลฟีเจอร์ และ APK การกำหนดค่าที่จำเป็นต่อการเรียกใช้แอปในอุปกรณ์นั้น หรือหากอุปกรณ์ที่เชื่อมต่อใช้ Android 4.4 (API ระดับ 20) หรือต่ำกว่า
bundletool จะค้นหา APK หลายรายการที่เข้ากันได้เพื่อติดตั้งใช้งานในอุปกรณ์
หากต้องการทําให้แอปใช้งานได้จากชุด APK ให้ใช้คําสั่ง install-apks และระบุ
เส้นทางของชุด APK โดยใช้
แฟล็ก --apks=/path/to/apks ดังที่แสดงในคําสั่งต่อไปนี้ หากคุณเชื่อมต่ออุปกรณ์หลายเครื่อง
ให้ระบุอุปกรณ์เป้าหมายโดยเพิ่มแฟล็ก
--device-id=serial-id
bundletool install-apks --apks=/MyApp/my_app.apks
สร้างชุด APK เฉพาะอุปกรณ์
หากไม่ต้องการสร้างชุด APK สำหรับการกำหนดค่าอุปกรณ์ทั้งหมดที่แอป
รองรับ คุณสามารถสร้าง APK ที่กำหนดเป้าหมายเป็นการกำหนดค่าของอุปกรณ์ที่เชื่อมต่อเท่านั้น
โดยใช้ตัวเลือก --connected-device ดังที่แสดงในคำสั่งต่อไปนี้
หากเชื่อมต่ออุปกรณ์หลายเครื่อง ให้ระบุอุปกรณ์เป้าหมายโดยใส่--device-id=serial-idแฟล็ก
bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
สร้างและใช้ไฟล์ JSON ของข้อกำหนดอุปกรณ์
bundletool สามารถสร้างชุด APK ที่กำหนดเป้าหมายเป็นอุปกรณ์
ที่กำหนดค่าโดยใช้ไฟล์ JSON หากต้องการสร้างไฟล์ JSON สำหรับ
อุปกรณ์ที่เชื่อมต่อเป็นครั้งแรก ให้เรียกใช้คำสั่งต่อไปนี้
bundletool get-device-spec --output=/tmp/device-spec.json
bundletool จะสร้างไฟล์ JSON สำหรับอุปกรณ์ของคุณในไดเรกทอรีของเครื่องมือ จากนั้นคุณจะส่งไฟล์ไปยัง bundletool เพื่อสร้างชุด APK ที่กำหนดเป้าหมายเฉพาะการกำหนดค่าที่อธิบายไว้ในไฟล์ JSON นั้นได้ ดังนี้
bundletool build-apks --device-spec=/MyApp/pixel2.json --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
สร้าง JSON ของข้อกำหนดอุปกรณ์ด้วยตนเอง
หากไม่มีสิทธิ์เข้าถึงอุปกรณ์ที่คุณต้องการสร้างชุด APK ที่กำหนดเป้าหมาย เช่น หากต้องการลองใช้แอปกับอุปกรณ์ที่คุณไม่มี คุณสามารถสร้างไฟล์ JSON ด้วยตนเองโดยใช้รูปแบบต่อไปนี้
{
"supportedAbis": ["arm64-v8a", "armeabi-v7a"],
"supportedLocales": ["en", "fr"],
"screenDensity": 640,
"sdkVersion": 27
}
จากนั้นคุณจะส่ง JSON นี้ไปยังคำสั่ง bundle extract-apks ได้ตามที่อธิบายไว้
ในส่วนก่อนหน้า
แยก APK เฉพาะอุปกรณ์จากชุด APK ที่มีอยู่
หากมีชุด APK อยู่แล้วและต้องการแยกชุดย่อยของ APK ออกจากชุด APK นั้น
ซึ่งกำหนดเป้าหมายเป็นการกำหนดค่าอุปกรณ์ที่เฉพาะเจาะจง คุณสามารถใช้คำสั่ง extract-apks
และระบุ JSON ของข้อกำหนดอุปกรณ์ได้ดังนี้
bundletool extract-apks --apks=/MyApp/my_existing_APK_set.apks --output-dir=/MyApp/my_pixel2_APK_set.apks --device-spec=/MyApp/bundletool/pixel2.json
วัดขนาดการดาวน์โหลดโดยประมาณของ APK ในชุด APK
หากต้องการวัดขนาดการดาวน์โหลดโดยประมาณของ APK ในชุด APK ตามที่จะแสดงแบบบีบอัดผ่านสาย ให้ใช้คำสั่ง get-size total
bundletool get-size total --apks=/MyApp/my_app.apks
คุณสามารถแก้ไขลักษณะการทำงานของคำสั่ง get-size total ได้โดยใช้แฟล็กต่อไปนี้
ตารางที่ 2 ตัวเลือกสำหรับคำสั่ง
get-size total
| ตั้งค่าสถานะ | คำอธิบาย |
|---|---|
--apks=path |
(ต้องระบุ) ระบุเส้นทางไปยังไฟล์ชุด APK ที่มีอยู่ ซึ่งกำลังวัดขนาดการดาวน์โหลด |
--device-spec=path |
ระบุเส้นทางไปยังไฟล์ข้อมูลจำเพาะของอุปกรณ์ (จาก
get-device-spec หรือสร้างขึ้นด้วยตนเอง) ที่จะใช้สำหรับการจับคู่
คุณระบุเส้นทางบางส่วนเพื่อประเมินชุดการกำหนดค่าได้
|
--dimensions=dimensions
| ระบุขนาดที่ใช้เมื่อคำนวณค่าประมาณขนาด ยอมรับ
รายการที่คั่นด้วยคอมมาของ SDK, ABI,
SCREEN_DENSITY และ LANGUAGE หากต้องการวัดใน
ทุกมิติข้อมูล ให้ระบุ ALL
|
--instant |
วัดขนาดการดาวน์โหลดของ APK ที่เปิดใช้ Instant App แทน
APK ที่ติดตั้งได้ โดยค่าเริ่มต้น bundletool จะวัด
ขนาดการดาวน์โหลด APK ที่ติดตั้งได้
|
--modules=modules |
ระบุรายการโมดูลที่คั่นด้วยคอมมาในชุด APK ที่จะพิจารณา
ในการวัดผล คำสั่ง bundletool จะรวมโมดูลที่ขึ้นต่อกันสำหรับชุดที่ระบุโดยอัตโนมัติ
โดยค่าเริ่มต้น คำสั่ง
จะวัดขนาดการดาวน์โหลดของโมดูลทั้งหมดที่ติดตั้งในระหว่างการดาวน์โหลดครั้งแรก
|
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ bundletool ได้ที่วิดีโอ
App Bundle: การทดสอบ Bundle ด้วย Bundletool และ Play Console