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