กำหนดค่าโมดูลแอป

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

  • เปลี่ยนรหัสแอปพลิเคชันสำหรับการกำหนดค่าบิลด์ต่างๆ
  • ปรับเนมสเปซอย่างปลอดภัยโดยไม่ขึ้นอยู่กับรหัสแอปพลิเคชัน

ตั้งค่ารหัสแอปพลิเคชัน

แอป Android ทุกแอปมีรหัสแอปพลิเคชันที่ไม่ซ้ำกันซึ่งมีลักษณะคล้ายกับ Java แพ็กเกจ Kotlin เช่น com.example.myapp รหัสนี้จะระบุแอปของคุณโดยไม่ซ้ำกันใน อุปกรณ์และใน Google Play Store

รหัสแอปพลิเคชันของคุณกำหนดโดยพร็อพเพอร์ตี้ applicationId ในไฟล์ build.gradle.kts ตามที่แสดงไว้ที่นี่ อัปเดตค่าของ applicationId โดยแทนที่ com.example.myapp ด้วย ID ของแอป:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

ดึงดูด

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

แม้ว่ารหัสแอปพลิเคชันจะมีลักษณะเหมือนแพ็กเกจ Kotlin หรือ Java แบบดั้งเดิม กฎการตั้งชื่อสำหรับรหัสแอปพลิเคชัน มีข้อจำกัดมากกว่าเล็กน้อย ดังนี้

  • จะต้องมีอย่างน้อย 2 ส่วน (จุด 1 จุดขึ้นไป)
  • แต่ละส่วนต้องขึ้นต้นด้วยตัวอักษร
  • อักขระทั้งหมดต้องเป็นตัวอักษรและตัวเลขคละกันหรือขีดล่าง [a-zA-Z0-9_]

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

เราขอแนะนำให้คุณดำเนินการต่อไปนี้เมื่อตั้งค่ารหัสแอปพลิเคชัน

  • คงรหัสแอปพลิเคชันให้เหมือนกับเนมสเปซ ความแตกต่างระหว่าง คุณสมบัติ 2 รายการอาจทำให้สับสนเล็กน้อย แต่หากคุณคงคุณสมบัติเหล่านี้ไว้เหมือนเดิม ไม่มีอะไรต้องกังวล
  • อย่าเปลี่ยนรหัสแอปพลิเคชันหลังจากที่คุณเผยแพร่แอปแล้ว ถ้าเปลี่ยนแล้ว Google Play Store จะถือว่าการอัปโหลดที่ตามมาเป็นแอปใหม่
  • กำหนดรหัสแอปพลิเคชันอย่างชัดเจน หากรหัสแอปพลิเคชันไม่ได้ระบุอย่างชัดเจน ที่กำหนดไว้โดยใช้พร็อพเพอร์ตี้ applicationId โดยอัตโนมัติ เป็นเนมสเปซ ซึ่งหมายความว่า การเปลี่ยนแปลงเนมสเปซจะเปลี่ยน รหัสแอปพลิเคชัน ซึ่งมักไม่ใช่สิ่งที่คุณต้องการ

เปลี่ยนรหัสแอปพลิเคชันสำหรับการทดสอบ

โดยค่าเริ่มต้น เครื่องมือบิลด์จะใช้รหัสแอปพลิเคชันกับ การทดสอบการใช้เครื่องมือ APK ที่ใช้รหัสแอปพลิเคชันสำหรับตัวแปรบิลด์ที่ระบุต่อท้าย .test ตัวอย่างเช่น APK การทดสอบสำหรับพารามิเตอร์ ตัวแปรของบิลด์ com.example.myapp.free รายการ มีรหัสแอปพลิเคชัน com.example.myapp.free.test

แม้ว่าจะไม่จำเป็น แต่คุณสามารถเปลี่ยนรหัสแอปพลิเคชันได้โดย กำหนดพร็อพเพอร์ตี้ testApplicationId ใน defaultConfig หรือ บล็อก productFlavor

ตั้งค่าเนมสเปซ

