จากบทความเรื่อง Yelp Android App Went On A Diet
ซึ่งทีมพัฒนา Android app ของ Yelp ทำการอธิบาย
วิธีการลดขนาดของไฟล์ APK (Android Application Package)
มันมีความสำคัญมาก ๆ สำหรับ Android developer ทุกคน
จึงทำการแปลและสรุปไว้อ่านนิดหน่อย

คำถามที่น่าสนใจคือ เราใส่ใจเรื่องนี้มากน้อยกันเพียงใด ?

ในการพัฒนา Mobile app นั้น มีหลายสิ่งอย่างที่ต้องใส่ใจ

เช่น battery, network, storage เป็นต้น
ซึ่งสิ่งต่าง ๆ เหล่านี้มันคือ
การใส่ใจเรื่อง resource ของผู้ใช้งานนั่นเอง
หนึ่งในเรื่องที่สำคัญคือ ขนาดของไฟล์ APK

ลองคิดดูสิว่า
ถ้าไฟล์ APK มีขนาดใหญ่ต้องใช้เวลาในการ download นาน
ยิ่งถ้าความเร็วของระบบ network ที่ใช้งานช้าอีกล่ะ
ไหนจะเป็นเรื่องขนาดของ storage บนเครื่องผู้ใช้งานอีก
ดังนั้นมาดูกันว่าทางทีมพัฒนาของ Yelp ทำอย่างไรกันบ้าง ?

อย่างแรกมีระบบแจ้งเกี่ยวกับขนาดของไฟล์ APK ที่ release ออกมาตลอด

ซึ่งทำให้เห็นว่าแนวโน้มของขนาดไฟล์เป็นอย่างไร
แสดงดังรูป

thanksgiving-alert

คำอธิบาย
ยิ่งทำการเพิ่ม feature ใหม่ ๆ เข้าในใน App
ขนาดของไฟล์ APK ก็ใหญ่ขึ้นเท่านั้น !!
แต่ถ้ามีแนวโน้มแบบนี้ต่อไป คงไม่ดีอย่างแน่นอน

ดังนั้นสิ่งที่ต้องเข้าใจต่อไปก็คือ ไฟล์ APK มันประกอบไปด้วยไฟล์อะไรบ้าง ?

เป็นการลงไปในรายละเอียด เพื่อค้นหาว่าปัญหามาจากส่วนไหนบ้าง
แต่ก่อนอื่นทำการบีบอัดไฟล์ต่าง ๆ ในกระบวนการสร้างไฟล์ APK
ด้วยเครื่องมือ ZipAlign
แสดงดังรูป

unzipped_zipped_breakdown

จากภาพจะเห็นได้ว่า ส่วนที่มีจำนวนเยอะมาก ๆ ก็คือ Image หรือ รูปภาพที่ใช้ใน App 
เมื่อทีมพัฒนาเข้าไปดูพบว่า
รูปต่าง ๆ ไม่ได้ทำการบีบอัดเลย !!
โดยใน Android 4.2.1 นั้นสนับสนุนรูปแบบรูปภาพใหม่คือ WebP
ซึ่งอ้างว่าเข้ารหัสได้ดีกว่า PNG และ JPEG
ที่สำคัญคือ มีขนาดที่เล็กกว่าแถมคุณภาพไม่ได้ต่างกันมาก

ดังนั้นจึงทำการบีดอัดรูปภาพจำนวน 2,000 รูปจาก PNG ไปเป็น WebP

ผลที่ได้ไม่ได้ลดมากตามที่คาดหวัง !!
คือมีขนาดลดจาก 27.1 MB เหลือ 23.1 MB โดยไม่สูญเสียคุณภาพ
แสดงดังรูป

compressed_zipped_breakdown

ยังไม่พอนะ สิ่งที่ต้องตรวจสอบเพิ่มเติม คือ
เมื่อเปลี่ยนเป็น WebP แล้วต้องดูประสิทธิภาพการทำงานของ App ด้วย
ว่าเป็นอย่างไร ดีขึ้น หรือ แย่ลง ?
ด้วยการใช้งาน Android performance tool
ผลที่ได้คือ ประสิทธิภาพการทำงานไม่ได้แตกต่างกันเลย
เพียงเท่านี้ก็สบายใจล่ะ

ส่วนขั้นตอนการแปลงรูปภาพนั้นจะทำงานแบบอัตโนมัติ
เมื่อทำการ commit หรือ เปลี่ยนแปลงรูปภาพ
ซึ่งลดภาระการทำงานลงไปอย่างมาก

หลังจากทำการเปลี่ยนไปเป็น WebP พบว่าขนาดของไฟล์ APK เป็นดังนี้

สิ่งที่ต้องระวังในการแปลงรูปภาพ คือ คุณภาพของรูป
เนื่องจากรูปขนาดใหญ่ลดคุณภาพไม่ได้เลย
มิเช่นนั้นจะกระทบต่อผู้ใช้งานอย่างมาก

webp_conversion_drop

สามารถอ่านแบบเต็ม ๆ ได้ที่ Yelp Android App Went On A Diet

สุดท้ายแล้ว
Android developer ควรใส่ใจกับขนาดของไฟล์ APK กันด้วย
ในบทความนี้เป็นเพียงหนึ่งวิธีการเท่านั้นนะ

Tags: