เตรียมคลังสำหรับการเผยแพร่

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

  1. buildTypes{}

  2. productFlavors{}

  3. 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 เกี่ยวกับการใช้ อุปกรณ์ทดสอบ