การ Build คืออะไร? Build Tool คืออะไร? Gradle และ Ant คืออะไรและเกี่ยวข้องกันยังไง?

ant_maven_gradle

ที่มาของโพสต์นี้ มาจากการที่ผมไปตอบคำถามที่มีคนมาถามในกลุ่ม Thailand Android Developer ในเฟซบุ๊ค (กลุ่มนี้ผมเป็นแค่สมาชิกธรรมดา แต่กลุ่มที่ผมเป็น admin คือ คู่มือเขียนแอพ Android สำหรับผู้เริ่มต้น, ขอ add กันเข้ามาได้เลยนะครับ ^^)

พอตอบเสร็จ ผมก็คิดว่าน่าจะเอามาลงเว็บตัวเองด้วย เพราะน่าจะมีประโยชน์กับหลายๆท่านที่กำลังเริ่มต้นศึกษาการพัฒนาแอพ Android

ผมคงมาอัพเดทเนื้อหาในโพสต์นี้อยู่เรื่อยๆนะครับ ถ้านึกออกว่าจะเขียนอะไรต่อ และมีเวลาเขียน, อย่างแรกที่คิดไว้ตอนนี้เลยคือ น่าจะเพิ่มรูปภาพประกอบสักหน่อย ขอติดไว้ก่อนแล้วกัน

อบรม Workshop เขียนแอพ Android สำหรับผู้เริ่มต้น

เอาล่ะ เกริ่นจนเสียเวลามาหลายบรรทัดแล้ว มาเข้าเรื่องของหัวข้อโพสต์นี้กันเลยดีกว่า กับคำถามที่ว่า การ build คืออะไร? build tool คืออะไร? Gradle และ Ant คืออะไรและเกี่ยวข้องกันยังไง?

คุณรู้จักคำว่า คอมไพล์ (compile) ใช่ไหม มันคือการแปล (หรือแปลง) source code ที่เราเขียน ไปเป็นคำสั่งที่เครื่องเข้าใจ ซึ่งคำสั่งเหล่านี้อาจเป็น intermediate code ที่ต้องรันผ่าน virtual machine อีกที หรือเป็น machine/native code ที่รันบน CPU ของเครื่องโดยตรงเลยก็ได้ (กรณีของภาษาจาวาจะเป็นอย่างแรก)

การ build ก็คือการคอมไพล์ source code และ resource ต่างๆ แล้วเอามาห่อ (package) รวมกันเป็นไฟล์ผลลัพธ์สุดท้าย ซึ่งใน Android คือไฟล์นามสกุล .apk – เดาได้ไม่ยากใช่มั้ยครับว่า มันย่อมาจาก Android Package

build tool ก็คือ “เครื่องมือ” หรือง่ายๆก็ “ซอฟต์แวร์” ที่ใช้ในการ build นั่นแหละครับ มันมีหน้าที่เปลี่ยน source code และ resource ต่างๆ เช่นรูปภาพ ไฟล์เสียง ฯลฯ ที่คุณเตรียมไว้ในโปรเจ็ค ไปเป็นไฟล์ .apk ไฟล์เดียวที่สามารถนำไปติดตั้งบนอุปกรณ์หรือส่งขึ้น store ได้

Ant และ Gradle ก็คือ build tool ที่ว่านั่นเอง จริงๆยังมีอีกตัวคือ Maven, ทั้งสามเป็นชื่อผลิตภัณฑ์ ส่วนคำว่า build tool เป็นชื่อเรียกเครื่องมือหรือซอฟต์แวร์ประเภทนี้

Ant มีมาก่อน ตามมาด้วย Maven ซึ่งถูกสร้างมาเพื่อแก้ข้อจำกัดบางอย่างใน Ant, สองตัวนี้มีมาตั้งแต่สมัยที่ยังไม่มี Android เลยนะ มันเป็น build tool สำหรับการพัฒนาซอฟต์แวร์ด้วยภาษาจาวา

ส่วน Gradle มาทีหลังสุด และมันเอาข้อดีของ Ant กับ Maven มารวมกัน, ที่สำคัญ Gradle นั้นสร้างขึ้นมาบน Ant กับ Maven อีกที พูดง่ายๆ Gradle ยังต้องเรียกใช้ Ant กับ Maven ด้วย

ช่วงหลังเราจะได้ยินคนพูดถึง Gradle บ่อย เพราะมันคือ build tool หรือ build system ที่ถูกใช้ใน Android Studio ซึ่งเป็น official IDE สำหรับการเขียนแอพ Android ไปแล้ว

สรุป

  • Gradle, Maven, Ant คือชื่อซอฟต์แวร์ที่เป็น build tool
  • build tool คือซอฟต์แวร์ที่ใช้ในการ build
  • การ build ในแอนดรอยด์ คือการสร้างไฟล์ .apk ขึ้นมาจาก source code และ resource ต่างๆที่อยู่ในโปรเจ็คของเรา
  • ไฟล์ .apk ก็คือแอพที่เสร็จสมบูรณ์แล้ว พร้อมจะนำไปติดตั้งบนอุปกรณ์หรือส่งขึ้น store ได้
  • Gradle คือ build tool ของ Android Studio ซึ่ง Gradle ถูกสร้างขึ้นมาบน Ant และ Maven อีกที

ข้อมูลความเป็นมาของ Ant, Maven และ Gradle ผมอ่านผ่านๆมาจาก http://technologyconversations.com/2014/06/18/build-tools/ ถ้าคุณไม่ลำบากเรื่องภาษาอังกฤษ แนะนำไปอ่านดูครับ มีตัวอย่างการเขียนชุดคำสั่งหรือสคริปต์ (script) ของ build tool ทั้งสามตัวให้ดูด้วย น่าสนใจมาก แต่ผมยังไม่มีเวลาอ่านให้จบเลย ขอตัวไปเลี้ยงลูกก่อน 55

3 Comments

 Add your comment
  1. ขอบคุณสำหรับความรู้ดีๆ ครับ

  2. สงสัยมานาน วันนี้เข้าใจละ และตอนแรกเลือกไม่ถูกว่าจะใช้ตัวไหน ก็เลือก gradle ละกัน ใหม่สุด

  3. ขอบคุณมากครับ

Leave a Comment

Your email address will not be published.