ExtServices

โมดูล ExtServices จะอัปเดตคอมโพเนนต์ของเฟรมเวิร์กสำหรับฟังก์ชันการทำงานหลักของระบบปฏิบัติการ เช่น การจัดอันดับการแจ้งเตือน กลยุทธ์การจับคู่ข้อความสำหรับการป้อนข้อความอัตโนมัติ แคชของพื้นที่เก็บข้อมูล ตัวตรวจสอบแพ็กเกจ และบริการอื่นๆ ที่ทำงานอย่างต่อเนื่อง โมดูลนี้อัปเดตได้ ซึ่งหมายความว่าโมดูลจะได้รับการอัปเดตฟังก์ชันการทำงานนอกรอบการเผยแพร่ Android ปกติ

คอมโพเนนต์ของบริการ

โมดูล ExtServices มีบริการต่อไปนี้

DisplayHashingService

ใน Android 12 ระบบจะใช้ DisplayHashingService เพื่อ สร้างอินสแตนซ์ของ DisplayHash สำหรับบัฟเฟอร์ที่ระบุ นอกจากนี้ยังใช้เพื่อยืนยันว่าระบบสร้างแฮชของจอแสดงผลที่เฉพาะเจาะจง เมื่อสร้างแฮชของจอแสดงผล ผู้เรียกสามารถระบุอัลกอริทึมการแฮชที่รองรับซึ่งต้องการใช้ได้

TextClassifierService

คอมโพเนนต์บริการ TextClassifierService รองรับTextClassifier API และฟีเจอร์ของ Android เช่น การเลือกข้อความอัจฉริยะและคำแนะนำอัจฉริยะในการ แจ้งเตือน โมดูล ExtServices มีตัวแยกประเภทข้อความเริ่มต้น ซึ่งได้รับการยืนยันโดยการทดสอบ CTS TextClassifierPolicyTest.java

หากจำเป็น คุณสามารถกำหนดค่าบริการตัวแยกประเภทข้อความที่กำหนดเองได้โดยระบุ config_defaultTextClassifierPackage ใน config.xml ตัวแยกประเภทข้อความที่กำหนดเองสามารถขึ้นอยู่กับตัวแยกประเภทข้อความเริ่มต้นได้โดยเรียกใช้ TextClassifierService.getDefaultTextClassifierImplementation(Context) เพื่อรับอินสแตนซ์ของตัวแยกประเภทข้อความเริ่มต้น

InlineSuggestionRenderService

คอมโพเนนต์บริการ InlineSuggestionRenderService ช่วยให้แสดงคำแนะนำแบบอินไลน์ในแถบคำแนะนำของแป้นพิมพ์ได้ ระบบจะเรียกใช้บริการนี้เพื่อแสดงออบเจ็กต์ View ที่มีคำแนะนำแบบอินไลน์สำหรับโฟลว์การป้อนข้อความอัตโนมัติแบบอินไลน์ใหม่ การใช้งานเริ่มต้นสำหรับบริการตัวแสดงผลนี้จะเรียกใช้ androidx.autofill.inline.Renderer เพื่อแสดงคำแนะนำ การทดสอบ CTS ใน /autofillservice/cts/inline/ จะยืนยันลักษณะการทำงานนี้

ชื่อแพ็กเกจ

อุปกรณ์ที่ใช้ Android 11 ต้องตั้งค่า config_servicesExtensionPackage (ใน frameworks/base/core/res/res/values/config.xml) เป็นชื่อแพ็กเกจ ExtServices (com.android.ext.services) การเปลี่ยนแปลงการกำหนดค่านี้ได้รับการยืนยันโดยการทดสอบ CTS cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java

ขอบเขตของโมดูล

ใน Android 12 ระบบจะย้ายโค้ดโมดูล ExtServices จาก frameworks/base/apex/extservices (ซึ่งเป็นไดเรกทอรีย่อยของframeworks/base project) และ packages/modules/ExtServices

โครงสร้างโปรเจ็กต์ใหม่สำหรับ packages/modules/ExtServices มีดังนี้

  • apex/ (ไฟล์จาก frameworks/base/apex/extservices)
  • java/ (ไฟล์จาก packages/modules/ExtServices/res, packages/modules/ExtServices/src, packages/modules/ExtServices/tests, และไฟล์สำหรับฟีเจอร์ใหม่)
  • jni/ (ไฟล์สำหรับฟีเจอร์ใหม่)
  • native/ (ไฟล์สำหรับฟีเจอร์ใหม่)

ขอบเขตของโมดูล ExtServices อยู่ใน packages/modules/ExtServices นอกจากนี้ Android 11 ยังย้ายคลาสการใช้งาน TextClassifier หลายคลาสออกจาก frameworks/base/core/ ด้วย

รูปแบบโมดูล

ใน Android 11 โมดูล ExtServices (com.android.ext.services) จะอยู่ในรูปแบบ APEX ใน Android 10 โมดูลนี้จะอยู่ในรูปแบบ APK

การปรับแต่ง

ใน Android 11 คุณสามารถกำหนดค่าบริการตัวแยกประเภทข้อความที่กำหนดเองซึ่งเรียกใช้ตัวแยกประเภทข้อความเริ่มต้นได้ (อย่างไรก็ตาม เราไม่แนะนำให้ทำเช่นนี้) ใน Android 10 โมดูล ExtServices ไม่มีตัวเลือกการปรับแต่ง

การทดสอบ

ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android จะยืนยันฟังก์ชันการทำงานของโมดูล ExtServices โดยเรียกใช้ชุดการทดสอบ CTS ที่ครอบคลุมในทุกๆ การเผยแพร่โมดูล นอกจากนี้ ชุดเครื่องมือทดสอบ Mainline (MTS) ยังมีการทดสอบ ExtServices หลายรายการด้วย รายการการทดสอบ ExtServices ทั้งหมดมีดังนี้

  • การเปลี่ยนแปลงการกำหนดค่า ยืนยันโดยการทดสอบ CTS cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java

  • การกำหนดค่า TextClassifier ยืนยันโดยการทดสอบ CTS cts/TextClassifierPolicyTest.java

  • คำแนะนำแบบอินไลน์สำหรับการป้อนข้อความอัตโนมัติ ยืนยันโดยการทดสอบ CTS ใน cts/inline/