โปรเจ็กต์ใน Android Studio มีทุกอย่างที่กำหนดพื้นที่ทํางานสําหรับแอป ตั้งแต่ซอร์สโค้ดและชิ้นงานไปจนถึงโค้ดทดสอบและการกําหนดค่าการสร้าง
เมื่อเริ่มโปรเจ็กต์ใหม่ Android Studio จะสร้างโครงสร้างที่จำเป็น สำหรับไฟล์ทั้งหมดและทำให้ไฟล์เหล่านั้นปรากฏในหน้าต่างโปรเจ็กต์ใน Android Studio หากต้องการเปิดหน้าต่าง ให้เลือกดู > หน้าต่างเครื่องมือ > โปรเจ็กต์
หน้านี้แสดงภาพรวมของคอมโพเนนต์หลักภายในโปรเจ็กต์
โมดูล
โมดูลคือชุดไฟล์ต้นฉบับและการตั้งค่าบิลด์ที่ช่วยให้คุณแบ่งโปรเจ็กต์ออกเป็นหน่วยฟังก์ชันการทำงานที่แยกกัน โปรเจ็กต์อาจมีโมดูลเดียวหรือหลายโมดูล และโมดูลหนึ่งอาจใช้โมดูลอื่นเป็น การอ้างอิงได้ คุณสร้าง ทดสอบ และแก้ไขข้อบกพร่องของแต่ละโมดูลได้อย่างอิสระ โปรดทราบว่าคุณอาจได้ยินการเรียกโมดูลว่า "โปรเจ็กต์" หรือ "โปรเจ็กต์ย่อย" ในเอกสารประกอบของ Gradle
โมดูลเพิ่มเติมมีประโยชน์เมื่อสร้างไลบรารีโค้ดภายในโปรเจ็กต์ของคุณเอง หรือเมื่อต้องการสร้างชุดโค้ดและทรัพยากรที่แตกต่างกันสำหรับอุปกรณ์ประเภทต่างๆ เช่น โทรศัพท์และอุปกรณ์ที่สวมใส่ได้ แต่ยังคงให้ไฟล์ทั้งหมดอยู่ในขอบเขตภายในโปรเจ็กต์เดียวกันและแชร์โค้ดบางส่วน
หากต้องการเพิ่มโมดูลใหม่ลงในโปรเจ็กต์ ให้คลิกไฟล์ > ใหม่ > โมดูลใหม่
Android Studio มีโมดูลที่แตกต่างกัน 2 ประเภท ได้แก่
- โมดูลแอป Android
- มีคอนเทนเนอร์สำหรับซอร์สโค้ด ไฟล์ทรัพยากร และการตั้งค่าระดับแอป เช่น ไฟล์บิลด์ระดับโมดูลและไฟล์ Android Manifest ของแอป เมื่อ สร้างโปรเจ็กต์ใหม่ โมดูลแอปเริ่มต้นจะมีชื่อว่า "app" - Android Studio มีโมดูลแอปประเภทต่อไปนี้ - โทรศัพท์และแท็บเล็ต
- ยานยนต์
- Wear OS
- โทรทัศน์
 - แต่ละโมดูลมีไฟล์ที่จำเป็นและเทมเพลตโค้ดบางรายการที่ เหมาะสมกับแอปหรือประเภทอุปกรณ์ที่เกี่ยวข้อง - ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มโมดูลได้ที่หัวข้อเพิ่มโมดูลสำหรับอุปกรณ์ใหม่ 
- โมดูลฟีเจอร์
- 
    แสดงถึงฟีเจอร์แบบแยกส่วนของแอปที่ใช้ประโยชน์จากการนำส่งฟีเจอร์
    Play ได้ ตัวอย่างเช่น โมดูลฟีเจอร์ช่วยให้คุณมอบฟีเจอร์บางอย่างของแอปให้แก่ผู้ใช้ได้ตามต้องการหรือเป็นประสบการณ์การใช้งาน Instant ผ่าน Google Play Instant
  Android Studio มีโมดูลฟีเจอร์ประเภทต่อไปนี้ - โมดูลฟีเจอร์แบบไดนามิก
- โมดูลไลบรารีฟีเจอร์แบบไดนามิกทันที
 ดูข้อมูลเพิ่มเติมได้ที่หัวข้อเกี่ยวกับ การนำส่งฟีเจอร์ Play 
