สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial Web Programming

A01 JavaScript01 HelloWorld A02 JavaScript02 HelloWorld by Class A03 JavaScript03 Object A04 JavaScript04 Prototype A05 JavaScript05 Closure A06 NodeJS01 HelloWorld A07 npm01 Intro A08 React01 HelloWorld A09 AngularJS01 HelloWorld A10 VueJS01 HelloWorld A11 webpack01 Intro A12 ASPNET01 HelloWorld A13 Flask01 HelloWorld A14 Windows CommandLine A15 GoogleCloudPlatform Product A16 GoogleAppEngine01 HelloWorld A17 WhatIs01 WebServer A18 WhatIs02 API A19 WhatIs03 Linux A20 Linux CommandLine A21 Android01 HelloWorld A22 Android02 Gradle A23 Maven HelloWorld A24 Nancy HelloWorld A25 WhatIs04 Protocol A26 HowTo01 Install Ubuntu Desktop A27 HowTo02 Install WebServer on Ubuntu A28 HowTo Install PrestaShop with php8 A29 HowTo Install XAMPP on Ubuntu A30 HowTo Install WordPress on XAMPP on Ubuntu A31 React02 Create and Run React Application A32 React03 Simple Web Application - People Counter A33 React04 Simple Web Application - People Counter 2 A34 React05 Web Application - Dictionary A35 React06 Web Application - Multiple Pages A36 React07 Web Application - Multiple Pages with APIs A37 React08 Web Application - Calculator A38 React09 Web Application - SpO2 Tracker A39 React10 Web Application - Smart Parking A40 Create AWS EC2 instance A41 Create WebApp Using Django on EC2 A42 JavaScript06 Understanding JavaScript Loop A43 HowTo Install CKEditor5 on Your Website

A22_Android02_Gradle

ในบทความก่อนหน้านี้ (A21_Android01_HelloWorld) เราได้ทำความรู้จัก Android และทำ App Hello World แบบง่ายสุดๆกันไปแล้ว คราวนี้เราจะมาพูดถึง Gradle ซึ่งเป็นเครื่องมือที่อยู่เบื้องหลังการ build ของ Android Studio กัน แต่ก่อนจะอ่านต่อผมขออธิบายแบบคร่าวๆสำหรับคนที่ยังไม่รู้ว่าการ build คืออะไรก่อนนะครับ ถ้าใครรู้อยู่แล้วก็ข้ามไปเลยครับ

Build คืออะไร

การ build ใน Android ก็คือการ compile app resources และ source code แล้วห่อให้มันอยู่ในรูป Android Application Package (APK) หรือก็คือไฟล์ .apk ที่เราเอาไปลงใน smartphone หรืออัปโหลดขึ้น play store ได้นั่นแหละครับ ซึ่งความจริงแล้ว การ build นี่มันมีขั้นตอนและต้องใช้ tool เยอะ ดังนั้นการเอา Gradle และ Android plugin เข้ามาใช้มันจะช่วยจัดการขั้นตอนในกรอบเส้นประสีเทาให้เราครับ ดังภาพประกอบ[1]

Gradle คืออะไร

Gradle คือ build toolkit ที่ช่วยจัดการขั้นตอนต่างๆในการ build โดยจะทำงานร่วมกับ Android plugin ใน Android Studio ช่วยให้เราสามารถ build ได้อย่างง่ายดายโดยเราสามารถตั้งค่าต่างๆเกี่ยวกับการ build ได้ด้วย สำหรับผู้ที่ไม่ใช้ Android Studio ก็สามารถ build app ด้วย Gradle และ Android plugin ผ่าน command line ได้เช่นกัน

เพื่อความสะดวกในบทความนี้จะใช้ Android Studio นะครับ ซึ่งตอนที่เราสร้างโปรเจกต์ใหม่ขึ้นมา Android Studio จะสร้างไฟล์บางไฟล์ให้โดยอัตโนมัติ สามารถแบ่งโครงสร้างเป็นระดับได้แก่ Project-level, Module-level และ Sourceset-level ดังภาพประกอบ[1]

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

1. setting.gradle ใน Project-level ไฟล์นี้จะเป็นตัวบอก Gradle ว่าต้อง include module ไหนบ้างตอนที่ build App จากในรูปจะเห็นว่าไฟล์นี้มีบรรทัดเดียวคือ include ':app' แต่ในกรณีที่เป็นโปรเจกต์ใหญ่ๆตรงนี้ก็มักจะมีหลายบรรทัดครับ

2. build.gradle ใน Project-level ไฟล์นี้เป็นตัวกำหนด build configuration ที่เราจะใช้กับทุก module ในโปรเจกต์นี้ 

