หน้านี้อธิบายพร็อพเพอร์ตี้และตัวเลือกที่จําเป็นสําหรับเตรียมโปรเจ็กต์คลัง Android เพื่อการเผยแพร่โดยใช้ปลั๊กอิน Android Gradle (AGP) แม้ว่าคุณจะตั้งค่าพร็อพเพอร์ตี้เหล่านี้บางส่วนตั้งแต่เริ่มต้นสร้างไลบรารีแล้ว แต่ให้อ่านคำแนะนำต่อไปนี้เพื่อเพิ่มประสิทธิภาพการตั้งค่า
เลือกเนมสเปซ
ไลบรารี Android ต้องประกาศเนมสเปซเพื่อให้สร้างคลาส R
ที่ไม่ซ้ำกันได้เมื่อคอมไพล์ทรัพยากร เนมสเปซนี้ควรตรงกับแพ็กเกจคลาสรูทของไลบรารีอย่างใกล้เคียงกันเพื่อไม่ให้เกิดความสับสนเมื่อผู้ใช้นําเข้าคลาสปกติจากไลบรารีและคลาส R
ของไลบรารี
ตั้งแต่ AGP 7.0 เป็นต้นไป คุณสามารถตั้งค่าเนมสเปซในไฟล์ build.gradle
ของแอปได้ ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้
ดึงดูด
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
ระดับโมดูล ดังนี้
ดึงดูด
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 เกี่ยวกับการใช้ฟิกซ์เจอร์การทดสอบ