จากงาน Android Bangkok Conference 2019 ที่ผ่านมา
มี session อธิบายถึงการทำงานของ Gradle
ซึ่งเป็น build tool ของ Android project 
ไม่ว่าจะเขียนด้วยภาษา Java หรือ Kotlin ก็ตาม
ปัญหาที่ปวดหัวของนักพัฒนาคือ
เวลาในการ build ของ Gradle ที่นานนั่นเอง

ประเด็นหลัก ๆ คือ 

ก่อนที่จะแก้ไข ต้องรู้ก่อนว่าการทำงานเป็นอย่างไรบ้าง
ในแต่ละขั้นตอนใช้เวลามากน้อยเพียงใด
โดยใน Gradle จะมีการทำงาน 3 ส่วนคือ

  1. Initial คือทำการดูว่าจะ build project อะไรบ้าง อย่างไร
  2. Configuration คือการดูว่าใน build.gradle นั้นมี plugin และ task อะไรบ้าง
  3. Execution ทำการ run ทุก ๆ task ที่เกี่ยวข้อง

ถ้าเป็นแต่ก่อนเราจะใช้งาน profile ใน gradle 

เพื่อดูว่าแต่ละขั้นตอนของการ build เป็นอย่างไร
ยกตัวอย่างเช่น

$./gradlew android:assembleDebug --profile

ผลการทำงานเป็นดังนี้

ตอนนี้ใน gradle ก็มีเพิ่มมาอีกตัวคือ scan

เป็นความสามารถที่มากับ Gradle Enterprise
แต่ใน Gradle community ก็ใช้ได้
ข้อมูลต่าง ๆ จะอยู่ในระบบของ Gradle น่าจะบน Cloud นะ
เพราะว่าหลังจากที่ทำงานเสร็จ เราจะได้ link เพื่อเข้าไปดูผลดังนี้

$./gradlew android:assembleDebug  --scan

Publishing build scan...
https://gradle.com/s/xxxxxx

แสดงผลดังนี้

ดูเป็น Timeline ของแต่ละขั้นตอนได้เลย
ละเอียดมาก ๆ

จาก session นั้นได้แนะนำอีกตัวที่ทำขึ้นมาเองคือ Talaiot

ทำขึ้นมาเพื่อให้ใช้งานได้ง่ายขึ้น
สามารถดูรายละเอียดได้ชัดเจนขึ้น
ที่สำคัญสามารถเก็บผลต่าง ๆ ไว้ใน Time-serie database ได้อีกด้วย

ผลการทำงานเป็นดังรูป

อีกทั้งยังทำ dependency graph สวย ๆ ให้อีกด้วย น่าลองใช้นะ

ดังนั้นก่อนที่จะปรับปรุงการ build ของ Gradle
ควรเข้าใจการทำงานของมันก่อนนะ