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