- โมดูลคลัง
- มีคอนเทนเนอร์สำหรับโค้ดที่นำกลับมาใช้ใหม่ได้ ซึ่งคุณ สามารถใช้เป็นทรัพยากร Dependency ในโมดูลแอปอื่นๆ หรือนำเข้าไปยังโปรเจ็กต์อื่นๆ ได้ ในเชิงโครงสร้าง โมดูลไลบรารีจะเหมือนกับโมดูลแอป แต่เมื่อสร้างแล้ว โมดูลจะสร้างไฟล์ที่เก็บโค้ดแทนที่จะเป็น APK จึงติดตั้งใน อุปกรณ์ไม่ได้ - ในหน้าต่างสร้างโมดูลใหม่ Android Studio จะมีโมดูลไลบรารีประเภทต่อไปนี้ - ไลบรารี Android: มีไฟล์ทุกประเภทที่รองรับ ในโปรเจ็กต์ Android ยกเว้นโค้ด C++ แบบเนทีฟ รวมถึงซอร์สโค้ด Java และ Kotlin ทรัพยากร และไฟล์ Manifest ผลลัพธ์ของการสร้างคือไฟล์ Android Archive (AAR) ที่คุณเพิ่มเป็น ทรัพยากร Dependency สำหรับโมดูลแอป Android ได้
- ไลบรารีแบบเนทีฟของ Android: มีไฟล์ทุกประเภทที่รองรับ ในโปรเจ็กต์ Android ซึ่งคล้ายกับไลบรารี Android อย่างไรก็ตาม ไลบรารีเนทีฟของ Android ยังมี ซอร์สโค้ด C++ เนทีฟได้ด้วย ผลลัพธ์ของการสร้างคือไฟล์ Android Archive (AAR) ที่คุณสามารถ เพิ่มเป็นทรัพยากร Dependency สำหรับโมดูลแอป Android ได้
- ไลบรารี Java หรือ Kotlin: มีเฉพาะไฟล์ต้นฉบับ Kotlin หรือ Java ผลลัพธ์ของการสร้างคือไฟล์ Java Archive (JAR) ที่คุณเพิ่มเป็น ทรัพยากร Dependency สำหรับโมดูลแอป Android หรือโปรเจ็กต์ Kotlin หรือ Java อื่นๆ ได้
- การเปรียบเทียบ > การเปรียบเทียบย่อย: มีไฟล์ที่จำเป็นต่อการวัดประสิทธิภาพของโค้ดและผลลัพธ์การเปรียบเทียบอย่างสม่ำเสมอ โมดูล Microbenchmark มีประโยชน์อย่างยิ่งในการวัดประสิทธิภาพของโค้ดขนาดเล็ก ที่ใช้ซ้ำๆ ดูข้อมูลเพิ่มเติมได้ที่ เกี่ยวกับ Microbenchmark
 - เมื่อสร้างโมดูลไลบรารีและต้องการเพิ่มเป็นทรัพยากร Dependency ลงในโมดูลแอป Android คุณต้องประกาศดังนี้ - Groovy- dependencies { implementation project(':my-library-module') } - Kotlin- dependencies { implementation(project(":my-library-module")) } 
- โมดูลทดสอบ
- แยกการทดสอบออกจากโค้ดส่วนอื่นๆ คุณสามารถกำหนดค่าโมดูลทดสอบให้ กำหนดเป้าหมายตัวแปรบิลด์ที่เฉพาะเจาะจงได้ - Android Studio มีโมดูลทดสอบประเภทต่อไปนี้ - เครื่องมือสร้างโปรไฟล์พื้นฐาน: โปรไฟล์พื้นฐานช่วยให้การโต้ตอบของผู้ใช้ เช่น การไปยังส่วนต่างๆ และการเลื่อนราบรื่นขึ้นในครั้งแรกที่เรียกใช้ สร้างโปรไฟล์พื้นฐาน สําหรับเส้นทางของผู้ใช้ที่สําคัญเพื่อปรับปรุงประสิทธิภาพของแอปและประสบการณ์ของผู้ใช้
- Benchmark > Macrobenchmark: มีไฟล์ที่จำเป็นต่อการวัดประสิทธิภาพของโค้ดและผลการเปรียบเทียบอย่างสม่ำเสมอ โมดูลการเปรียบเทียบมาโครมีประโยชน์อย่างยิ่งในการวัดประสิทธิภาพของกรณีการใช้งานที่ใหญ่ขึ้นของแอป เช่น การเลื่อนดูรายการหรือการจัดการ UI อื่นๆ ดูข้อมูลเพิ่มเติมได้ที่ เขียน Macrobenchmark
 
ไฟล์โปรเจ็กต์
 
