![reducing_apk_file_size]()
![reducing_apk_file_size]()
ในการพัฒนา Android app นั้นมีหลายสิ่งที่ต้องให้ความสำคัญ
หนึ่งในนั้นคือ ขนาดของไฟล์ APK และ จำนวน method ใน dex bytecode
ซึ่งนักพัฒนาควรจะ
ทำให้ขนาดของไฟล์ APK ให้เล็กและจำนวน method น้อย ๆ
แต่ก่อนอื่นต้องรู้ข้อมูลเรื่องเหล่านี้อยู่ตลอดเวลาเมื่อเกิดการเปลี่ยนแปลงขึ้น
เพื่อนำข้อมูลเหล่านี้มาวิเคราะห์ และ ปรับปรุงต่อไป
ดังนั้นมาดูกันว่ามีวิธีการอย่างไรบ้าง ?
เมื่อไปค้นหาพบว่ามี library ให้ใช้ด้วย
ตัวอย่างเช่น
Dexcount gradle plugin
ซึ่งทำการคำนวณเรื่องต่าง ๆ ให้เลย เช่น
การใช้งานนั้นก็ง่ายมาก ๆ
เพียงแค่ทำการแก้ไขไฟล์ app/build.gradle ดังนี้
[gist id="c52e882d093e9d5840fa8b8106c0feed" file="build.gradle"]
จากนั้นทำการ run ด้วยคำสั่ง
[code]
$./gradlew clean assembleDebug
[/code]
แสดงผลการทำงานดังนี้
[code]
Total methods in app-debug.apk: 18163 (27.71% used)
Total fields in app-debug.apk: 8516 (12.99% used)
Methods remaining in app-debug.apk: 47372
Fields remaining in app-debug.apk: 57019
[/code]
และยังสร้างผลการทำงานออกมาในรูปแบบไฟล์อีกด้วย เช่น
- debug.csv สรุปจำนวน method และ field
- debug.txt สรุปรายละเอียดแยกเป็น package
- รวมทั้ง Chart ที่สวยงาม
แสดงดังรูป
ส่วน Chart แสดงดังนี้
ส่วนขนาดของไฟล์ APK นั้นก็มี library ให้ใช้งานอีก เช่น APK size plugin
แต่อาจจะจะยากไป เพราะว่าใช้คำสั่ง stat บน OS ต่าง ๆ ได้ (ผมใช้ Mac นะ)
[code]
$stat -f%z app-debug.apk
[/code]
จากนั้นก็เขียนใส่ไว้ในไฟล์ เท่านี้ก็น่าจะเพียงพอแล้วสำหรับขนาดของไฟล์ APK
เมื่อการเตรียมการต่าง ๆ เรียบร้อยแล้ว นำมาทำงานบน Jenkins ดีกว่า
เนื่องจากเราต้องการรู้ว่าทุก ๆ ครั้งที่มีการสร้างไฟล์ APK นั้น
ขนาดของไฟล์มีขนาดเท่าไร ?
จำนวน method และ field มีเท่าไร ?
ที่สำคัญเราจะเห็นประวัติหรือแนวโน้มต่าง ๆ อีกด้วย
ให้ทำการติดตั้ง plugin ชื่อว่า
Jenkins Plot Plugin
จากนั้นใน job สำหรับ build ไฟล์ APK ให้ทำดังนี้
ทำการเพิ่ม Plot เข้าไปในส่วนของ Post Build Action ดังนี้
![apk05]()
ส่วนของจำนวน method ก็เพิ่มเข้าไปเหมือนกันนะครับ
ผลของ Plot ต่าง ๆ เป็นดังนี้
เพียงเท่านี้ก็สามารถดูแนวโน้มของไฟล์ APK แบบง่าย ๆ ได้แล้ว
ส่วนการวิเคราะห์และปรับปรุงไฟล์ APK เพิ่มเติม
แนะนำให้ใช้ APK Analyzer ใน Android Studio 2.2 ได้เลยนะครับ
Reference Websites
https://medium.com/@mreichelt/android-apk-size-dexcount-charts-on-jenkins-ae518e961818#.7qkef26z0
http://cyrilmottier.com/2014/08/26/putting-your-apks-on-diet/