โมดูล Android ทุกโมดูลมีเนมสเปซ ซึ่งใช้เป็น Kotlin หรือ Java ชื่อแพ็กเกจสำหรับ R และ BuildConfig ชั้นเรียนที่สร้างขึ้น

เนมสเปซของคุณกำหนดโดยพร็อพเพอร์ตี้ namespace ในส่วน build.gradle.kts ดังที่แสดงในข้อมูลโค้ดต่อไปนี้ namespace แรกจะเป็นชื่อแพ็กเกจที่คุณเลือกเมื่อ สร้างโปรเจ็กต์

Kotlin

android {
    namespace = "com.example.myapp"
    ...
}

ดึงดูด

android {
    namespace "com.example.myapp"
    ...
}

ขณะที่สร้างแอปในแพ็กเกจแอปพลิเคชันสุดท้าย (APK) แอป Android เครื่องมือบิลด์ใช้เนมสเปซเป็นเนมสเปซสำหรับ R ที่แอปของคุณสร้างขึ้น ซึ่งใช้เพื่อเข้าถึง แหล่งข้อมูลของแอป ตัวอย่างเช่น ในไฟล์บิลด์ก่อนหน้า คลาส R จะสร้างขึ้นที่ com.example.myapp.R

ชื่อที่กำหนดให้กับพร็อพเพอร์ตี้ namespace ของไฟล์ build.gradle.kts ควรตรงกับชื่อแพ็กเกจฐานของโปรเจ็กต์เสมอ โดยที่คุณเก็บไว้ กิจกรรมและโค้ดอื่นๆ ของแอป คุณสามารถใช้แพ็กเกจย่อยอื่นๆ ได้ใน โปรเจ็กต์ของคุณ แต่ไฟล์เหล่านั้นต้องนำเข้าคลาส R โดยใช้เมธอด เนมสเปซจากพร็อพเพอร์ตี้ namespace

เพื่อให้เวิร์กโฟลว์ง่ายขึ้น ให้ใช้เนมสเปซเดียวกันกับ รหัสแอปพลิเคชันตามที่กำหนดไว้โดยค่าเริ่มต้น

เปลี่ยนเนมสเปซ

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

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

หากคุณมีชื่อที่แตกต่างกันสำหรับ namespace และ Gradle applicationId สำเนาเครื่องมือบิลด์ รหัสแอปพลิเคชันลงในไฟล์ Manifest สุดท้ายของแอปในตอนท้ายของบิลด์ ดังนั้นหากคุณตรวจสอบไฟล์ AndroidManifest.xml หลังจากบิลด์ แอตทริบิวต์ package ได้รับการตั้งค่าเป็น รหัสแอปพลิเคชัน แอตทริบิวต์ package ของไฟล์ Manifest ที่ผสานรวมคือตำแหน่งที่ Google Play Store และแพลตฟอร์ม Android ต้องการระบุแอปของคุณ

เปลี่ยนเนมสเปซสำหรับการทดสอบ

เนมสเปซเริ่มต้นสำหรับชุดแหล่งที่มา androidTest และ test คือชุดแหล่งที่มาหลัก เนมสเปซโดยเพิ่ม .test ต่อท้าย ตัวอย่างเช่น หาก พร็อพเพอร์ตี้ namespace ในไฟล์ build.gradle คือ com.example.myapp, ตามค่าเริ่มต้น เนมสเปซที่ใช้ทดสอบจะเป็น com.example.myapp.test หากต้องการเปลี่ยนเนมสเปซสำหรับการทดสอบ ให้ใช้เมธอด testNamespace ตามที่แสดงในข้อมูลโค้ดต่อไปนี้

Kotlin

android {
    namespace = "com.example.myapp"
    testNamespace = "com.example.mytestapp"
    ...
}

ดึงดูด

android {
    namespace "com.example.myapp"
    testNamespace "com.example.mytestapp"
    ...
}

ข้อควรระวัง: อย่าตั้งค่า testNamespace และ namespace เป็นค่าเดียวกัน มิฉะนั้นเนมสเปซ เกิดการชนกัน

ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบได้ที่ทดสอบแอปใน Android