โดยค่าเริ่มต้น Android Studio จะแสดงไฟล์โปรเจ็กต์ในมุมมอง Android มุมมองนี้ไม่ได้แสดงถึง ลำดับชั้นของไฟล์จริงในดิสก์ แต่จะจัดระเบียบตามโมดูลและประเภทไฟล์เพื่อลดความซับซ้อนในการไปยังส่วนต่างๆ ระหว่างไฟล์แหล่งที่มาหลักของโปรเจ็กต์ โดยซ่อนไฟล์หรือไดเรกทอรีบางรายการที่ไม่ได้ใช้กันทั่วไป
ความแตกต่างด้านโครงสร้างบางประการระหว่างมุมมอง Android กับโครงสร้างในดิสก์มีดังนี้ มุมมอง Android
- แสดงไฟล์การกำหนดค่าที่เกี่ยวข้องกับการบิลด์ของโปรเจ็กต์ทั้งหมดในกลุ่มสคริปต์ Gradle ระดับบนสุด
- แสดงไฟล์ Manifest ทั้งหมดสำหรับแต่ละโมดูลในกลุ่มระดับโมดูลเมื่อคุณ มีไฟล์ Manifest ที่แตกต่างกันสำหรับผลิตภัณฑ์รสชาติและประเภทบิลด์ที่แตกต่างกัน
- แสดงไฟล์ทรัพยากรทางเลือกทั้งหมดในกลุ่มเดียว แทนที่จะอยู่ในโฟลเดอร์แยกต่างหากต่อตัวระบุทรัพยากร เช่น ไอคอนตัวเรียกใช้ทุกเวอร์ชันที่มีความหนาแน่น จะแสดงเคียงข้างกัน
ภายในโมดูลแอป Android แต่ละโมดูล ไฟล์จะแสดงในกลุ่มต่อไปนี้
- ไฟล์ Manifest
- มีไฟล์ AndroidManifest.xml
- java
- มีไฟล์ซอร์สโค้ด Kotlin และ Java ซึ่งคั่นด้วยชื่อแพ็กเกจ รวมถึงโค้ดทดสอบ JUnit
- res
- มีทรัพยากรทั้งหมดที่ไม่ใช่โค้ด เช่น สตริง UI และ รูปภาพบิตแมป ซึ่งแบ่งออกเป็นไดเรกทอรีย่อยที่เกี่ยวข้อง ดูข้อมูลเพิ่มเติม เกี่ยวกับประเภททรัพยากรที่เป็นไปได้ได้ที่ภาพรวมทรัพยากรของแอป
มุมมองโปรเจ็กต์
 
หากต้องการดูโครงสร้างไฟล์จริงของโปรเจ็กต์ รวมถึงไฟล์ทั้งหมดที่ซ่อนจากมุมมอง Android ให้เลือกโปรเจ็กต์จากเมนูที่ด้านบนของหน้าต่างโปรเจ็กต์
เมื่อเลือกมุมมองโปรเจ็กต์ คุณจะเห็นไฟล์และไดเรกทอรีอีกมากมาย รวมถึงรายการต่อไปนี้
- module-name/
- 
  - build/
- มีเอาต์พุตบิลด์
- libs/
- มีคลังเพลงส่วนตัว
- src/
- มีไฟล์โค้ดและทรัพยากรทั้งหมดสำหรับโมดูลใน
ไดเรกทอรีย่อยต่อไปนี้
      - androidTest/
- มีโค้ดสำหรับการทดสอบเครื่องมือที่ทำงานบนอุปกรณ์ Android ดูข้อมูลเพิ่มเติมได้ที่ ทดสอบใน Android Studio
- cpp/
- มีโค้ด C หรือ C++ เนทีฟที่ใช้ Java Native Interface (JNI) ดูข้อมูลเพิ่มเติมได้ที่ เอกสารประกอบของ Android NDK
- main/
- มีไฟล์ชุดแหล่งที่มา "หลัก" ซึ่งเป็นโค้ดและทรัพยากร Android
      ที่ตัวแปรบิลด์ทั้งหมดแชร์ (ไฟล์สำหรับตัวแปรบิลด์อื่นๆ
      จะอยู่ในไดเรกทอรีระดับเดียวกัน เช่น src/debug/สำหรับ ประเภทบิลด์ดีบัก):- AndroidManifest.xml
- อธิบายลักษณะของแอปพลิเคชันและคอมโพเนนต์แต่ละรายการ ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมไฟล์ Manifest ของแอป
- java/
- มีแหล่งที่มาของโค้ด Kotlin หรือ Java หรือทั้ง 2 อย่าง หากแอปมีทั้งซอร์สโค้ด Kotlin และ Java
- kotlin/
- มีเฉพาะแหล่งที่มาของโค้ด Kotlin
- res/
- มีทรัพยากรของแอปพลิเคชัน เช่น ไฟล์ Drawable และไฟล์สตริง UI ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมแหล่งข้อมูลของแอป
- assets/
- มีไฟล์ที่จะคอมไพล์เป็นไฟล์ APK ตามที่เป็นอยู่ เช่น
        ตำแหน่งนี้เหมาะสำหรับพื้นผิวและข้อมูลเกม คุณ
        ไปยังไดเรกทอรีนี้ได้ในลักษณะเดียวกับระบบไฟล์ทั่วไป โดยใช้
        URI และอ่านไฟล์เป็นสตรีมของไบต์โดยใช้
        AssetManager
 
