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

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

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

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

โมดูล

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

ดึงดูด

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

Kotlin

    dependencies {
        implementation(project(":my-library-module"))
    }
    
โมดูลทดสอบ

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

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

  • เครื่องมือสร้างโปรไฟล์พื้นฐาน: โปรไฟล์พื้นฐานช่วยให้การโต้ตอบของผู้ใช้ เช่น การไปยังส่วนต่างๆ และการเลื่อนราบรื่นขึ้นเมื่อเรียกใช้เป็นครั้งแรก สร้างโปรไฟล์พื้นฐาน สำหรับเส้นทางของผู้ใช้ที่สำคัญเพื่อปรับปรุงประสิทธิภาพของแอปและประสบการณ์ของผู้ใช้
  • Benchmark > Macrobenchmark: มีไฟล์ที่จำเป็นต่อการวัดประสิทธิภาพของโค้ดและผลลัพธ์การเปรียบเทียบอย่างสม่ำเสมอ โมดูล Macrobenchmark มีประโยชน์อย่างยิ่งในการวัดประสิทธิภาพของ Use Case ขนาดใหญ่ของแอป เช่น การเลื่อนดูรายการหรือการจัดการ UI อื่นๆ ดูข้อมูลเพิ่มเติมได้ที่เขียน Macrobenchmark

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

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

ความแตกต่างด้านโครงสร้างบางอย่างระหว่างมุมมอง Android กับโครงสร้างในดิสก์มีดังนี้ มุมมอง Android

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

ภายในโมดูลแอป 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 ขั้นต่ำและเป้าหมายของโมดูล รวมถึง รหัสเวอร์ชันและ ชื่อเวอร์ชัน

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

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