bundletool
คือเครื่องมือพื้นฐานที่ Android Studio หรือ Android Gradle
และ Google Play ก็ใช้เพื่อสร้าง Android App Bundle bundletool
แปลง App Bundle เป็น APK ต่างๆ สำหรับการทำให้ใช้งานได้ในอุปกรณ์
Android SDK Bundle (ASB) และ APK สร้างขึ้นด้วย bundletool
ใช่เลย
เป็นเครื่องมือบรรทัดคำสั่ง
เพื่อให้คุณสร้าง App Bundle และ
SDK รวมกลุ่มตัวคุณเองและสร้างบิลด์ฝั่งเซิร์ฟเวอร์ของ Google Play ของแอปอีกครั้ง
APK หรือ
APK ของ SDK ที่เปิดใช้รันไทม์
ดาวน์โหลดภาษา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
ในเครื่อง - อัปโหลดแพ็กเกจไปยัง Play Console ผ่าน Google Play โดยใช้แทร็กทดสอบ
ส่วนนี้จะอธิบายวิธีใช้ bundletool
เพื่อทดสอบ App Bundle ในเครื่อง
เมื่อ bundletool
สร้าง APK จาก App Bundle ของคุณจะมี APK ที่สร้างขึ้น
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 หากคุณไม่ใส่ Flag นี้
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 ชุดย่อยออก
ที่กำหนดเป้าหมายไปยังการกำหนดค่าอุปกรณ์ที่เฉพาะเจาะจง คุณสามารถใช้ 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 แทน
APK ที่ติดตั้งได้ โดยค่าเริ่มต้น bundletool จะวัดค่า
ขนาดการดาวน์โหลด APK ที่ติดตั้งได้
|
--modules=modules |
ระบุรายการโมดูลที่คั่นด้วยคอมมาในชุด APK ที่จะพิจารณา
ในการวัดค่า คำสั่ง bundletool โดยอัตโนมัติ
รวมโมดูลที่อ้างอิงสำหรับชุดที่ระบุ โดยค่าเริ่มต้น แอตทริบิวต์
จะวัดขนาดการดาวน์โหลดของโมดูลทั้งหมดที่ติดตั้งในระหว่าง
การดาวน์โหลดครั้งแรก
|
สร้าง App Bundle ที่มีทรัพยากร Dependency ของ SDK Bundle (ทดลอง)
คุณสร้าง Android App Bundle ด้วยทรัพยากร Dependency ของ Android SDK Bundle (ASB) ได้ จากบรรทัดคำสั่งและลงนามโดยใช้ jarsigner
โมดูล App Bundle แต่ละรายการจะมีไฟล์ Module Protocol Buffer (.pb
) ดังนี้
runtime_enabled_sdk_config.pb
ไฟล์นี้มีรายการ SDK
ที่โมดูล App Bundle ใช้อยู่ หากต้องการดูคำจำกัดความที่สมบูรณ์ของไฟล์นี้
โปรดดู
runtime_enabled_sdk_config.proto
หากต้องการสร้าง App Bundle ที่มีทรัพยากร Dependency ของ SDK Bundle ให้ทำตามขั้นตอนในส่วนเกี่ยวกับ
การสร้าง App Bundle โดยใช้ Bundletool และเพิ่ม
runtime_enabled_sdk_config.pb
ลงใน ZIP ของแต่ละโมดูลแอป
ที่มีโค้ดและทรัพยากรซึ่งคอมไพล์แล้ว
ฟิลด์ที่โดดเด่นในไฟล์ runtime_enabled_sdk_config.pb
มีดังนี้
สรุปใบรับรอง: ไดเจสต์ SHA-256 ของใบรับรองสำหรับคีย์ ใช้เพื่อรับรอง APK ของ SDK ซึ่งสอดคล้องกับใบรับรองใน
SdkMetadata.pb
ในรูปแบบ Android SDK Archiveรหัสแพ็กเกจทรัพยากร: รหัสแพ็กเกจที่ทรัพยากรทั้งหมดใน SDK นี้ ถูกแมปใหม่เมื่อสร้าง APK สำหรับฝัง SDK ลงในแอป ซึ่งจะช่วยเปิดใช้ความเข้ากันได้แบบย้อนหลัง
SDK หนึ่งๆ จะปรากฏในโมดูลเดียวเท่านั้น หากหลายโมดูลจำเป็นต้องใช้กัน SDK ทรัพยากร Dependency นี้ควรกรองข้อมูลที่ซ้ำกันออกแล้วและย้ายไปยังโมดูลฐาน โมดูลต่างๆ ต้องไม่ใช้ SDK เวอร์ชันที่แตกต่างกัน
สร้าง APK จาก App Bundle ที่มีทรัพยากร Dependency ของ SDK Bundle (ทดลอง)
หากต้องการสร้าง APK จาก App Bundle ให้ทำตามขั้นตอนในส่วนเกี่ยวกับ
การสร้างชุด APK จาก App Bundle
หรือส่วนที่เกี่ยวกับ
การสร้างชุด APK เฉพาะอุปกรณ์
และระบุคำสั่ง bundletool build-apks
พร้อม SDK ที่
ขึ้นอยู่กับแอปนั้นๆ SDK เหล่านี้มีให้ในรูปแบบ SDK หรือ SDK
รูปแบบที่เก็บถาวร
คุณระบุ SDK เป็นชุด SDK ได้โดยการเพิ่ม Flag --sdk-bundles
เป็น
ดังต่อไปนี้:
bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \ --output=app.apks
คุณระบุ SDK เป็น SDK ที่เก็บถาวรได้โดยการเพิ่ม Flag --sdk-archives
ดังนี้
bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \ --output=app.apks
สร้าง APK จาก App Bundle ที่มีทรัพยากร Dependency ของ SDK Bundle สำหรับอุปกรณ์ที่ไม่รองรับไลบรารี SDK
อุปกรณ์ก่อน Android 13 ไม่รองรับการติดตั้งหรือเรียกใช้ไลบรารี SDK
ในรันไทม์ของ SDK Bundletool ซ่อนความซับซ้อนของความเข้ากันได้แบบย้อนหลังและ
จะสร้าง APK เวอร์ชันต่างๆ ที่ตั้งค่าจาก App Bundle เดียวกันเมื่อคุณ
เรียกใช้ bundletool build-apks
ด้วยตัวเลือก --sdk-bundles
หรือ --sdk-archives
รูปแบบที่หลากหลายจะกำหนดเป้าหมายอุปกรณ์ที่มีความสามารถแตกต่างกัน ดังนี้
- มีเวอร์ชันสำหรับอุปกรณ์ใหม่ๆ ซึ่งมีการติดตั้ง SDK แยกต่างหาก แพ็กเกจจากแอปและ APK ของแอปไม่มีเนื้อหา SDK ใดๆ เลย
- มีตัวแปรอย่างน้อย 1 รายการสำหรับอุปกรณ์รุ่นเก่าที่เพิ่ม SDK APK ไปยัง APK ของแอปที่ตั้งค่าเป็นการแยก APK เพิ่มเติม SDK APK เป็นของแอป ใหม่ ในกรณีนี้ ระบบจะจำลองรันไทม์ของ SDK ในรันไทม์ของแอปบน อุปกรณ์
เช่นเดียวกับวิธีสร้าง APK สำหรับ App Bundle ที่ไม่มีทรัพยากร Dependency ของ SDK
bundletool extract-apks
และ bundletool install-apks
แสดงผลชุดที่กรองแล้ว
APK จากตัวแปรที่ดีที่สุดสำหรับอุปกรณ์ที่เชื่อมต่อหรืออุปกรณ์ที่ให้มา
การกำหนดค่า
สำหรับ Use Case ขั้นสูงที่คุณสนใจสร้างการแยก APK เท่านั้น
จากที่เก็บถาวร SDK ของแอปที่เจาะจงสำหรับอุปกรณ์รุ่นเก่า ให้ใช้
bundletool build-sdk-apks-for-app
ดังนี้
bundletool build-sdk-apks-for-app --app-properties=app-properties.json \ --sdk-archive=sdk.asar --output=sdk.apks
ไฟล์ app-properties
ควรมีช่องที่อธิบายไว้ใน
runtime_enabled_sdk_config.proto
นี่คือสิ่งที่ app-properties
มีลักษณะดังนี้
{
"package_name": "com.my.app",
"version_code": 1234,
"min_sdk_version": 21,
"resources_package_id": 0x7e
}
คำสั่ง bundletool build-sdk-apks-for-app
จะสร้างชุดย่อยของแอป
APK ที่สอดคล้องกับเนื้อหา SDK ในชื่อแพ็กเกจของแอป คุณสามารถ
รวม APK เหล่านี้กับ APK อื่นๆ ที่มีเนื้อหาของแอปนั้น ตัวอย่างเช่น หาก
คุณสร้างอุปกรณ์แยกกันอย่างค่อยเป็นค่อยไป และติดตั้งด้วยกันในอุปกรณ์
ที่ไม่รองรับรันไทม์ของ SDK
สร้างและทดสอบแพ็กเกจ SDK (ทดลอง)
คุณสามารถใช้ bundletool
เพื่อสร้าง ASB และทดสอบการสร้าง
ไฟล์ที่จำเป็นสำหรับการติดตั้งและเผยแพร่
สร้างแพ็กเกจ SDK
คุณสามารถสร้าง ASB จากบรรทัดคำสั่งและลงนาม โดยใช้ jarsigner
หากต้องการสร้างแพ็กเกจ SDK ให้ทำตามขั้นตอนต่อไปนี้
สร้างไฟล์ Manifest และทรัพยากรของแพ็กเกจ SDK ในรูปแบบ Proto โดยทำตามขั้นตอนเดียวกันสำหรับ App Bundle
สร้างแพ็กเกจโค้ดและทรัพยากรของ SDK ที่คอมไพล์แล้วเป็นไฟล์ ZIP พื้นฐาน เช่นเดียวกับที่คุณทำในโมดูลแอป
สร้างไฟล์
SdkModulesConfig.pb.json
และSdkBundleConfig.pb.json
ซึ่งตรงกับรูปแบบที่อธิบายไว้ใน ข้อกำหนดเฉพาะของ Android SDK Bundleสร้าง ASB ของคุณโดยใช้คำสั่ง
bundletool build-sdk-bundle
ในฐานะ ดังต่อไปนี้:
bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \ --sdk-modules-config=SdkModulesConfig.pb.json \ --modules=base.zip --output=sdk.asb
ตารางต่อไปนี้จะอธิบายการตั้งค่าสถานะและตัวเลือกต่างๆ ที่คุณตั้งค่าได้เมื่อ
โดยใช้คำสั่ง bundletool build-sdk-bundle
อย่างละเอียด
ตารางที่ 3 ตัวเลือกสำหรับ
คำสั่ง bundletool build-sdk-bundle
ตั้งค่าสถานะ | คำอธิบาย |
---|---|
--modules |
(ต้องระบุ) ไฟล์โมดูลที่คุณต้องการสร้างขั้นสุดท้าย ASB จาก |
--output |
(ต้องระบุ) เส้นทางไปยังตำแหน่งที่คุณต้องการสร้าง ASB |
--sdk-modules-config |
(ต้องระบุ) เส้นทางไปยังไฟล์ JSON ที่อธิบายการกำหนดค่า ของโมดูล SDK หากต้องการดูวิธีจัดรูปแบบไฟล์ JSON โปรดดู ข้อมูลจำเพาะของ Android SDK Bundle |
--sdk-bundle-config |
เส้นทางไปยังไฟล์ JSON ที่อธิบายการกำหนดค่า ของแพ็กเกจ SDK หากต้องการดูวิธีจัดรูปแบบไฟล์ JSON โปรดดู ข้อมูลจำเพาะของ Android SDK Bundle |
--metadata-file |
ไฟล์ที่จะรวมข้อมูลเมตาสำหรับ ASB
รูปแบบของค่าแฟล็กคือ
<bundle-path>:<physical-file> ,
โดยที่ <bundle-path> หมายถึงตำแหน่งไฟล์ภายใน
ไดเรกทอรีข้อมูลเมตาของแพ็กเกจ SDK และ <physical-file> คือ
ไฟล์ที่มีอยู่ซึ่งมีข้อมูลดิบที่ควรจัดเก็บ การตั้งค่าสถานะอาจเป็น
ซ้ำกัน
|
--overwrite |
หากมีการตั้งค่า ตัวเลือกนี้จะเขียนทับเอาต์พุตที่มีอยู่ก่อนหน้า |
สร้าง APK จากแพ็กเกจ SDK
หลังจากที่คุณสร้าง ASB แล้ว คุณสามารถทดสอบ Bundle SDK ในเครื่องได้โดย
การสร้าง APK โดยใช้คำสั่ง bundletool build-sdk-apks
ตามที่แสดงใน
โค้ดต่อไปนี้
bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks
เมื่อ bundletool
สร้าง APK จากแพ็กเกจ SDK ของคุณ เครื่องมือจะมี
APKS ในคอนเทนเนอร์ที่เรียกว่าที่เก็บถาวรชุด APK ซึ่งใช้ไฟล์ .apks
ส่วนขยาย bundletool
สร้าง APK แบบสแตนด์อโลนรายการเดียวจากแพ็กเกจ SDK
ที่กำหนดเป้าหมายไปยังการกำหนดค่าอุปกรณ์ทั้งหมด
หากต้องการทำให้ ASB ใช้งานได้ในอุปกรณ์ คุณต้องระบุข้อมูล ข้อมูลการลงชื่อ ดังที่ปรากฏในคำสั่งต่อไปนี้
bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks \ --ks=keystore.jks \ --ks-pass=file:/keystore.pwd \ --ks-key-alias=KeyAlias \ --key-pass=file:/key.pwd
ตารางต่อไปนี้จะอธิบายการตั้งค่าสถานะและตัวเลือกต่างๆ ที่คุณตั้งค่าได้เมื่อ
โดยใช้คำสั่ง bundletool build-sdk-apks
อย่างละเอียด
ตาราง 4 ตัวเลือกสำหรับ
คำสั่ง bundletool build-sdk-apks
ตั้งค่าสถานะ | คำอธิบาย |
---|---|
--sdk-bundle |
(ต้องระบุ) เส้นทางไปยังแพ็กเกจ SDK ต้องมีส่วนขยาย
.asb
|
--output |
(จำเป็น) โดยค่าเริ่มต้น เส้นทางที่คุณต้องการเก็บชุดไฟล์ APK
ให้สร้างขึ้น อีกทางเลือกหนึ่งคือ หากคุณใช้
--output-format=DIRECTORY ,
นี่คือเส้นทางไปยังไดเรกทอรีที่คุณต้องการจัดเก็บ APK ที่สร้างขึ้น
|
--ks |
เส้นทางไปยังคีย์สโตร์ที่คุณต้องการใช้เพื่อลงชื่อ APK ที่สร้างขึ้น |
--ks-key-alias |
ชื่อแทนของคีย์ที่จะใช้ในคีย์สโตร์เพื่อลงนาม APK ที่สร้างขึ้น |
--key-pass |
รหัสผ่านของคีย์ในคีย์สโตร์ที่จะใช้ลงชื่อ APK หากส่งรหัสผ่านเป็นข้อความธรรมดา คุณต้องใส่คำนำหน้าค่า
ด้วย หากไม่ได้ตั้งค่า Flag นี้ไว้คีย์สโตร์ มีการลองใช้รหัสผ่าน หากไม่สำเร็จ เทอร์มินัลบรรทัดคำสั่งจะแสดงข้อความให้คุณ รหัสผ่าน |
--ks-pass |
รหัสผ่านของคีย์สโตร์ที่จะใช้รับรอง APK ที่สร้างขึ้น หากส่งรหัสผ่านเป็นข้อความธรรมดา คุณต้องใส่คำนำหน้าค่า
ด้วย หากไม่ได้ตั้งค่าแฟล็กนี้ เทอร์มินัลบรรทัดคำสั่งจะแจ้งให้ป้อนรหัสผ่าน |
--aapt2 |
เส้นทางไปยังไบนารี AAPT2 ที่จะใช้ |
--output-format |
รูปแบบเอาต์พุตสำหรับ APK ที่สร้างขึ้น โดยค่าเริ่มต้น ตัวเลือกนี้จะมีการตั้งค่าเป็น
APK_SET ซึ่งเอาต์พุต APK ไปยังที่เก็บถาวรของชุด APK ที่
สร้าง แล้ว หากตั้งค่าเป็น DIRECTORY ก็จะเอาต์พุต APK ไปยัง
ไดเรกทอรีที่ระบุโดย --output |
--verbose |
หากตั้งค่าไว้ ตัวเลือกนี้จะพิมพ์ข้อมูลเพิ่มเติมเกี่ยวกับการดำเนินการตามคำสั่งใน เอาต์พุตมาตรฐาน |
--version-code |
รหัสเวอร์ชันของ SDK นี่คือรหัสเวอร์ชันที่แพลตฟอร์ม Android ใช้ ให้ติดตั้ง APK ไม่ใช่เวอร์ชัน SDK สามารถตั้งค่าตัวเลือกนี้เป็น มูลค่าที่กำหนดเอง หากไม่ได้ตั้งค่าไว้ ค่าเริ่มต้นจะเป็น 0 |
--overwrite |
หากมีการตั้งค่า ตัวเลือกนี้จะเขียนทับเอาต์พุตที่มีอยู่ก่อนหน้า |
ติดตั้งใช้งาน แยกข้อมูล และวัดขนาดของ SDK APK
คุณสามารถทำตามขั้นตอนเดียวกับที่ใช้สำหรับแอปเพื่อติดตั้งใช้งาน APK ไปยังอุปกรณ์ที่เชื่อมต่อ ดึงข้อมูลเฉพาะอุปกรณ์ APK จากชุด APK ที่มีอยู่และวัดค่า ขนาดของ APK ในการดาวน์โหลดชุด APK
สร้างที่เก็บถาวร SDK จากแพ็กเกจ SDK
หลังจากที่คุณอัปโหลด ASB ไปยัง
ช่องทางการเผยแพร่สำหรับ
ใน Google Play นั่นคือ ASB ถูกเปลี่ยนให้เป็น Android SDK
เก็บ (.asar
) เพื่อเผยแพร่ไปยังนักพัฒนาแอปผ่าน Maven สำหรับข้อมูลเพิ่มเติม
รายละเอียดเกี่ยวกับรูปแบบ ดูที่ส่วน เกี่ยวกับ
ข้อกําหนดเกี่ยวกับรูปแบบที่เก็บถาวรของ SDK
หลังจากที่คุณสร้าง ASB แล้ว คุณสามารถทดสอบการสร้าง
Android SDK Archive ภายในเครื่องโดยใช้คำสั่ง bundletool build-sdk-asar
ในฐานะ
ที่แสดงในรหัสต่อไปนี้
bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \ --apk-signing-key-certificate=keycert.txt
ตารางต่อไปนี้จะอธิบายการตั้งค่าสถานะและตัวเลือกต่างๆ ที่คุณตั้งค่าได้เมื่อ
โดยใช้คำสั่ง bundletool build-sdk-asar
อย่างละเอียด
ตาราง 5 ตัวเลือกสำหรับ
คำสั่ง bundletool build-sdk-asar
ตั้งค่าสถานะ | คำอธิบาย |
---|---|
--apk-signing-key-certificate |
(ต้องระบุ) เส้นทางไปยังใบรับรองการลงนาม SDK APK นี่คือ
ใบรับรองที่สอดคล้องกับคีย์ที่คุณใช้รับรอง APK ใน
คำสั่ง build-sdk-apks
|
--output |
(ต้องระบุ) เส้นทางที่คุณต้องการใช้ไฟล์ .asar
สร้าง แล้ว
|
--sdk-bundle |
(ต้องระบุ) เส้นทางไปยังแพ็กเกจ SDK ต้องมีส่วนขยาย
.asb
|
--overwrite |
หากมีการตั้งค่า ตัวเลือกนี้จะเขียนทับเอาต์พุตที่มีอยู่ก่อนหน้า |
รูปแบบ SDK ที่เปิดใช้รันไทม์ (ทดลอง)
SDK ที่เปิดใช้รันไทม์มีรูปแบบไฟล์ Android 2 รูปแบบดังนี้
- Android SDK Bundle (
.asb
) ที่ใช้เผยแพร่ SDK ที่เปิดใช้รันไทม์ไปยัง App Store - Android SDK Archive (
.asar
) ใช้เพื่อแจกจ่าย SDK ที่เปิดใช้รันไทม์ใน Maven
รูปแบบ Android SDK Bundle
SDK Bundle คือรูปแบบการเผยแพร่ของ SDK ที่เปิดใช้รันไทม์ ซึ่งมีทั้งหมด โค้ดและทรัพยากร SDK ซึ่งรวมถึงโค้ดจากไลบรารีทั้งหมดที่ SDK ใหม่ แล้วแต่กรณี แต่ไม่รวมโค้ดและทรัพยากรของรายการอื่นๆ ที่เปิดใช้รันไทม์ SDK ที่ SDK ใช้อยู่
Android SDK Bundle (ASB) คือไฟล์ ZIP ที่มีการรับรองพร้อมส่วนขยาย
.asb
โค้ดและทรัพยากรของ SDK ได้รับการจัดระเบียบให้คล้ายกับสิ่งที่คุณต้องทำ
ค้นหาใน APK นอกจากนี้ ASB ยังมีไฟล์การกำหนดค่าอีกจำนวนมากที่ช่วยให้
สร้าง APK ที่ติดตั้งได้
![](https://developer.android.com/static/studio/images/command-line/asb-format.png?hl=th)
รายการต่อไปนี้คือรายละเอียดของไฟล์ ASB บางส่วนใน รายละเอียด:
SdkBundleConfig.pb
: ไฟล์การกำหนดค่าในรูปแบบ Proto ที่มีองค์ประกอบ รายการ SDK ที่เปิดใช้รันไทม์ซึ่ง SDK ของคุณต้องใช้ แบบเต็ม โปรดดูคำจำกัดความsdk_bundle_config.proto
modules.resm
: ไฟล์ ZIP ที่มีข้อมูลทั้งหมดที่จำเป็นในการสร้าง APK จาก SDKSdkModulesConfig.pb
: ไฟล์การกำหนดค่าในรูปแบบ Proto ไฟล์นี้ มีชื่อ SDK, เวอร์ชัน และชื่อคลาสของจุดแรกเข้า SDK สำหรับ เฟรมเวิร์ก (SandboxedSdkProvider
) ดูคำจำกัดความทั้งหมดได้ที่sdk_modules_config.proto
base/
: โมดูลเดียวที่มีโค้ด SDK และทรัพยากรmanifest/
: ไฟล์ Manifest ของ SDK ในรูปแบบ Protodex/
: โค้ดที่คอมไพล์ในรูปแบบ DEX คุณสามารถส่งไฟล์ DEX ได้หลายไฟล์res/
,lib/
,assets/
: ไดเรกทอรีเหล่านี้เหมือนกับไดเรกทอรีใน APK ทั่วไป เส้นทางในไดเรกทอรีเหล่านี้จะยังคงอยู่เมื่อสร้าง APK ของ SDKroot/
: ไดเรกทอรีนี้จะเก็บไฟล์ที่ย้ายไปยังรูทในภายหลัง SDK APK ตัวอย่างเช่น อาจรวมทรัพยากรแบบ Java ที่ SDK ของคุณโหลดโดยใช้Class.getResource()
เส้นทางภายในไดเรกทอรีนี้ก็ยังคงอยู่ด้วย
BUNDLE-METADATA
: ไดเรกทอรีนี้มีไฟล์ข้อมูลเมตาที่มี ซึ่งเป็นประโยชน์ต่อเครื่องมือหรือ App Store ไฟล์ข้อมูลเมตาดังกล่าวอาจ มีการแมป ProGuard และรายการไฟล์ DEX ของ SDK ทั้งหมด ไฟล์ในไดเรกทอรีนี้ไม่ได้รวมอยู่ใน APK ของ SDK
รูปแบบ Android SDK Archive
Android SDK Archive คือรูปแบบการจัดจำหน่ายของ SDK ที่เปิดใช้รันไทม์ใน
มาเวน เป็นไฟล์ ZIP ที่มีนามสกุลไฟล์ .asar
ไฟล์
มีข้อมูลทั้งหมดที่เครื่องมือสร้างแอปจำเป็นต้องใช้ในการสร้าง
Android App Bundle ที่ต้องใช้ SDK ที่เปิดใช้รันไทม์
![](https://developer.android.com/static/studio/images/command-line/asar-format.png?hl=th)
รายการต่อไปนี้จะอธิบายถึงไฟล์ Android SDK Archive บางส่วนในส่วนอื่นๆ รายละเอียด:
SdkMetadata.pb
: ไฟล์การกำหนดค่าในรูปแบบ Proto ที่มีองค์ประกอบ ชื่อ เวอร์ชัน และไดเจสต์ของใบรับรองสำหรับคีย์ที่ใช้ในการลงนาม APK ที่สร้างขึ้นสำหรับ SDK นี้ ดูคำจำกัดความทั้งหมดได้ที่sdk_metadata.proto
modules.resm
: ไฟล์ ZIP ที่มีข้อมูลทั้งหมดที่จำเป็นในการสร้าง APK จาก SDK ซึ่งเหมือนกับไฟล์.resm
ใน Android SDK BundleAndroidManifest.xml
: ไฟล์ Manifest ของ SDK ในรูปแบบ XML ข้อความ
แหล่งข้อมูลเพิ่มเติม
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ bundletool
โปรดดู
App Bundle: การทดสอบ Bundle ด้วย Bundletool และ Play Console