หน้านี้อธิบายพร็อพเพอร์ตี้และตัวเลือกที่จําเป็นสําหรับเตรียมโปรเจ็กต์คลัง 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
ระดับโมดูล โดยทำดังนี้
Groovy
android { testFixtures { enable = true } }
Kotlin
android { testFixtures { enable = true } }
เมื่อคุณเปิดฟิเจอร์การทดสอบ Gradle จะสร้างsrc/testFixtures
ชุดแหล่งที่มาโดยอัตโนมัติซึ่งคุณสามารถเขียนฟิเจอร์การทดสอบได้
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Gradle เกี่ยวกับการใช้ฟิกซ์เจอร์การทดสอบ