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