โปรเจ็กต์ Android มีไฟล์ที่เกี่ยวข้องกับบิลด์และโครงสร้างไดเรกทอรีจำนวนมากสำหรับ จัดระเบียบแหล่งที่มาและทรัพยากรของแอปพลิเคชัน ก่อนเข้าสู่ เราจะดูรายละเอียดโครงสร้างโดยรวมและข้อมูลพื้นฐาน ของแต่ละส่วน
ตารางนี้แสดงรายการไฟล์ทั่วไปในโปรเจ็กต์ Android คำอธิบายของแต่ละ ไฟล์หรือไดเรกทอรีจะมีหมายเหตุเกี่ยวกับประเภทเนื้อหา ดีที่สุด แนวทางปฏิบัติก็จะเปลี่ยนแปลงไปตามเวลา และคำอธิบายเหล่านี้อาจไม่ตรงกับโปรเจ็กต์ ที่คุณได้รับหรือดาวน์โหลดมาจากอินเทอร์เน็ต
เมื่อเขียนไฟล์บิลด์ ให้ใช้วิธีการแบบประกาศ สร้างตรรกะและงาน ควรปรากฏในปลั๊กอินเท่านั้น โดยการจำกัดตรรกะของบิลด์ให้กับปลั๊กอิน ไฟล์บิลด์กลายเป็นการประกาศข้อมูล ซึ่งตรงกว่าที่จะทำให้เข้าใจง่ายขึ้น และการแก้ไข เวอร์ชันในอนาคตอาจมีข้อกำหนดเพิ่มเติม เช่น Gradle แบบประกาศ ซึ่งจะป้องกันตรรกะของบิลด์ใน
โฟลเดอร์/ไฟล์ | ใช้ |
---|---|
.gradle | ไดเรกทอรีแคชของโปรเจ็กต์ Gradle จัดการโดย Gradle และมีการกระจาย Gradle แบบดาวน์โหลด แคชของโปรเจ็กต์ และไฟล์การกำหนดค่า อย่าเปลี่ยนไฟล์ในไดเรกทอรีนี้ |
.idea/ | ข้อมูลเมตาของโปรเจ็กต์ Android Studio อย่าเปลี่ยนไฟล์ในไดเรกทอรีนี้ |
Build.gradle(.kts) | ควรมีเฉพาะการประกาศปลั๊กอินเพื่อตั้งค่าคลาสพาธปลั๊กอินทั่วไปในโปรเจ็กต์ย่อย โค้ดอื่นๆ ควรอยู่ในการตั้งค่าหรือไฟล์บิลด์ระดับโปรเจ็กต์ที่ซ้อนกัน |
gradle.properties | การกำหนดค่าการดำเนินการของ Gradle ประกอบด้วยพร็อพเพอร์ตี้ Gradle การควบคุมสภาพแวดล้อมของบิลด์ Gradle เช่น ขนาดฮีป การแคช และการดำเนินการแบบขนาน เรากำหนดพร็อพเพอร์ตี้ชั่วคราวบางอย่างของ Android ไว้ที่นี่เพื่อลดการเปลี่ยนแปลงใน AGP DSL เมื่อมีการเพิ่มและนำออกในภายหลัง |
Gralew (linux, Mac) gradlew.bat (Windows) | เปิดเครื่องบิลด์โดยดาวน์โหลดการกระจาย Gradle แล้วส่งต่อคำสั่งไปยังบิลด์ ซึ่งจะช่วยให้คุณเรียกใช้บิลด์ได้โดยไม่ต้องติดตั้ง Gradle ล่วงหน้า |
local.properties | การกำหนดค่าเครื่องภายใน มีพร็อพเพอร์ตี้ที่เกี่ยวข้องกับเครื่องภายใน เช่น ตำแหน่งของ Android SDK ยกเว้นไฟล์นี้จากการควบคุมแหล่งที่มา |
settings.gradle(.kts) | มีข้อมูลบิลด์ส่วนกลางสำหรับการเริ่มต้น Gradle และการกำหนดค่าโปรเจ็กต์ เช่น
|
Gradle/ | |
↳ libs.versions.toml | กำหนดตัวแปรสำหรับทรัพยากร Dependency และปลั๊กอินที่ใช้ภายในบิลด์ของคุณ คุณระบุเวอร์ชันที่ต้องการใช้ที่นี่ได้เพื่อให้แน่ใจว่าโปรเจ็กต์ย่อยทั้งหมดในโปรเจ็กต์ของคุณสอดคล้องกัน |
↳ Wrapper/ | |
↳ gradle‐wrapper.jar | ไฟล์ปฏิบัติการ Gradle Bootstrapping ดาวน์โหลดการกระจาย Gradle ที่ระบุ (หากไม่มี) และเรียกใช้การกระจายผ่านอาร์กิวเมนต์ใดๆ |
↳ gradle‐wrapper.properties | การกำหนดค่าสำหรับ Gradle Wrapper ระบุตำแหน่งที่จะดาวน์โหลดการกระจาย Gradle (รวมถึงเวอร์ชันที่จะใช้) |
แอป/ | โปรเจ็กต์ย่อย (หรือที่เรียกว่า "โมดูล" ใน Android Studio) สามารถสร้างแอปพลิเคชันหรือไลบรารีและอาจขึ้นอยู่กับโปรเจ็กต์ย่อยอื่นๆ หรือทรัพยากร Dependency ภายนอก
|
↳ build.gradle(.kts) | ประกาศวิธีสร้างโปรเจ็กต์ย่อยนี้ แต่ละโปรเจ็กต์ย่อยต้องมีไฟล์บิลด์แยกต่างหาก และควรมี
คุณไม่ควรรวมตรรกะของบิลด์ (เช่น คำจำกัดความหรือเงื่อนไขของฟังก์ชัน Kotlin) หรือการประกาศงานในไฟล์บิลด์ สร้างตรรกะและงานต่างๆ ควรอยู่ในปลั๊กอินเท่านั้น |
↳ src/ | ไฟล์แหล่งที่มาของโปรเจ็กต์ย่อย จัดกลุ่มไฟล์ต้นฉบับ (โค้ดและทรัพยากรของแอปพลิเคชัน) ลงในชุดแหล่งที่มา ชุดแหล่งที่มา |
↳ main/ | หลัก ชุดแหล่งข้อมูล ซอร์สโค้ดและทรัพยากรที่เหมือนกันในตัวแปรของบิลด์ทั้งหมด ซอร์สนี้ทำหน้าที่เป็นฐานสำหรับบิลด์ทั้งหมด และชุดแหล่งที่มาอื่นๆ ที่เฉพาะเจาะจงมากกว่าจะเพิ่มหรือลบล้างแหล่งที่มานี้ |
↳ java/ ↳ kotlin/ | ซอร์สโค้ด Kotlin และ Java ไดเรกทอรี |
↳ res/ | มีทรัพยากรของแอปพลิเคชัน เช่น ไฟล์ XML และรูปภาพ แอปพลิเคชันทั้งหมดใช้ทรัพยากรพื้นฐานบางอย่าง เช่น ไอคอน Launcher แต่ทรัพยากรจำนวนมาก เช่น เลย์เอาต์และเมนู จะใช้เฉพาะในแอปพลิเคชันแบบมุมมองเท่านั้น เขียนแอปพลิเคชันโดยใช้ทรัพยากร String ที่กำหนดไว้ในไดเรกทอรีนี้ |
↳ AndroidManifest.xml | ข้อมูลเมตาของแอปพลิเคชัน Android อ่านโดยตัวจัดการแพ็กเกจ Android เพื่อบอกระบบ
|
↳ androidTest/ | การทดสอบอุปกรณ์ ชุดแหล่งที่มา มีแหล่งที่มาสำหรับการทดสอบที่จะเรียกใช้ในอุปกรณ์หรือโปรแกรมจำลองที่ขับเคลื่อนโดย Android การทดสอบเหล่านี้เข้าถึงสภาพแวดล้อม Android จริงได้ แต่ดำเนินการช้ากว่าการทดสอบโฮสต์ |
↳ test/ | การทดสอบโฮสต์ ชุดแหล่งที่มา มีแหล่งที่มาสำหรับการทดสอบที่ทำงานใน JVM ในเครื่อง ไม่ใช่การทดสอบที่ทำงานในอุปกรณ์ การทดสอบเหล่านี้ดำเนินการได้รวดเร็วกว่าการทดสอบในอุปกรณ์มาก อย่างไรก็ตาม การเรียกระบบ (รวมถึงวงจรที่เรียกใช้แอปพลิเคชันของคุณ) จะต้องมีการจำลอง ปลอม ลอกเลียน หรือจำลอง ไฟล์ต้นฉบับทั้งหมดในชุดต้นฉบับ |
↳ proguard-rules.pro | กำหนดกฎเพื่อควบคุมการย่อแอปพลิเคชัน การเพิ่มประสิทธิภาพ และการปรับให้ยากต่อการอ่าน (Obfuscation) R8 จะนำโค้ดและทรัพยากรที่ไม่จำเป็นออก เพิ่มประสิทธิภาพรันไทม์ และลดจำนวนโค้ดเพิ่มเติมด้วยการเปลี่ยนชื่อตัวระบุ |