โดยปกติไฟล์นี้จะประกอบด้วย

2.1 buildscript block ใช้ในการกำหนด repositories และ dependencies สำหรับตัว Gradle เอง ดังนั้นเราไม่ควร include dependencies สำหรับ Module ที่นี่ buildscript block นี้จะประกอบด้วย

  • repositories block จะเป็นตัวบอก Gradle ว่าต้องไปค้นหาหรือดาวน์โหลด dependencies จากที่ไหนในตัวอย่างนี้คือ Google’s Maven และ JCenter 
  • dependencies block จะเป็นตัวบอกว่า Gradle ต้องการใช้ dependencies อะไรบ้าง ในตัวอย่างนี้คือ Android plugin for Gradle version 3.2.1

2.2 allprojects block ใช้ในการกำหนด repositories และ dependencies ที่เราจะใช้กับทุก module ในโปรเจกต์นี้ เช่น library ต่างๆ หรือ third-party plugin ในตัวอย่างนี้กำหนดแค่ repository แต่ยังไม่ได้กำหนด dependency 

2.3 task clean block ใช้สำหรับลบ directory ทุกครั้งที่รันโปรเจกต์

3. build.gradle ใน Module-level ไฟล์นี้จะอยู่ใน directory ของทุก module ในโปรเจกต์ เพื่อใช้ตั้งค่าต่างๆของแต่ละ module ตอน build เช่น buildTypes หรือ productFlavors ฯลฯ มาลองดูตัวอย่างกันครับ

  • บรรทัดแรกเป็นการ apply plugin ก็คือการ import Android plugin เข้ามาเพื่อให้เราใช้ android block ในบรรทัดที่ 3 ได้
  • android block ใช้สำหรับปรับแต่งค่าต่างๆใน App ของเรา เช่น compileSdkVersion จะกำหนด Android API level ของ Gradle ที่ใช้ compile app นี้ เป็นต้น สำหรับค่าอื่นๆสามารถดูรายละเอียดได้จาก https://google.github.io/android-gradle-dsl/current/ 
  • dependencies block จะเป็นตัวบอกว่า module นี้ต้องการใช้ dependencies อะไรบ้าง สามารถดูรายละเอียดเพิ่มเติมได้จาก https://developer.android.com/studio/build/dependencies

ประวัติ Gradle

Gradle เป็น open-source build toolkit พัฒนาโดย Hans Dockter, Adam Murdoch, Szczepan Faber, Peter Niederwieser, Luke Daley, Rene Gröschke และ Daz DeBoer โดยสร้างขึ้นมาบน Apache Ant และ Apache Maven แต่ Gradle เลือกใช้  Groovy-based domain-specific language (DSL) จาก Groovy แทน XML form ที่ Apache Maven ใช้สำหรับเขียนไฟล์ configuration ออกมาครั้งแรกในปี 2007 เวอร์ชันที่เสถียรล่าสุดคือเวอร์ชัน 5.6 ออกในปี 2019

มาลองใช้ Gradle กันเถอะ

ในบทความนี้เราจะมาเขียนโค้ดเพิ่มเข้าไปในโปรเจกต์ MyAppHello เดิมที่สร้างไว้จากบทความที่แล้วโดยสมมติว่า App ของเราต้องการใช้ Library ชื่อ Commons Lang ซึ่งเป็น Library ของ Java โดยเราจะใช้ method หนึ่งของ Library นี้เพื่อทดสอบว่า String ที่เรารับเข้ามาตรงกับค่าที่เรากำหนดไว้ไหม แต่เนื่องจากในที่บทความนี้เราจะไม่ลงลึกเรื่องการเขียนโค้ดและเพื่อให้โค้ดสั้นที่สุดเราจะกำหนดค่า String ที่รับเข้ามาไปเลย

1. เปิด MyAppHello ขึ้นมาแล้วไปที่ไฟล์ MainActivity.java จากนั้นให้เขียนโค้ดเพิ่ม 3 บรรทัดที่ลูกศรชี้ตามนี้

หลังจากเพิ่มโค้ดแล้ว จะเห็นว่ามันมีเสร็จหยึกหยักขีดที่ไฟล์ที่มีปัญหา และจุดที่มีปัญหาในไฟล์ก็จะเป็นตัวอักษรสีแดง เนื่องจากมันไม่รู้จัก lang3 และ StringUtils นั่นเอง ซึ่งแก้ได้ด้วยการเพิ่ม dependencies ของ Library Commons Lang ให้กับ module นี้

2. เนื่องจากเราไม่รู้ว่าต้องพิมพ์ dependencies อย่างไร ตรงนี้ Android Studio มีตัวช่วยให้ครับ เพราะมันให้เราเพิ่ม remote library ได้ โดยไปที่เมนู File > Project Structure…

