ตอนที่ 2 สำรวจซอร์สโค้ดโปรเจคของ Android Studio

จากบทความ ตอนที่ 1 ติดตั้ง Android Studio และ Hello World ได้มีการใช้ Template เริ่มต้น Basic Activity ซึ่งเป็นโค้ดเทมเพลตที่ใช้เป็นจุดเริ่มต้นสำหรับการทำแอพ Android ที่ประกอบด้วยโครงสร้างโค้ดพื้นฐานที่จำเป็นสำหรับการทำแอพ Android ในบทความนี้เราจะมาดูรายละเอียดที่น่าสนใจของ Template ว่ามีอะไรบ้างเพิ่มใช้เป็นพื้นฐานในการรับทำแอพต่อไป

โครงสร้างไฟล์ของ Template Basic Activity

เมื่อคุณสร้างโปรเจ็กต์ Android ใน Android Studio โฟลเดอร์รูทจะถูกสร้างขึ้นสำหรับโปรเจ็กต์ที่มีโฟลเดอร์ย่อยและไฟล์ต่างๆ โฟลเดอร์รูทเป็นไดเร็กทอรีระดับบนสุดสำหรับโปรเจกต์ Android ของคุณ และมีไฟล์และไดเร็กทอรีที่สำคัญซึ่งจำเป็นต่อการทำแอพและเรียกใช้แอปของคุณ

ต่อไปนี้คือภาพรวมโดยย่อของโฟลเดอร์และไฟล์สำคัญบางส่วนที่คุณจะพบในโฟลเดอร์รูทของโปรเจ็กต์ Android ของคุณ:

  • โฟลเดอร์ app: โฟลเดอร์นี้มีซอร์สโค้ดหลักสำหรับแอพ Android ของคุณ ประกอบด้วยไดเร็กทอรี src ที่คุณสามารถค้นหาไฟล์โค้ด Kotlin หรือ Java ที่ใช้ฟังก์ชันการทำงานของแอปของคุณ นอกจากนี้ยังมีไดเร็กทอรี res ที่คุณสามารถค้นหาทรัพยากรต่างๆ เช่น ไฟล์เค้าโครง รูปภาพที่วาดได้ ทรัพยากรสตริง ฯลฯ ที่แอปของคุณใช้
  • ไฟล์ build.gradle: ไฟล์นี้เป็นไฟล์กำหนดค่าที่ใช้โดยระบบ Gradle build เพื่อสร้างและจัดแพ็กเกจแอปของคุณ ประกอบด้วยการตั้งค่า build ต่างๆ เช่น dependencies, build types ฯลฯ
  • โฟลเดอร์ gradle: โฟลเดอร์นี้มีไฟล์ wrapper ของ Gradle Gradle wrapper เป็นสคริปต์ขนาดเล็กที่ใช้ในการดาวน์โหลดและติดตั้ง Gradle รุ่นเฉพาะที่จำเป็นสำหรับการสร้างแอปของคุณ
  • โฟลเดอร์ build: โฟลเดอร์นี้มีไฟล์เอาต์พุตที่สร้างโดยระบบ build ประกอบด้วยไฟล์ APK ซึ่งเป็นไฟล์ไบนารีที่สามารถติดตั้งบนอุปกรณ์ Android
  • ไฟล์ gradlew และ gradlew.bat: เป็นไฟล์ปฏิบัติการที่อนุญาตให้คุณเรียกใช้คำสั่ง Gradle ในโครงการของคุณ ไฟล์ gradlew ใช้ในระบบที่ใช้ Unix ในขณะที่ไฟล์ gradlew.bat ใช้ในระบบ Windows
Android Studio โครงสร้างไฟล์โปรเจค

ในโครงการ Android มีไฟล์ build.gradle สองไฟล์ ไฟล์หนึ่งอยู่ในโฟลเดอร์ root และอีกไฟล์หนึ่งอยู่ในโฟลเดอร์ app ทั้งสองไฟล์มีจุดประสงค์ที่แตกต่างกันและมีการกำหนดค่าที่แตกต่างกัน

ไฟล์ build.gradle ในโฟลเดอร์ root เรียกว่าไฟล์ build ระดับโครงการ ประกอบด้วยการตั้งค่าที่ใช้กับทั้งโครงการ เช่น build configuration, dependencies, และ repositories ไฟล์นี้มีหน้าที่ในการกำหนดค่าระบบ Gradle build สำหรับทั้งโครงการและดำเนินการก่อนไฟล์ build.gradle ในโฟลเดอร์ app

