โปรเจ็กต์ 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 จะนำโค้ดและทรัพยากรที่ไม่จำเป็นออก เพิ่มประสิทธิภาพรันไทม์ และลดจำนวนโค้ดเพิ่มเติมด้วยการเปลี่ยนชื่อตัวระบุ |