หน้านี้อธิบายพร็อพเพอร์ตี้และตัวเลือกที่จำเป็นในการเตรียมโปรเจ็กต์คลัง 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 เพื่อลดข้อผิดพลาดในการสร้าง อย่างไรก็ตาม วิธีนี้อาจทำให้เกิดปัญหาความไม่เข้ากันอย่างแท้จริงในภายหลังในกรณีพิเศษที่ไฟล์ Manifest ของไลบรารีมี Broadcast Receiver หรือกลไกอื่นๆ ที่ทำให้โค้ดของไลบรารีทริกเกอร์โดยอัตโนมัติ คุณอาจต้องเลือก
minSdkVersion
ที่สูงในกรณีเหล่านี้ การเลือก
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 เกี่ยวกับการใช้ การทดสอบ