ไฟล์ build.gradle ในโฟลเดอร์ app เรียกว่าไฟล์ bild ระดับโมดูล ประกอบด้วยการตั้งค่าเฉพาะสำหรับโมดูล app เช่น applicationId, versionCode และ versionName ไฟล์นี้รับผิดชอบในการกำหนดค่ากระบวนการสร้างสำหรับโมดูล app และดำเนินการหลังจากไฟล์สร้างระดับโครงการ

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

ตัวอย่างเช่น หากคุณมีโมดูลแอปหลายโมดูลในโครงการของคุณ โดยแต่ละโมดูลมีไฟล์ build.gradle ของตัวเองในโฟลเดอร์แอป คุณสามารถมีไฟล์ build.gradle ระดับโครงการไฟล์เดียวที่กำหนดการขึ้นต่อกันและที่เก็บข้อมูลทั่วไปที่ใช้กับโมดูลทั้งหมด โมดูล app สิ่งนี้สามารถช่วยคุณประหยัดเวลาและความพยายาม เนื่องจากคุณไม่ต้องกำหนดค่าเดิมซ้ำในไฟล์ build.gradle แต่ละไฟล์สำหรับแต่ละโมดูล app

โดยสรุป การมีไฟล์ build.gradle สองไฟล์แยกกันในโฟลเดอร์ root และโฟลเดอร์ app ของโปรเจ็กต์ Android ช่วยให้คุณสามารถแยกการกำหนดค่าบิลด์ที่ใช้กับโปรเจ็กต์ทั้งหมดออกจากที่ใช้กับโมดูลหรือแอปเฉพาะได้ การแยกนี้ช่วยให้จัดการกระบวนการสร้างโมดูลและทำแอพต่างๆ ภายในโครงการได้ง่ายขึ้น

Android Studio โครงสร้างไฟล์โปรเจค Build Gradle

AndroidManifest.xml เป็นไฟล์ในโครงการ Android ที่อธิบายข้อมูลสำคัญเกี่ยวกับแอปไปยังระบบปฏิบัติการ Android เป็นไฟล์ XML ที่อยู่ในไดเรกทอรีรากของโครงการ

ไฟล์ AndroidManifest.xml มีข้อมูล เช่น ชื่อแพ็กเกจของแอป รหัสเวอร์ชัน ชื่อเวอร์ชัน และระดับ Android API ขั้นต่ำและเป้าหมาย นอกจากนี้ยังมีรายละเอียดเกี่ยวกับแอพ activities, services, broadcast receivers, และ content providers ซึ่งเป็นองค์ประกอบพื้นฐานของการรับทำแอพ Android

ระบบ Android ใช้ไฟล์ AndroidManifest.xml เพื่อทำความเข้าใจโครงสร้างและการอนุญาตของแอป ตัวอย่างเช่น ไฟล์ระบุกิจกรรมหลักของแอป ซึ่งเป็นจุดเริ่มต้นของแอป นอกจากนี้ยังกำหนดสิทธิ์ของแอป เช่น ความสามารถในการเข้าถึงอินเทอร์เน็ต อ่านและเขียนไฟล์บนอุปกรณ์ เข้าถึงกล้อง ฯลฯ สิทธิ์เหล่านี้มีความสำคัญต่อความปลอดภัยของแอป Android เนื่องจากทำให้มั่นใจได้ว่าแอปจะสามารถ เข้าถึงทรัพยากรที่ต้องการและผู้ใช้ให้สิทธิ์ในการเข้าถึง

ไฟล์ AndroidManifest.xml ถูกสร้างขึ้นโดยอัตโนมัติโดย Android Studio เมื่อคุณสร้างโครงการ Android ใหม่ อย่างไรก็ตาม คุณอาจต้องแก้ไขด้วยตนเองเพื่อเพิ่มกิจกรรม บริการ หรือสิทธิ์ใหม่ๆ เมื่อแอปของคุณพัฒนาขึ้น

AndroidManifest.xml เป็นไฟล์สำคัญในโครงการ Android ที่มีข้อมูลสำคัญเกี่ยวกับโครงสร้างและการอนุญาตของแอป Android Studio สร้างขึ้นโดยอัตโนมัติและใช้งานโดยระบบปฏิบัติการ Android เพื่อทำความเข้าใจพฤติกรรมของแอปและการเข้าถึงทรัพยากรของอุปกรณ์

