Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

[Android] มาดูวิธีการลดขนาดของไฟล์ APK ของ Yelp กัน

$
0
0

thanksgiving-alert

จากบทความเรื่อง 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 กันด้วย ในบทความนี้เป็นเพียงหนึ่งวิธีการเท่านั้นนะ

Viewing all articles
Browse latest Browse all 1997

Trending Articles