- test/
- มีโค้ดสำหรับการทดสอบในเครื่องที่ทำงานบน JVM ของโฮสต์
 
- build.gradleหรือ- build.gradle.kts(โมดูล)
- ซึ่งกำหนดค่าบิลด์เฉพาะโมดูล build.gradleคือ ชื่อไฟล์ที่ถูกต้องหากคุณใช้ Groovy เป็นภาษาของสคริปต์บิลด์ และเป็นbuild.gradle.ktsหากคุณใช้สคริปต์ Kotlin
 
- build.gradleหรือ- build.gradle.kts(โปรเจ็กต์)
- ซึ่งจะกำหนดค่าบิลด์ที่มีผลกับทุกโมดูล build.gradleคือ ชื่อไฟล์ที่ถูกต้องหากคุณใช้ Groovy เป็นภาษาของสคริปต์บิลด์ และbuild.gradle.ktsหากคุณใช้สคริปต์ Kotlin ไฟล์นี้เป็นส่วนสำคัญของโปรเจ็กต์ ดังนั้นให้เก็บไว้ ในการควบคุมการแก้ไขพร้อมกับซอร์สโค้ดอื่นๆ ทั้งหมดดูข้อมูลเกี่ยวกับไฟล์บิลด์อื่นๆ ได้ที่กำหนดค่าบิลด์ 
การตั้งค่าโครงสร้างโปรเจ็กต์
หากต้องการเปลี่ยนการตั้งค่าต่างๆ สำหรับโปรเจ็กต์ Android Studio ให้เปิดกล่องโต้ตอบโครงสร้างโปรเจ็กต์โดยคลิกไฟล์ > โครงสร้างโปรเจ็กต์ โดยจะมีส่วนต่อไปนี้
- โปรเจ็กต์: ตั้งค่าเวอร์ชันสำหรับ Gradle และ ปลั๊กอิน Android Gradle รวมถึงชื่อตำแหน่งที่เก็บ
- ตำแหน่ง SDK: ตั้งค่าตำแหน่งของ JDK, Android SDK และ Android NDK ที่โปรเจ็กต์ของคุณใช้
- ตัวแปร: ให้คุณแก้ไขตัวแปรที่ใช้ภายในสคริปต์บิลด์
- 
    โมดูล: ให้คุณแก้ไขการกำหนดค่าบิลด์เฉพาะโมดูล ซึ่งรวมถึง SDK เป้าหมายและ SDK ขั้นต่ำ ลายเซ็นของแอป และทรัพยากร Dependency ของไลบรารี
 หน้าการตั้งค่าของแต่ละโมดูลจะแบ่งออกเป็นแท็บต่อไปนี้
    - พร็อพเพอร์ตี้: ระบุเวอร์ชันของ SDK และเครื่องมือสร้าง ที่จะใช้ในการคอมไพล์โมดูล
- การลงนาม: ระบุใบรับรองที่จะใช้เพื่อ ลงนาม แอป
 
- 
    ทรัพยากร Dependency: แสดงรายการทรัพยากร Dependency ของไลบรารี ไฟล์ และโมดูล สำหรับโมดูลนี้ คุณสามารถเพิ่ม แก้ไข และลบการอ้างอิง จากแผงนี้ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการขึ้นต่อกันของโมดูลได้ที่ กำหนดค่าตัวแปรบิลด์ 
- 
    ตัวแปรของบิลด์: ช่วยให้คุณกำหนดค่ารสชาติและประเภทบิลด์ต่างๆ สำหรับโปรเจ็กต์ได้ - 
        Flavor: ให้คุณสร้างFlavor ของบิลด์ได้หลายรายการ โดย แต่ละ Flavor จะระบุชุดการตั้งค่าการกำหนดค่า เช่น เวอร์ชัน SDK ขั้นต่ำและเป้าหมายของโมดูล รวมถึง รหัสเวอร์ชันและ ชื่อเวอร์ชัน เช่น คุณอาจกำหนด 1 รสชาติที่มี SDK ขั้นต่ำเป็น 21 และ SDK เป้าหมายเป็น 29 และอีก 1 รสชาติที่มี SDK ขั้นต่ำเป็น 24 และ SDK เป้าหมายเป็น 33 
- ประเภทบิลด์: ให้คุณสร้างและแก้ไขการกำหนดค่าบิลด์ได้ตามที่อธิบายไว้ในกำหนดค่าตัวแปรของบิลด์ โดยค่าเริ่มต้น ทุกโมดูลจะมีประเภทบิลด์ debug และ release และคุณสามารถกำหนดเพิ่มเติมได้ตามต้องการ
 
- 
        