ในโครงการ Android ไฟล์ .kt ในโฟลเดอร์ src เป็นไฟล์ซอร์สโค้ด Kotlin ที่มี logic สำหรับการทำงานของแอพ Kotlin เป็นภาษาโปรแกรมสมัยใหม่ที่ใช้ในการพัฒนา Android และมีคุณสมบัติและประโยชน์มากมายเมื่อเทียบกับ Java ซึ่งเป็นภาษาหลักสำหรับการพัฒนา Android ก่อนที่ Kotlin จะถูกนำมาใช้

ไฟล์ซอร์สโค้ด Kotlin ในโฟลเดอร์ src สามารถมีคลาส ฟังก์ชัน ตัวแปร และองค์ประกอบอื่นๆ ของภาษาโปรแกรม Kotlin ไฟล์เหล่านี้มีการใช้งานคุณลักษณะของแอป เช่น ส่วนประกอบ UI เครือข่าย ที่จัดเก็บข้อมูล และ logic ของแอปพลิเคชันอื่นๆ

ตัวอย่างเช่น หากคุณมีกิจกรรมในแอปของคุณที่แสดงรายการ คุณสามารถสร้างไฟล์ซอร์สโค้ด Kotlin ในโฟลเดอร์ src ที่มี logic สำหรับการเรียกรายการรายการจากฐานข้อมูลหรือบริการบนเว็บ และแสดงใน มุมมองรายการ

ไฟล์ซอร์สโค้ด Kotlin ถูกคอมไพล์เป็น bytecode ที่ระบบปฏิบัติการ Android สามารถดำเนินการได้ โค้ดที่คอมไพล์แล้วจะถูกบรรจุเป็นไฟล์ APK ซึ่งเป็นรูปแบบไฟล์ที่ใช้ในการเผยแพร่แอพ Android

ไฟล์ .kt ในโฟลเดอร์ src ของโปรเจ็กต์ Android เป็นไฟล์ซอร์สโค้ด Kotlin ที่มีการใช้งานฟีเจอร์ของการทำแอพ ไฟล์เหล่านี้ถูกคอมไพล์เป็น bytecode และบรรจุเป็นไฟล์ APK ที่สามารถติดตั้งและเรียกใช้บนอุปกรณ์ Android

Android Studio โครงสร้างไฟล์โปรเจค src

โฟลเดอร์ res (ย่อมาจาก “resources”) เป็นโฟลเดอร์พิเศษที่มีทรัพยากรที่ไม่ใช่โค้ดที่แอปใช้ เช่น รูปภาพ เค้าโครง สตริง และทรัพยากรอื่นๆ ทรัพยากรเหล่านี้ใช้เพื่อจัดเตรียมอินเทอร์เฟซผู้ใช้ กราฟิก และองค์ประกอบภาพและเสียงอื่นๆ ที่ประกอบกันเป็นแอป

โฟลเดอร์ res แบ่งออกเป็นโฟลเดอร์ย่อยที่จัดระเบียบทรัพยากรตามประเภทและวัตถุประสงค์ ตัวอย่างเช่น:
  • โฟลเดอร์ drawable: มีรูปภาพและไอคอนที่ใช้ในแอป เช่น ภาพพื้นหลัง ปุ่ม และโลโก้
  • โฟลเดอร์ layout: มีไฟล์ XML ที่กำหนดโครงสร้างและเลย์เอาต์ของอินเทอร์เฟซผู้ใช้ของแอพ เช่น เลย์เอาต์ของกิจกรรมหรือแฟรกเมนต์
  • โฟลเดอร์ values: มีไฟล์ XML ที่กำหนดทรัพยากรของแอปที่ไม่เฉพาะเจาะจงสำหรับเลย์เอาต์เฉพาะหรือแบบวาดได้ ซึ่งอาจรวมถึงสตริง สี ขนาด และสไตล์ที่ใช้ทั่วทั้งแอป

ทรัพยากรแต่ละรายการในโฟลเดอร์ res จะได้รับตัวระบุเฉพาะที่ใช้อ้างอิงในโค้ดของแอป ตัวอย่างเช่น หากคุณมีรูปภาพในโฟลเดอร์ที่วาดได้ชื่อ my_image.png คุณสามารถอ้างอิงรูปภาพนั้นในโค้ดของคุณได้โดยใช้ตัวระบุ R.drawable.my_image

