ทดลองทำ Android App Bundles ลง Play Store เพื่อแอปที่เบากว่า
เปลี่ยนจาก build APK เป็น AAB จะเป็นยังไงบ้างนะ
ก่อนอื่นนั้น แอปเราต้องเป็น API level 28 แล้วนะ เพื่อความปลอดภัยและประสิทธิภาพที่ดีขึ้น ซึ่งแอปใหม่ก็ต้องเป็น 28 ตั้งแต่เดือนสิงหาคม ส่วนแอปที่มีอยู่ใน store นั้นต้องอัพเดตก่อนเดือนกันยายนนะเออ
และอย่าลืมอัพแอปให้รองรับ 64-bits ด้วยน้าาาา
และแน่นอนนั้น แอปเราก็ควร build เป็น App Bundle ด้วยนะเออ เพื่อให้ user download มาแล้วไม่ต้องหนักตั้งแต่ตอน download ยัน update version ใหม่เลยจ้า
งั้นเรามาเริ่มกันดีกว่า
ขั้นตอนในการทำ App Bundle
จาก document เราจะมีสรุปขั้นตอนทั้งหมดเพื่อ checklist กันก่อนเลยจ้า แล้วจะมาเจาะบางอันนะ
- Android Studio ที่มีติดเครื่องนั้น version 3.2 ขึ้นไปจ้า
- แอปเราต้อง support สิ่งที่เรียกว่า Dynamic Delivery ที่มี module ทั้งหมด resource ต่างๆ พวก config ทั้งหลาย เอาเป็นว่าทุกสิ่งที่ประกอบร่างเป็นแอปเรา
- build App Bundle
- test App Bundle ที่เราเพิ่ง build ไป : มีทั้งใช้ bundletool ใน local ส่งลิ้งค์ให้ในทีมเอาไปเทส ไปจนถึง build แบบ beta/alpha/internal test
- ทำ app signing ซะ
- อัพ App Bundle ของเราเข้าสู่ Play Console
Dynamic Delivery คืออัลไล (อะไร)
นั่นสิ 555
ลองดูภาพนี้กันเถอะ
เดิมที่เป็น APK คือยัดทุกสิ่งอย่างที่มีอยู่ ในแอปเรา ใส่ไปในเครื่อง user
สมมุติเครื่องนี้ เป็น CPU arm64bit หน้าจอขนาด xxhdpi และตั้งค่าเครื่องเป็นภาษาฝรั่งเศส คอนเซปของเจ้า Dynamic Delivery คือ จะหยิบเฉพาะที่เครื่องนั้นต้องการใช้เท่านั้น จะไม่หยิบทั้งหมดเหมือนของ APK ที่ผ่านมา ซึ่งเจ้า App Bundle จะช่วย generate และหยิบมาใส่เครื่องให้เรา :D จากนั้นฝั่ง Play Store จะเอาเจ้าก้อน bundle ไปแปลงเป็น APK เพื่อลงแอปใน device นั้นๆ
พอเข้าใจคอนเซปแล้ว ทำไงต่ออ่ะ
โครงสร้าง APK จาก bundle ที่ว่านั้น โดยรวมจะมี 2 ส่วนใหญ่ๆ คือ
- Base APK พวกโค้ดที่เราเขียนกันทั้งหลาย
- Configuration APKs คือ ส่วนที่เราจะ config ในส่วนของแต่ละ device ว่าจะหยิบอันไหนมาบ้าง มีเฉพาะ native libraries และพวก resource ก็จะมีส่วนของ Screen density, CPU architecture (abi), และ Locale (language) แบบรูปนี้
- Dynamic feature APKs อันนี้ optional ประมาณว่าบาง feature ที่ยังไม่ใช้ก็จะไม่โหลดมา จะโหลดมาเมื่อจะใช้
เข้าไปตั้งค่าใน build.gradle ของ module app เป็นการบอกว่า เราให้นาย split bundle ได้นะ ดังนี้
android {
...
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
จริงๆเขาบอกว่าในอนาคตไม่ต้องใส่ก็ได้นะ เพราะค่า default มันเป็น true อยู่แล้ว ใส่เพื่อ make sure เฉยๆ ตึ้งโป๊ะ
วิธีการ build App Bundles
ไปที่ Build > Build Bundle(s) /APK(s) -> Build Bundle(s) ซึ่งก็จะเหมือน build APK ปกติธรรมดาถ้าเราเห็น process ภายนอก
ผลที่ได้จะได้ไฟล์ app.aab ที่ app -> build -> output -> bundle -> {productFlavour} นั่นเอง แต่แน่นอนว่ามันอาจจะไม่ผ่านตรง signing แน่ๆ
ทำ App Signing เพื่อการอัพแอปลง Play Store ที่ Play Console
ในที่นี้ลองอัพลง Internal Test กันก่อนนะ ถ้าลองโยน aab ลงไป upload เลยตรงๆ จะพบว่า
เลื่อนไปบนๆจะเห็นสิ่งนี้
ถ้าเข้าไปอ่าน document จะเห็นว่า
ขั้นตอนในการทำ App Signing แบบไวๆ สำหรับมีแอปลง store มาแล้ว ก่อนที่จะอัพ App Bundle ลงไป
1) ไปที่ Play Console เลือก Release Management -> App signing หน้าตาจะเป็นจะอี้
2) ไม่ต้องงงว่าทำไมก้อปรูปเดิมมา เพราะเปิดเข้าไปจะเจอแบบนี้จ้า มีสามทาง ไปทางไหนดีจ๊ะพี่จ๋า
ทั้งสามวิธีนั้น output ที่ได้คือ App Signing Private Key เหมือนกัน
ลองวิธีแรกแล้วกัน ก่อนอื่นไปที่ Android Studio ไปที่ Build -> Generate Signed Bundle/APK จากนั้นเลือก Android App Bundle แล้วก็จะเจอหน้านี้ เอ๊ะ เราต้องสร้างใหม่ใช่ไหมนะ พอผ่านตรงนี้กด Next จะถามว่า Buld Variants ไหน จากนั้นกด Finish
เมื่อทำทุกอย่างเรียบร้อยเราจะได้ไฟล์ .aab
มา อยู่ที่ app -> build -> output -> bundle -> {app_flavour} และได้ไฟล์ private_key.pepk
มาด้วย (เพราะเราติ๊กบอกว่าให้ export ออกมาด้วย) จะอยู่ใน Encrypted key export path นั่นเอง จากนั้นนำไป upload เป็นอันเสร็จสิ้น พอเราจะ upload aab ก็จะเห็นแบบนี้
เพิ่มเติม รู้นะว่าอาจจะขี้เกียจกดใหม่ทุกครั้ง ในการ build app bundle
ก่อนอื่นกดที่แท็ป Gradle ที่ด้านขวาของ Android Studio ลำดับการกดเป็นดังนี้
{projectName} > {projectName} > Tasks > other > bundle{productFlavour}
สุดท้ายไฟล์ที่ได้จะอยู่ที่
app -> build -> output -> bundle -> {productFlavour}
3) อันนี้จะทำก็ได้ ไม่ทำก็ได้จ้า เก็บ certificate หลังจากอัพโหลด App Signing Private Key จะมี 3 ค่า คือ MD5, SHA-1 และ SHA-256
แต่ถ้าหายทำไงหล่ะ ติดต่อทีม suppport เพื่อ reset key จ้า
4) upload app bundles ของเราอย่างสะดวกโยธิน เท่านี้ก็เรียบร้อยแล้วจ้า
สุดท้ายเราก็ upload aab ลงใน Internal Test ได้แล้ว เย้ๆๆๆๆๆๆ
ก่อนจากกัน
เรื่องขนาดของแอปนั้น …. สามารถดูคร่าวๆได้ที่ Play Console โดยไปดูที่ Release management -> Artifact library ดูที่ Activity artifacts มันจะแบ่งเป็น 2 Type เนอะ คือ APK และ Android App Bundle กดที่ EXPLORE เพื่อดูรายละเอียดด้านใน จะมีข้อมูลบอกว่า App download size และ App size on device เป็นเท่าไหร่ และบอกด้วยว่าแต่ละ CPU และ แต่ละ CPU บวกกับ screen density แอปเรามี App download size เท่าไหร่ และดูได้ด้วยว่ามี devices ไหนบ้างที่เข้าข่าย
ปล. ในที่นี้เราจะลงรูปเปรียบเทียบกับใน Play Store ให้เห็นกันจะๆเลย
อยากลองบิ้วลงเครื่องบ้างได้ไหม ได้สิ ตามนี้เลย แต่จะบิ้วนานหน่อยนะ สักห้านาทีได้ ;_;
อ่านเพิ่มเติม
ลองฟังกันดู
สุดท้ายฝากร้านกันสักนิด ฝากเพจด้วยนะจ๊ะ