ภาพรวมโปรเจ็กต์

โปรเจ็กต์ใน Android Studio มีทุกอย่างที่กำหนดเวิร์กสเปซสำหรับแอป ตั้งแต่ซอร์สโค้ดและชิ้นงานไปจนถึงโค้ดทดสอบและการกำหนดค่าการสร้าง

เมื่อคุณเริ่มโปรเจ็กต์ใหม่ Android Studio จะสร้างโครงสร้างที่จำเป็นสำหรับไฟล์ทั้งหมดและทำให้ไฟล์เหล่านั้นปรากฏในหน้าต่างโปรเจ็กต์ใน Android Studio หากต้องการเปิดหน้าต่าง ให้เลือกดู > หน้าต่างเครื่องมือ > โปรเจ็กต์

หน้านี้จะแสดงภาพรวมของคอมโพเนนต์หลักในโปรเจ็กต์

โมดูล

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

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

หากต้องการเพิ่มโมดูลใหม่ลงในโปรเจ็กต์ ให้คลิกไฟล์ > ใหม่ > โมดูลใหม่

Android Studio มีโมดูล 2-3 ประเภทที่แตกต่างกัน ดังนี้

โมดูลแอป Android
จัดเตรียมคอนเทนเนอร์สําหรับซอร์สโค้ด ไฟล์ทรัพยากร และการตั้งค่าระดับแอป เช่น ไฟล์บิลด์ระดับโมดูลและไฟล์ Android Manifest เมื่อคุณสร้างโปรเจ็กต์ใหม่ โมดูลแอปเริ่มต้นจะมีชื่อว่า "app"

Android Studio มีโมดูลแอปประเภทต่อไปนี้

  • โทรศัพท์และแท็บเล็ต
  • ยานยนต์
  • Wear OS
  • โทรทัศน์
  • เครื่องมือสร้างโปรไฟล์พื้นฐาน
  • เปรียบเทียบ

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มโมดูลได้ที่หัวข้อเพิ่มโมดูลสำหรับอุปกรณ์ใหม่

โมดูลฟีเจอร์
แสดงถึงฟีเจอร์แบบโมดูลของแอปที่ใช้ประโยชน์จากการนำส่งฟีเจอร์ Play ได้ ตัวอย่างเช่น โมดูลฟีเจอร์ช่วยให้คุณมอบฟีเจอร์บางอย่างของแอปแก่ผู้ใช้ได้ตามต้องการหรือเป็นประสบการณ์การใช้งาน Instant ผ่าน Google Play Instant

Android Studio มีโมดูลฟีเจอร์ประเภทต่อไปนี้

  • โมดูลฟีเจอร์แบบไดนามิก
  • โมดูลคลังฟีเจอร์แบบไดนามิกแบบทันที

ดูข้อมูลเพิ่มเติมได้ที่การนำส่งฟีเจอร์ Play

โมดูลคลัง
จัดเตรียมคอนเทนเนอร์สําหรับโค้ดที่นํามาใช้ซ้ำได้ ซึ่งคุณใช้เป็นแหล่งที่มาของโมดูลแอปอื่นๆ หรือนําเข้าไปยังโปรเจ็กต์อื่นๆ ได้ โครงสร้างของโมดูลไลบรารีเหมือนกับโมดูลแอป แต่เมื่อสร้างแล้ว โมดูลจะสร้างไฟล์เก็บถาวรของโค้ดแทน 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 อื่นๆ ได้

บางครั้งเราเรียกโมดูลว่าโปรเจ็กต์ย่อย เนื่องจาก Gradle เรียกโมดูลว่าโปรเจ็กต์ด้วย

เมื่อสร้างโมดูลไลบรารีและต้องการเพิ่มเป็นทรัพยากร Dependency ให้กับโมดูลแอป Android คุณต้องประกาศดังนี้

Groovy

dependencies {
    implementation project(':my-library-module')
}

Kotlin

dependencies {
    implementation(project(":my-library-module"))
}

ไฟล์โปรเจ็กต์

โดยค่าเริ่มต้น 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) ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบ NDK ของ Android
main/
มีไฟล์ชุดซอร์ส "หลัก" ซึ่งได้แก่ โค้ดและทรัพยากร Android ที่ตัวแปรของบิลด์ทั้งหมดใช้ร่วมกัน (ไฟล์สำหรับตัวแปรของบิลด์อื่นๆ จะอยู่ในไดเรกทอรีย่อย เช่น src/debug/ สำหรับประเภทบิลด์แก้ไขข้อบกพร่อง) ดังนี้
AndroidManifest.xml
อธิบายลักษณะของแอปพลิเคชันและคอมโพเนนต์แต่ละรายการ ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมไฟล์ Manifest ของแอป
java/
มีซอร์สโค้ด Kotlin หรือ Java หรือทั้ง 2 อย่าง หากแอปของคุณมีทั้งซอร์สโค้ด Kotlin และ Java
kotlin/
มีเฉพาะแหล่งที่มาของโค้ด Kotlin
res/
มีทรัพยากรแอปพลิเคชัน เช่น ไฟล์ที่วาดได้และไฟล์สตริง 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 ของไลบรารี ไฟล์ และโมดูลสําหรับโมดูลนี้ คุณสามารถเพิ่ม แก้ไข และลบทรัพยากร Dependency จากแผงนี้ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อกําหนดของโมดูลได้ที่หัวข้อกําหนดค่าตัวแปรการสร้าง

  • ตัวแปรของบิวด์: ช่วยให้คุณกำหนดค่าตัวแปรและประเภทบิวด์ต่างๆ สำหรับโปรเจ็กต์ได้

    • Flavour: ช่วยให้คุณสร้างFlavour ของบิลด์ได้หลายรายการ โดยที่แต่ละ Flavour จะระบุชุดการตั้งค่าการกําหนดค่า เช่น เวอร์ชัน SDK ขั้นต่ำและเวอร์ชันเป้าหมายของโมดูล รวมถึงรหัสเวอร์ชันและชื่อเวอร์ชัน

      ตัวอย่างเช่น คุณอาจกำหนด Flavor 1 รายการที่มี SDK ขั้นต่ำ 21 และ SDK เป้าหมาย 29 และอีก Flavor 1 รายการที่มี SDK ขั้นต่ำ 24 และ SDK เป้าหมาย 33

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