โฟลเดอร์ res เป็นส่วนสำคัญของโครงสร้างโครงการ Android และสร้างขึ้นโดยอัตโนมัติโดย Android Studio เมื่อคุณสร้างโครงการใหม่ คุณสามารถเพิ่มทรัพยากรใหม่ลงในโฟลเดอร์ res โดยสร้างโฟลเดอร์ย่อยใหม่และเพิ่มไฟล์ที่เหมาะสมเข้าไป

โฟลเดอร์ res ในโครงการ Android มีทรัพยากรที่ไม่ใช่โค้ดที่แอปใช้ เช่น รูปภาพ เค้าโครง สตริง และทรัพยากรอื่นๆ ทรัพยากรเหล่านี้ถูกจัดระเบียบเป็นโฟลเดอร์ย่อยตามประเภทและวัตถุประสงค์ และได้รับตัวระบุเฉพาะที่ใช้อ้างอิงในโค้ดของแอป

Android Studio โครงสร้างไฟล์โปรเจค res

โฟลเดอร์ drawable และ drawable-v24 เป็นโฟลเดอร์ย่อยของโฟลเดอร์ res ที่มีทรัพยากรรูปภาพที่แอปใช้

โฟลเดอร์ Drawable มีทรัพยากรรูปภาพที่ใช้โดย Android ทุกรุ่น โฟลเดอร์นี้สามารถมีไฟล์รูปภาพประเภทต่างๆ เช่น .png, .jpg และ .gif และแต่ละไฟล์จะมีชื่อเฉพาะ ทรัพยากรรูปภาพเหล่านี้สามารถอ้างอิงได้ในไฟล์เค้าโครง XML ของแอปหรือโค้ด Java/Kotlin โดยใช้คำนำหน้า @drawable/ ตามด้วยชื่อไฟล์รูปภาพ

โฟลเดอร์ drawable-v24 เป็นโฟลเดอร์พิเศษที่มีทรัพยากรรูปภาพที่ใช้บนอุปกรณ์ที่ใช้ Android 7.0 (API ระดับ 24) หรือสูงกว่าเท่านั้น โฟลเดอร์นี้ใช้เพื่อจัดเตรียมรูปภาพที่มีความละเอียดต่างกันสำหรับความหนาแน่นของหน้าจอที่แตกต่างกัน ซึ่งจำเป็นสำหรับการแสดงผลที่เหมาะสมบนอุปกรณ์ต่างๆ ที่มีขนาดหน้าจอและความละเอียดต่างกัน ตัวอย่างเช่น คุณอาจมีรูปภาพเดียวกันหลายเวอร์ชันในโฟลเดอร์ drawable-v24 ที่มีความละเอียดต่างกันสำหรับหน้าจอความหนาแน่นต่ำ ความหนาแน่นปานกลาง ความหนาแน่นสูง และความหนาแน่นสูงพิเศษ

เหตุผลในการมีโฟลเดอร์ drawable-v24 แยกต่างหากคือ Android 7.0 ได้แนะนำการเปลี่ยนแปลงวิธีจัดการ vector drawables ก่อนหน้า Android 7.0 การวาดแบบเวกเตอร์มีการสนับสนุนที่จำกัด แต่ด้วย Android 7.0 การวาดแบบเวกเตอร์ได้รับการสนับสนุนอย่างสมบูรณ์และสามารถใช้ในโฟลเดอร์แบบวาดได้ อย่างไรก็ตาม สำหรับความเข้ากันได้แบบย้อนหลัง โฟลเดอร์ drawable-v24 ยังคงใช้เพื่อจัดเก็บ vector drawables เวอร์ชันแรสเตอร์สำหรับอุปกรณ์ที่ใช้ Android เวอร์ชันเก่า

คุณอาจเห็นโฟลเดอร์ mipmap หลายโฟลเดอร์ในโฟลเดอร์ res เช่น mipmap-hdpi, mipmap-mdpi, mipmap-xhdpi, mipmap-xxhdpi และ mipmap-xxxhdpi โฟลเดอร์เหล่านี้ใช้เพื่อจัดเก็บไอคอนตัวเรียกใช้งานสำหรับความหนาแน่นของหน้าจอที่แตกต่างกัน

