หน้านี้อธิบายพร็อพเพอร์ตี้และตัวเลือกที่จําเป็นสําหรับเตรียมโปรเจ็กต์คลัง Android เพื่อการเผยแพร่โดยใช้ปลั๊กอิน Android Gradle (AGP) แม้ว่าคุณจะตั้งค่าพร็อพเพอร์ตี้เหล่านี้บางส่วนตั้งแต่เริ่มสร้างคลังแล้ว แต่โปรดอ่านคําแนะนําต่อไปนี้เพื่อเพิ่มประสิทธิภาพการตั้งค่า
เลือกเนมสเปซ
ไลบรารี Android ต้องประกาศเนมสเปซเพื่อให้สร้างคลาส R
ที่ไม่ซ้ำกันเมื่อคอมไพล์ทรัพยากร เนมสเปซนี้ควรใกล้เคียงกับแพ็กเกจคลาสรูทของไลบรารีเพื่อหลีกเลี่ยงความสับสนเมื่อผู้ใช้นำเข้าคลาสปกติจากไลบรารีและคลาส R
ของไลบรารี
ตั้งแต่ AGP 7.0 เป็นต้นไป คุณสามารถตั้งค่าเนมสเปซในไฟล์ build.gradle
ของแอปได้ ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้
Groovy
android { namespace = 'com.example.library' }
Kotlin
android { namespace = "com.example.library" }
เนมสเปซเป็นพร็อพเพอร์ตี้ของไลบรารีที่นักพัฒนาแอปนำเสนอ และไม่เกี่ยวข้องกับข้อมูลประจำตัวของแอปพลิเคชัน ซึ่งตั้งค่าโดยใช้พร็อพเพอร์ตี้ applicationId
ใน AGP เวอร์ชันก่อนหน้า คุณสามารถตั้งค่าทั้งพร็อพเพอร์ตี้ applicationId
(สําหรับแอป) และพร็อพเพอร์ตี้ namespace
(สําหรับไลบรารี) โดยใช้แอตทริบิวต์ package
ของไฟล์ Manifest ซึ่งทําให้เกิดความสับสน
เลือกค่า minSdkVersion
การเลือก minSdkVersion
ให้กับคลังเป็นฟีเจอร์สำคัญของการเผยแพร่คลัง minSdkVersion
ควรแสดงเวอร์ชัน Android ขั้นต่ำที่โค้ดของคุณรองรับ
โปรดคำนึงถึงข้อควรพิจารณาต่อไปนี้เมื่อเลือก minSdkVersion
โดยทั่วไปแล้วการเลือก
minSdkVersion
ที่ต่ำจะทำให้คลังของคุณเผยแพร่ได้กว้างขึ้นโดยทั่วไปจะไม่มีการเรียกใช้โค้ดของไลบรารีเว้นแต่แอปจะเรียกใช้อย่างชัดเจน แอปจะยังคงทำงานใน Android เวอร์ชันที่ต่ำกว่าที่ไลบรารีต้องอาศัยได้หากไลบรารีนั้นไม่จำเป็นต่อฟังก์ชันหลักของแอป โดยจะทำการตรวจสอบรันไทม์ก่อนเรียกใช้ไลบรารี ดังนั้น ให้ตั้งค่า
minSdkVersion
ของไลบรารีให้ต่ำพอที่จะฝังลงในแอปและเรียกใช้เมื่อเป็นไปได้ เพื่อช่วยเข้าถึงผู้ใช้ได้มากขึ้นการเลือก
minSdkVersion
ที่สูงอาจทำให้แอปพลิเคชันไม่รวมคลังการผสานไฟล์ Manifest ซึ่งเป็นขั้นตอนใน AGP ที่ผสานไฟล์ Manifest จากแอปและจาก Dependency ของแอปจะบังคับให้ไม่มี Dependency ที่มี
minSdkVersion
สูงกว่าแอปการเลือก
minSdkVersion
สูงอาจทำให้นักพัฒนาแอปปิดใช้การตรวจสอบความปลอดภัยของการผสานไฟล์ Manifest ซึ่งจะทำให้เกิดปัญหาในกระบวนการสร้างในภายหลังเนื่องจากการควบรวมไฟล์ Manifest ป้องกันไม่ให้โปรเจ็กต์ของแอปรวมไลบรารีที่มี
minSdkVersion
สูงกว่าตัวแอปเอง นักพัฒนาแอปจึงอาจปิดใช้การตรวจสอบความปลอดภัยของการผสานไฟล์ Manifest เพื่อลดข้อผิดพลาดของรุ่นให้เหลือน้อยที่สุด แต่วิธีนี้อาจทำให้เกิดปัญหาการไม่เข้ากันได้ในขั้นตอนถัดไปการเลือก
minSdkVersion
สูงอาจจำเป็นในบางกรณีพิเศษที่ไฟล์ Manifest ของไลบรารีมีตัวรับสัญญาณการออกอากาศหรือกลไกอื่นๆ ที่เรียกใช้โค้ดโดยอัตโนมัติในกรณีเหล่านี้ การเลือก
minSdkVersion
สูงจะช่วยให้โค้ดทำงานได้ หรือจะปิดใช้ลักษณะการทำงานอัตโนมัติเพื่อให้แอปเลือกใช้การเรียกใช้ไลบรารีหลังจากทำการตรวจสอบที่เหมาะสมแล้วก็ได้
หากต้องการอนุญาตให้ฝังในแอป ให้ใช้คำอธิบายประกอบ RequiresApi
ในไลบรารีเพื่อบ่งบอกให้ผู้เรียกใช้ทราบว่าต้องดำเนินการตรวจสอบรันไทม์ Android
Lint ใช้ข้อมูล RequiresApi
เพื่อทำการตรวจสอบ ดูแหล่งข้อมูลเพิ่มเติมเกี่ยวกับการใช้คําอธิบายประกอบเพื่อปรับปรุงโค้ด API และ API ได้ที่ปรับปรุงการตรวจสอบโค้ดด้วยคําอธิบายประกอบ
ตั้งค่าข้อมูลเมตา AAR
ไลบรารี Android จะได้รับการบรรจุในรูปแบบไฟล์ Android Archive (AAR) ข้อมูลเมตา AAR ประกอบด้วยพร็อพเพอร์ตี้ที่ช่วย AGP ใช้ไลบรารี หากมีการใช้คลังของคุณในการกําหนดค่าที่เข้ากันไม่ได้ และมีการตั้งค่าข้อมูลเมตา AAR ผู้ใช้จะเห็นข้อความแสดงข้อผิดพลาดเพื่อช่วยแก้ปัญหา
เลือกค่า minCompileSdk
ตั้งแต่เวอร์ชัน 4.1 เป็นต้นไป AGP จะรองรับ minCompileSdk
ค่านี้ระบุค่าต่ำสุด
compileSdk
ที่โปรเจ็กต์ที่ใช้ได้จะใช้ได้ หากคลังของคุณมีรายการไฟล์ Manifest หรือทรัพยากรที่ใช้แอตทริบิวต์แพลตฟอร์มที่ใหม่กว่า คุณจะต้องตั้งค่านี้
คุณตั้งค่า minCompileSdk
ได้ในบล็อก defaultConfig{}
,
productFlavors{}
และ buildTypes{}
ในไฟล์ build.gradle
ระดับโมดูล ดังนี้
Groovy
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { foo { ... aarMetadata { minCompileSdk = 30 } } } }
Kotlin
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { register("foo") { ... aarMetadata { minCompileSdk = 30 } } } }
หากคุณตั้งค่า minCompileSdk
ไว้หลายตำแหน่ง Gradle จะจัดลําดับความสําคัญของตําแหน่งการตั้งค่าดังนี้ในระหว่างกระบวนการสร้าง
buildTypes{}
productFlavors{}
defaultConfig{}
ในตัวอย่างก่อนหน้านี้ เมื่อกำหนด minCompileSdk
ทั้งใน defaultConfig{}
และ productFlavors{}
ระบบจะจัดลำดับความสำคัญให้ productFlavors{}
และตั้งค่า minCompileSdk
เป็น 30
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Gradle ให้ความสำคัญกับการตั้งค่าเมื่อรวมโค้ดและทรัพยากรได้ที่สร้างด้วยชุดแหล่งที่มา
เปิดใช้ฟิกซ์เจอร์การทดสอบ
อุปกรณ์ทดสอบ มักจะใช้เพื่อตั้งค่าโค้ดที่กำลังทดสอบหรืออำนวยความสะดวกในการทดสอบ คอมโพเนนต์ ตั้งแต่เวอร์ชัน 7.1 เป็นต้นไป AGP จะสร้างฟิกซ์เจอร์การทดสอบสำหรับโปรเจ็กต์ไลบรารีได้นอกเหนือจากโปรเจ็กต์แอปพลิเคชันและโปรเจ็กต์ฟีเจอร์แบบไดนามิก
เมื่อเผยแพร่ไลบรารีเพื่อให้ผู้อื่นนำไปใช้ ให้พิจารณาสร้างฟิกซ์เจอร์ทดสอบสําหรับ API เปิดใช้อุปกรณ์ทดสอบได้ในไฟล์ build.gradle
ระดับโมดูล ดังนี้
ดึงดูด
android { testFixtures { enable = true } }
Kotlin
android { testFixtures { enable = true } }
เมื่อคุณเปิดฟิเจอร์การทดสอบ Gradle จะสร้างsrc/testFixtures
ชุดแหล่งที่มาโดยอัตโนมัติซึ่งคุณสามารถเขียนฟิเจอร์การทดสอบได้
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Gradle เกี่ยวกับการใช้ฟิกซ์เจอร์การทดสอบ