หน้านี้อธิบายการตั้งค่าแอปที่เป็นประโยชน์ในระดับโมดูล 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