ไอคอน Launcher คือไอคอนที่ปรากฏบนหน้าจอหลักหรือลิ้นชักแอปของผู้ใช้เมื่อติดตั้งแอป เพื่อให้แน่ใจว่าไอคอน Launcher จะดูคมชัดบนอุปกรณ์ที่มีความละเอียดหน้าจอต่างกัน คุณต้องมีไอคอนเดียวกันหลายเวอร์ชัน โดยแต่ละเวอร์ชันจะปรับให้เหมาะกับความหนาแน่นของหน้าจอเฉพาะ

โฟลเดอร์ mipmap ถูกใช้แทนโฟลเดอร์ที่วาดได้สำหรับไอคอนตัวเรียกใช้งาน เนื่องจากไอคอนตัวเรียกใช้งานเป็นภาพชนิดพิเศษที่ไม่ได้ใช้ภายใน UI ของแอป แต่ใช้เป็นตัวแทนของตัวแอปเอง เมื่อใช้โฟลเดอร์ mipmap คุณกำลังแสดงให้ Android ทราบว่ารูปภาพในโฟลเดอร์เหล่านี้เป็นไอคอนตัวเรียกใช้งาน และควรได้รับการปฏิบัติที่แตกต่างจากรูปภาพอื่นๆ

คำต่อท้าย (-hdpi, -mdpi ฯลฯ) ในชื่อโฟลเดอร์จะสอดคล้องกับความหนาแน่นของหน้าจอที่รูปภาพได้รับการปรับให้เหมาะสม ตัวอย่างเช่น โฟลเดอร์ -hdpi มีภาพที่ปรับให้เหมาะสมสำหรับหน้าจอที่มีความหนาแน่นสูง ในขณะที่โฟลเดอร์ -xxxhdpi มีภาพที่ปรับให้เหมาะกับหน้าจอที่มีความหนาแน่นสูงเป็นพิเศษ

การมีโฟลเดอร์ mipmap หลายโฟลเดอร์ที่มีความหนาแน่นต่างกันทำให้มั่นใจได้ว่าไอคอน Launcher ของแอปจะดูคมชัดบนอุปกรณ์ที่มีความละเอียดหน้าจอต่างกัน ซึ่งจะมอบประสบการณ์การทำแอพที่ดียิ่งขึ้น

Android Studio โครงสร้างไฟล์โปรเจครายละเอียด res

ในโครงการ Android Studio มีหลายโฟลเดอร์และไฟล์ที่ใช้ในการจัดระเบียบและจัดโครงสร้างรหัสและทรัพยากรของแอป โฟลเดอร์แอพมีซอร์สโค้ดสำหรับแอพ ในขณะที่ไฟล์ build.gradle ในรูทและโฟลเดอร์แอพใช้เพื่อกำหนดการตั้งค่าบิลด์และการอ้างอิงของแอพ

ไฟล์ AndroidManifest.xml เป็นไฟล์พิเศษที่มีข้อมูลเกี่ยวกับแอพ เช่น ชื่อแพ็คเกจ การอนุญาต และกิจกรรมต่างๆ ระบบปฏิบัติการ Android ใช้ไฟล์นี้เพื่อกำหนดวิธีการติดตั้งและเรียกใช้แอป

โฟลเดอร์ src มีซอร์สโค้ดสำหรับแอป ซึ่งโดยทั่วไปเขียนด้วย Kotlin หรือ Java โฟลเดอร์ res มีทรัพยากรของแอป เช่น เค้าโครง สตริง และรูปภาพ โฟลเดอร์ drawable และ drawable-v24 ภายในโฟลเดอร์ res มีทรัพยากรรูปภาพที่แอปใช้ ในขณะที่โฟลเดอร์ mipmap ใช้เพื่อจัดเก็บไอคอนเรียกใช้งานสำหรับความหนาแน่นของหน้าจอที่แตกต่างกัน

เมื่อเข้าใจวัตถุประสงค์และฟังก์ชันของโฟลเดอร์และไฟล์เหล่านี้แล้ว การทำแอพจะสามารถจัดระเบียบและจัดโครงสร้างโครงการ Android Studio ของตนได้อย่างมีประสิทธิภาพ ทำให้การพัฒนา ทดสอบ และบำรุงรักษาแอปทำได้ง่ายขึ้น

เขียนแอพ Android Studio

ตอนที่ 1 ติดตั้ง Android Studio และ Hello World
ตอนที่ 3 Android Studio Kotlin แนะนำ Layouts