หมายเหตุ: สำหรับคนที่รู้ก็พิมพ์ที่ไฟล์ build.gradle ของ module ได้เลยครับ

3. จะมีหน้าต่าง Project Structure ปรากฏขึ้นมา ที่แถบด้านซ้ายให้เลือก app จากนั้นเลือก tab Dependencies แล้วกดปุ่มเครื่องหมาย +

4. เลือก 1 Library dependency

5. จากนั้นในหน้าต่าง Choose Library Dependency ให้พิมพ์ในช่องค้นหาว่า commons-lang3 แล้วกดปุ่มค้นหา

6. รอจนค้นหาเสร็จ ให้เลือก org.apache.commons:commons-lang3 (org.apache.commons:commons-lang3:3.9) แล้วกดปุ่ม OK

7. จะเห็นว่ามี org.apache.commons:commons-lang3:3.9 เพิ่มขึ้นมา ให้กดปุ่ม OK

8. ที่หน้า build.gradle ของ Module-level จะเห็นว่ามี org.apache.commons:commons-lang3:3.9 เพิ่มขึ้นมาใน dependencies block และ Gradle จะเริ่มทำการ Sync และ Build

9. รอจนเสร็จ สังเกตว่าเส้นหยักสีแดงและตัวอักษรสีแดงที่บอกข้อผิดพลาดหายไปหมดแล้ว เพียงเท่านี้เราก็สามารถใช้ Commons Lang Library ได้แล้วครับ ไม่ยากเลยใช่ไหมครับ

ประโยชน์ของ Gradle ในแง่ธุรกิจ

Gradle ช่วยลดขั้นตอนและประหยัดเวลาเรื่องการ build App ไปได้อย่างมากไม่ต้องมาทำทีละขั้นเองให้ยุ่งยาก นอกจากนี้มันยังสามารถตั้งค่าต่างๆให้กับ App ของเราเวลา build ได้อีกด้วย เช่น ตั้งค่า productFlavors ให้ build ให้ App ของเราแต่ละเวอร์ชัน (Variant) แสดงผลต่างกัน อาทิ เวอร์ชันทดลองกับเวอร์ชันจริง หรือเวอร์ชันฟรีกับเวอร์ชันเสียเงิน ถ้าเราเขียนโค้ดดีๆและตั้งค่าได้ถูกต้องก็จะสามารถ build App แต่ละเวอร์ชันได้ง่ายๆโดยไม่ต้องแก้โค้ด ทำให้ลดโอกาสเกิดข้อผิดพลาดไปได้มาก

และแน่นอนว่าเวลาเราเขียนโปรแกรมเชิงธุรกิจที่ซับซ้อนขึ้น เราคงไม่เขียนทุกอย่างด้วยตัวเองตั้งแต่ศูนย์ สิ่งที่เราควรทำคือดูว่ามี Library อะไรที่ method ของมันสามารถทำงานที่เราต้องการได้ อย่างเช่น หากต้องการเปรียบเทียบ String ก็สามารถใช้ method equals ของ Commons Lang Library ได้ ฯลฯ ซึ่งหากเราต้องการใช้ Library อะไรก็แค่ใส่เพิ่มเข้าไปใน dependency ในไฟล์ build.gradle แค่นี้ก็สามารถใช้ Library นั้นๆได้อย่างง่ายๆเหมือนตัวอย่างด้านบนแล้วครับ

พื้นฐานที่ควรมีก่อนเขียน App Android

การใช้งาน Android ต้องมีความรู้เรื่อง Java และ Web Programming ครับ

ถ้าผู้อ่านยังไม่มีพื้นฐานเหล่านี้หรือมีแล้วแต่อยากเรียนรู้เพิ่มเติมอย่างลึกซึ้ง นำไปใช้ต่อยอดได้จริง ก็ขอแนะนำคอร์ส Java J104 ของทาง EPT โดยสามารถดูรายละเอียดคอร์สได้โดยคลิกที่นี่ และที่ดีที่สุดคุ้มที่สุดครอบคลุมที่สุดคือคอร์ส Web Programming PHP101-J ของทาง EPT ครับ สามารถดูรายละเอียดคอร์สได้โดยคลิกที่นี่หรือติดต่อได้ที่ 085-350-7540

แล้วพบกันใหม่บทความหน้านะครับ 

ที่มาและเว็บไซต์อ้างอิง

[1] https://developer.android.com/studio/build
[2] https://docs.gradle.org/current/userguide/what_is_gradle.html
[3] https://en.wikipedia.org/wiki/Gradle
[4] https://github.com/gradle/gradle
[5] https://commons.apache.org/proper/commons-lang/
 
 


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา