หน้านี้จะสรุปฟีเจอร์หลักในรุ่น Android 9 และมีลิงก์ไปยังข้อมูลเพิ่มเติม ข้อมูลสรุปฟีเจอร์เหล่านี้จัดระเบียบตามตำแหน่งเอกสารประกอบของฟีเจอร์ในเว็บไซต์นี้ ดูคำแนะนำในการย้ายและเปลี่ยนชื่อส่วนได้จากการอัปเดตเว็บไซต์ในเดือนสิงหาคม 2018
สร้าง
อิมเมจระบบทั่วไป (GSI)
รูปภาพระบบทั่วไป (GSI) คือรูปภาพระบบที่มีการกําหนดค่าที่ปรับแล้วสําหรับอุปกรณ์ Android Generic System Image (GSI) มีรายละเอียดเกี่ยวกับความแตกต่างระหว่าง GSI สำหรับอุปกรณ์ที่เปิดตัวด้วย Android 9 กับอุปกรณ์ที่อัปเกรดเป็น Android 9
สถาปัตยกรรม
เลเยอร์การจัดการฮาร์ดแวร์โดยตรง (HAL)
ความเข้ากันได้แบบย้อนหลังของเฟรมเวิร์ก HIDL
การยืนยันความเข้ากันได้แบบย้อนหลังของเฟรมเวิร์ก HIDL เป็นวิธีการยืนยันความเข้ากันได้แบบย้อนหลังของเฟรมเวิร์ก
HAL ที่พร้อมใช้งานแบบไดนามิก
HAL ที่พร้อมใช้งานแบบไดนามิกรองรับการปิดระบบย่อยของฮาร์ดแวร์ Android แบบไดนามิกเมื่อไม่ได้ใช้งานหรือไม่จำเป็นต้องใช้งาน
HIDL
HIDL MemoryBlock
MemoryBlock ของ HIDL เป็นเลเยอร์นามธรรมที่สร้างขึ้นจาก hidl_memory
, HIDL @1.0::IAllocator
และ HIDL @1.0::IMapper
ออกแบบมาสำหรับบริการ HIDL ที่มีบล็อกหน่วยความจำหลายบล็อกที่ใช้กองหน่วยความจำเดียวกัน
การวางซ้อนแผนผังอุปกรณ์
การวางซ้อนที่บีบอัด
Android 9 ขึ้นไปรองรับการวางซ้อนที่บีบอัดในรูปภาพการวางซ้อน Blob ของต้นไม้อุปกรณ์ (DTBO) เมื่อใช้ส่วนหัวตารางต้นไม้อุปกรณ์เวอร์ชัน 1
การอัปเดต DTO
Android 9 ขึ้นไปกำหนดให้โปรแกรมโหลดบูตส่ง Blob ของ Device Tree แบบรวมไปยังเคอร์เนลก่อนที่จะแก้ไขพร็อพเพอร์ตี้ที่กําหนดไว้ใน Device Tree Overlay (DTO)
การกำหนดเวอร์ชันส่วนหัวรูปภาพ DTBO
Android 9 ขึ้นไปจะมีช่องเวอร์ชันในส่วนหัวของรูปภาพ DTBO
การยืนยัน DTBO
Android 9 ขึ้นไปต้องใช้พาร์ติชัน DTBO หากต้องการเพิ่มโหนดหรือทําการเปลี่ยนแปลงคุณสมบัติใน DT ของ SoC บูตโหลดเดอร์ต้องวางซ้อน DT เฉพาะอุปกรณ์บน DT ของ SoC แบบไดนามิก ดูข้อมูลเพิ่มเติมได้ที่การคอมไพล์และการยืนยัน
การปฏิบัติตามข้อกำหนดของเคิร์นเนล
Android 9 ขึ้นไปมีข้อกำหนดที่ส่งผลต่อเคอร์เนล อินเทอร์เฟซ และใช้ DTBO ดูข้อมูลเพิ่มเติมได้ที่หน้าต่อไปนี้
- รุ่นและการอัปเดตเคอร์เนลที่เสถียร
- เคอร์เนลทั่วไปของ Android
- ข้อกำหนดของเคอร์เนลแบบโมดูล
- ข้อกำหนดอินเทอร์เฟซ
- การวางซ้อนบนแผนภาพต้นไม้ของอุปกรณ์
NDK ของผู้ให้บริการ
การเปลี่ยนแปลงการออกแบบ
ดูข้อมูลเกี่ยวกับการเปลี่ยนแปลงการออกแบบ VNDK ใน Android 9 ขึ้นไปได้ที่หน้าต่อไปนี้
- ชุดพัฒนาซอฟต์แวร์แบบเนทีฟสำหรับผู้ให้บริการ (VNDK)
- การรองรับระบบการบิลด์ VNDK
- เครื่องมือคำจำกัดความ VNDK
- ไดเรกทอรี กฎ และ sepolicy
- ส่วนขยาย VNDK
- เนมสเปซ Linker
เครื่องมือตรวจสอบ ABI
หน้าความเสถียรของ ABI จะอธิบายเครื่องมือตรวจสอบอินเทอร์เฟซแบบไบนารีของแอปพลิเคชัน (ABI) ซึ่งช่วยให้มั่นใจได้ว่าการเปลี่ยนแปลงที่ทำกับไลบรารี VNDK จะเป็นไปตามข้อกำหนด ABI
สแนปชอต VNDK
อิมเมจระบบสามารถใช้สแนปชอต VNDK เพื่อจัดหาไลบรารี VNDK ที่ถูกต้องให้กับอิมเมจของผู้ให้บริการได้ แม้ว่าอิมเมจระบบและอิมเมจของผู้ให้บริการจะสร้างขึ้นจาก Android เวอร์ชันต่างๆ ก็ตาม
ออบเจ็กต์อินเทอร์เฟซของผู้ให้บริการ (ออบเจ็กต์ VINTF)
หน้าต่อไปนี้ในส่วนออบเจ็กต์อินเทอร์เฟซของผู้ให้บริการอธิบายการอัปเดตใน Android 9 ขึ้นไป
กำหนดการเลิกใช้งาน HIDL
หน้าต่อไปนี้อธิบายวิธีที่ Android เลิกใช้งานและนํา HIDL HAL ออก
Bootloader
พาร์ติชันผลิตภัณฑ์
Android 9 ขึ้นไปรองรับการสร้าง/product
พาร์ติชันโดยใช้ระบบการสร้างของ Android ก่อนหน้านี้ Android 8.x บังคับให้แยกคอมโพเนนต์เฉพาะระบบออนชิป (SoC) ออกจากพาร์ติชัน /system
ไปยังพาร์ติชัน /vendor
โดยไม่จัดสรรพื้นที่สำหรับคอมโพเนนต์เฉพาะ OEM ที่สร้างขึ้นจากระบบบิลด์ Android
การปฏิบัติตามข้อกำหนดของเหตุผลการบูตตามค่าเริ่มต้น
หน้าเหตุผลการบูตตามค่าเริ่มต้นอธิบายการเปลี่ยนแปลงข้อกำหนดเหตุผลการบูตของโปรแกรมบูตใน Android 9 ขึ้นไป
ระบบเป็นรูท
อุปกรณ์ทั้งหมดที่เปิดตัวด้วย Android 9 ขึ้นไปต้องใช้ system-as-root ซึ่งผสาน ramdisk.img
เข้ากับ system.img
(หรือที่เรียกว่า no-ramdisk) ซึ่งจะได้รับการต่อเชื่อมเป็น rootfs
การกำหนดเวอร์ชันส่วนหัวของอิมเมจบูท
ใน Android 9 ขึ้นไป ส่วนหัวของภาพสำหรับบูตจะมีช่องสำหรับระบุเวอร์ชันส่วนหัว บูตโหลดเดอร์ต้องตรวจสอบช่องเวอร์ชันนี้และแยกวิเคราะห์ส่วนหัวตามลำดับ
DTBO กำลังกู้คืน
รูปภาพการกู้คืนต้องมีข้อมูลจากรูปภาพ DTBO เพื่อป้องกันไม่ให้มีการอัปเดต OTA ล้มเหลวเนื่องจากรูปภาพการกู้คืนไม่ตรงกับพาร์ติชัน DTBO ในอุปกรณ์ที่ไม่ใช่ A/B
จอแสดงผล
หน้าจอรอยบาก
ส่วนตัดของจอแสดงผลช่วยให้นักพัฒนาแอปสร้างประสบการณ์การใช้งานที่สมจริงจากขอบถึงขอบได้ ในขณะที่ยังคงมีพื้นที่สำหรับเซ็นเซอร์ที่สำคัญที่ด้านหน้าของอุปกรณ์
คำแนะนำในการหมุน
การอัปเดตลักษณะการหมุนหน้าจอใน Android 9 ขึ้นไปจะรองรับการควบคุมที่แสดงต่อผู้ใช้เพื่อปักหมุดการหมุนหน้าจอเป็นแนวนอนหรือแนวตั้ง แม้ว่าตำแหน่งของอุปกรณ์จะเปลี่ยนไปก็ตาม
การเปลี่ยนแอปที่ซิงค์กัน
การเปลี่ยนแอปที่ซิงค์อนุญาตให้ใช้ภาพเคลื่อนไหวการเปลี่ยนแอปแบบใหม่
การจัดประเภทข้อความ (เดิมคือ TEXTCLASSIFIER)
Android 9 ขึ้นไปมีบริการตัวจัดประเภทข้อความ ซึ่งเป็นวิธีที่แนะนําในการใช้การจัดประเภทข้อความ และการติดตั้งใช้งานบริการเริ่มต้น
สีแบบขอบเขตสีกว้าง
Android 9 ขึ้นไปรองรับสีแบบกว้าง ซึ่งรวมถึง
- High Dynamic Range (HDR)
- ประมวลผลเนื้อหาในพื้นที่สี BT2020 แต่ไม่ใช่เป็นพื้นที่ข้อมูลที่ปลายทาง
หากต้องการใช้สีแบบช่วงกว้าง สแต็กการแสดงผลทั้งหมดของอุปกรณ์ (เช่น หน้าจอ ฮาร์ดแวร์ คอมโพเซอร์ GPU) ต้องรองรับสีแบบช่วงกว้างหรือรูปแบบบัฟเฟอร์ อุปกรณ์ไม่จำเป็นต้องอ้างสิทธิ์ว่ารองรับเนื้อหาแบบช่วงสีกว้าง แม้ว่าฮาร์ดแวร์จะรองรับก็ตาม อย่างไรก็ตาม คุณควรเปิดใช้สีแบบช่วงกว้างเพื่อใช้ประโยชน์จากฮาร์ดแวร์อย่างเต็มที่ คุณไม่ควรปิดสีแบบช่วงกว้างระหว่างรันไทม์เพื่อไม่ให้ประสบการณ์การรับชมภาพไม่สอดคล้องกัน
ความเข้ากันได้
เอกสารนิยามความเข้ากันได้กับ Android
เอกสารคำจำกัดความความเข้ากันได้ของ Android 9 (CDD) ปรับปรุงจากเวอร์ชันก่อนหน้าด้วยข้อมูลอัปเดตเกี่ยวกับฟีเจอร์ใหม่และการเปลี่ยนแปลงข้อกำหนดสำหรับฟังก์ชันการทำงานที่เผยแพร่ไปก่อนหน้านี้
การตั้งค่า
วิดเจ็ตแอปที่ดีขึ้น
เฟรมเวิร์กวิดเจ็ตแอป Android ช่วยเพิ่มการแสดงผลของการโต้ตอบของผู้ใช้ โดยเฉพาะเมื่อผู้ใช้ลบหรือเพิ่มวิดเจ็ตด้วยตนเอง ฟังก์ชันการทำงานนี้จะมาพร้อมกับ Launcher3 โดยค่าเริ่มต้น
ผู้ผลิตต้องอัปเดตแอป Launcher (ซึ่งมาพร้อมกับอุปกรณ์) เพื่อรองรับฟีเจอร์นี้หากไม่ได้อิงตาม Launcher3 OEM ต้องรองรับช่อง widgetFeatures ใหม่ใน Launcher เริ่มต้น
โปรดทราบว่าฟีเจอร์นี้จะทำงานจากต้นทางถึงปลายทางก็ต่อเมื่อ Launcher นำฟีเจอร์นี้ไปใช้ตามที่คาดไว้เท่านั้น AOSP มีตัวอย่างการใช้งาน ดูตัวอย่างโค้ดได้ที่ AOSP Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca
การแจ้งเตือนการเปลี่ยนแปลงสถานะของอุปกรณ์ไปยังผู้ติดตั้งแพ็กเกจ
ระบบสามารถส่งการออกอากาศที่ปกป้องไปยังแอปที่มีสิทธิ์ INSTALL_PACKAGES
ทุกครั้งที่มีการเปลี่ยนแปลงพร็อพเพอร์ตี้ เช่น ภาษาหรือความหนาแน่นของการแสดงผล คุณสามารถลงทะเบียนตัวรับในไฟล์ Manifest และระบบจะตื่นขึ้นเพื่อรับการออกอากาศ ซึ่งมีประโยชน์สำหรับผู้ติดตั้งแพ็กเกจที่ต้องการติดตั้งคอมโพเนนต์เพิ่มเติมของแอปเมื่อมีการเปลี่ยนแปลงดังกล่าว ซึ่งไม่ค่อยเกิดขึ้น เนื่องจากการเปลี่ยนแปลงการกำหนดค่าที่มีสิทธิ์ทริกเกอร์การออกอากาศนี้นั้นเกิดขึ้นไม่บ่อยนัก
แหล่งที่มาของรหัสการแจ้งเตือนการเปลี่ยนแปลงสถานะของอุปกรณ์อยู่ในตำแหน่งต่อไปนี้ในส่วน platform/frameworks/base
api/system-current.txt
core/java/android/content/Intent.java
core/res/AndroidManifest.xml
services/core/java/com/android/server/am/ActivityManagerService.java
สถาปัตยกรรมข้อมูล
การเปลี่ยนแปลงสถาปัตยกรรมข้อมูลสําหรับแอปการตั้งค่าจะเพิ่มฟังก์ชันการทำงานและใช้งานได้ง่ายขึ้น
การทดสอบ
Atest
เครื่องมือบรรทัดคำสั่ง Atest ช่วยให้คุณสร้าง ติดตั้ง และเรียกใช้การทดสอบ Android ในพื้นที่ได้ ซึ่งจะเร่งการทดสอบซ้ำได้อย่างมากโดยไม่ต้องมีความรู้เกี่ยวกับตัวเลือกบรรทัดคำสั่งของ Trade Federation Test Harness
ชุดเครื่องมือทดสอบความเข้ากันได้
การดาวน์โหลด CTS
แพ็กเกจชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ที่รองรับ Android 9 มีอยู่ในหน้าการดาวน์โหลด CTS คุณซิงค์ซอร์สโค้ดสําหรับการทดสอบที่รวมไว้กับแท็ก android-cts-9.0_r1
ในทรีโอเพนซอร์สได้
ตัวเลือก CTS
สำหรับ Android 9 นั้น CTS v2 จะมีคำสั่งและอาร์กิวเมนต์ต่อไปนี้
run retry
พยายามทดสอบทั้งหมดที่ดำเนินการไม่สำเร็จหรือไม่ได้ดำเนินการจากเซสชันก่อนหน้าอีกครั้ง‘--shard-count
แบ่งการเรียกใช้ CTS เป็นกลุ่มอิสระตามจำนวนที่กำหนดเพื่อเรียกใช้ในอุปกรณ์หลายเครื่องพร้อมกัน
นอกจากนี้ เรายังได้เพิ่มคําสั่ง --retry-type
ที่ไม่มีเอกสารประกอบก่อนหน้านี้ลงในข้อมูลอ้างอิงคําสั่งคอนโซล CTS v2 เดียวกัน
บริการองค์ประกอบความปลอดภัย (SE)
บริการองค์ประกอบความปลอดภัยจะตรวจสอบองค์ประกอบความปลอดภัยที่แพลตฟอร์มทั่วโลกรองรับโดยระบุว่าอุปกรณ์มีการใช้งาน SE HAL หรือไม่ และหากมี อุปกรณ์มีจำนวนเท่าใด ซึ่งจะใช้เป็นพื้นฐานในการทดสอบ API และการติดตั้งใช้งานองค์ประกอบที่ปลอดภัยที่เกี่ยวข้อง
กล่องฟิวชันเซ็นเซอร์
กล่องฟิวชันเซ็นเซอร์ใช้ในชุดทดสอบรูปภาพจากกล้อง (Camera ITS) เพื่อทดสอบฟิวชันเซ็นเซอร์และการทดสอบการซิงค์กล้องหลายตัว รวมถึงเป็นสภาพแวดล้อมการทดสอบที่สอดคล้องกันสำหรับการวัดความแม่นยำของการประทับเวลาของกล้องและเซ็นเซอร์อื่นๆ สำหรับโทรศัพท์ Android ดูข้อมูลเพิ่มเติมได้ในหน้าต่อไปนี้
- คู่มือเริ่มต้นใช้งานกล่อง Sensor Fusion มีขั้นตอนในการตั้งค่าการทดสอบ Sensor Fusion และกล่อง Sensor Fusion เป็นครั้งแรก
- การประกอบกล่องฟิวชันเซ็นเซอร์อธิบายขั้นตอนการประกอบกล่องฟิวชันเซ็นเซอร์
ITS-in-a-box ขอบเขตการมองเห็นกว้าง
ITS แบบรวมทุกอย่างสำหรับกล้องมุมมองกว้างเป็นระบบอัตโนมัติที่ออกแบบมาเพื่อทดสอบทั้งระบบกล้องมุมมองกว้าง (WFoV) และมุมมองปกติ (RFoV) ใน ITS ของกล้อง
ชุดทดสอบของผู้ให้บริการ
สถาปัตยกรรมของ Host Controller
สถาปัตยกรรมตัวควบคุมโฮสต์ของชุดทดสอบ Vendor (VTS) คือสถาปัตยกรรมของเฟรมเวิร์กทดสอบ VTS ที่ผสานรวมกับบริการให้บริการทดสอบบนระบบคลาวด์
การทดสอบ HAL ที่รับรู้ชื่อบริการ
การทดสอบ HAL ที่รับรู้ชื่อบริการ VTS รองรับการเรียกชื่อบริการของอินสแตนซ์ HAL ที่ระบุตามอุปกรณ์ที่ทำการทดสอบ VTS
การตรวจสอบความสามารถในการทดสอบ HAL
การตรวจสอบความสามารถในการทดสอบ VTS HAL มีเมธอดรันไทม์สําหรับการใช้การกําหนดค่าอุปกรณ์เพื่อระบุการทดสอบ VTS ที่ควรข้ามสําหรับอุปกรณ์เป้าหมายนั้น
โครงสร้างพื้นฐานการทดสอบอัตโนมัติ
โครงสร้างพื้นฐานการทดสอบอัตโนมัติเป็นโครงสร้างพื้นฐาน VTS สำหรับการทดสอบ VTS, CTS หรือการทดสอบอื่นๆ โดยอัตโนมัติในอุปกรณ์ของพาร์ทเนอร์ที่ใช้ภาพระบบทั่วไป (GSI) ของ AOSP
การแก้ไขข้อบกพร่อง
ข้อมูลการวัดระยะไกลขั้นสูง
ใน Android การวัดผลข้อมูล telemetry คือกระบวนการรวบรวมข้อมูลการใช้งานและการวินิจฉัยเกี่ยวกับอุปกรณ์ ระบบ Android และแอปโดยอัตโนมัติ ใน Android เวอร์ชันก่อนหน้า สแต็กการวัดข้อมูลถูกจํากัดและไม่บันทึกข้อมูลที่จําเป็นในการระบุและแก้ไขปัญหาความน่าเชื่อถือของระบบ รวมถึงปัญหาเกี่ยวกับอุปกรณ์หรือแอป ซึ่งทำให้การระบุสาเหตุของปัญหาเป็นเรื่องยาก
Android 9 มีstatsd
ฟีเจอร์การวัดผล ซึ่งช่วยแก้ปัญหานี้ด้วยการเก็บรวบรวมข้อมูลที่ดีขึ้นได้เร็วขึ้น statsd
จะรวบรวมสถิติการใช้งานแอป แบตเตอรี่ และกระบวนการ รวมถึงข้อขัดข้อง ระบบจะวิเคราะห์และใช้ข้อมูลดังกล่าวเพื่อปรับปรุงผลิตภัณฑ์ ฮาร์ดแวร์ และบริการ
ดูรายละเอียดเพิ่มเติมได้ที่ frameworks/base/cmds/statsd/
ฟีเจอร์การรักษาความปลอดภัย
การลงนามแอป
APK Signature Scheme v3 รองรับการหมุนเวียนคีย์ APK
การรองรับข้อมูลไบโอเมตริก
Android 9 มีคลาสสาธารณะ BiometricPrompt
ซึ่งแอปสามารถใช้เพื่อผสานรวมการรองรับการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริกในลักษณะที่ไม่เจาะจงอุปกรณ์และรูปแบบ ดูข้อมูลเพิ่มเติมเกี่ยวกับการผสานรวมสแต็กไบโอเมตริกเพื่อรวม BiometricPrompt
ได้ที่ไบโอเมตริก
การวิเคราะห์แบบไดนามิก
Android 9 รองรับเครื่องมือวิเคราะห์และบรรเทาการใช้งานช่องโหว่เพิ่มเติม
การควบคุมโฟลว์ที่สมบูรณ์ (CFI)
การควบคุมความสมบูรณ์ของโฟลว์ข้อมูล (CFI) เป็นกลไกการรักษาความปลอดภัยที่ห้ามไม่ให้มีการเปลี่ยนแปลงกราฟโฟลว์ข้อมูลเดิมของไบนารีที่คอมไพล์แล้ว ซึ่งทำให้การโจมตีดังกล่าวทำได้ยากขึ้นอย่างมาก
CFI ของเคอร์เนล
นอกจาก CFI ของระบบซึ่งเปิดใช้โดยค่าเริ่มต้นแล้ว Android 9 ขึ้นไปยังรองรับControl Flow Integrity (CFI) ของเคอร์เนลด้วย
การเข้ารหัส
การเข้ารหัสตามไฟล์
การเข้ารหัสตามไฟล์ (FBE) ได้รับการอัปเดตให้ทำงานร่วมกับพื้นที่เก็บข้อมูลที่พร้อมใช้งานได้ อุปกรณ์ใหม่ควรใช้การเข้ารหัสตามไฟล์แทนการเข้ารหัสดิสก์เต็มรูปแบบ
การเข้ารหัสข้อมูลเมตา
Android 9 ขึ้นไปรองรับการเข้ารหัสข้อมูลเมตาเมื่ออุปกรณ์รองรับ เมื่อใช้การเข้ารหัสข้อมูลเมตา คีย์เดียวที่มีอยู่ในระบบขณะเปิดเครื่องจะใช้การเข้ารหัสตามไฟล์เพื่อเข้ารหัสเนื้อหาที่ไม่ได้เข้ารหัส
คีย์สโตร์
Android 9 ขึ้นไปมี Keymaster 4 ซึ่งมีฟีเจอร์ต่อไปนี้
StrongBox
Android 9 ขึ้นไปรองรับคีย์ใน Keystore ของ Android ที่เก็บไว้และใช้ใน CPU แยกต่างหากซึ่งออกแบบมาเพื่อการใช้งานแอปพลิเคชันที่มีการรักษาความปลอดภัยสูง เช่น องค์ประกอบที่ปลอดภัย (SE) ที่ฝังอยู่ Keymaster ของ StrongBox คือการใช้งาน Keymaster HAL ในฮาร์ดแวร์ที่แยกส่วนและปลอดภัย StrongBox มีสิ่งต่อไปนี้
- CPU แบบแยก
- พื้นที่เก็บข้อมูลที่ปลอดภัยแบบรวม
- โปรแกรมสุ่มตัวเลขจริงที่มีคุณภาพสูง
- บรรจุภัณฑ์ป้องกันการปลอมแปลง
- การป้องกันช่องข้าง
การนำเข้าคีย์อย่างปลอดภัย
หากต้องการนำเข้าคีย์ไปยัง Keymaster 4 อย่างปลอดภัย ระบบจะเข้ารหัสคีย์ที่สร้างนอกอุปกรณ์ด้วยข้อกำหนดของการให้สิทธิ์ที่กำหนดวิธีใช้คีย์
การรองรับ 3DES
Keymaster 4 มี 3DES เพื่อความเข้ากันได้กับระบบเดิมที่ใช้ 3DES
การเชื่อมโยงเวอร์ชัน
เพื่อรองรับโครงสร้างโมดูลของ Treble และยกเลิกการเชื่อมโยง system.img
กับ boot.img
Keymaster 4 ได้เปลี่ยนรูปแบบการเชื่อมโยงเวอร์ชันคีย์เพื่อให้มีระดับการแก้ไขแยกกันสำหรับแต่ละพาร์ติชัน วิธีนี้ช่วยให้สามารถอัปเดตพาร์ติชันแต่ละรายการแยกกันได้ ขณะเดียวกันก็ยังคงมีการปกป้องการย้อนกลับ
Android Protected Confirmation API
อุปกรณ์ที่รองรับซึ่งเปิดตัวโดยติดตั้ง Android 9 จะช่วยให้นักพัฒนาแอปสามารถใช้ Android Protected Confirmation API ได้
เมื่อใช้ API นี้ แอปจะใช้อินสแตนซ์ของ ConfirmationPrompt
เพื่อแสดงข้อความแจ้งแก่ผู้ใช้เพื่อขอให้ผู้ใช้อนุมัติข้อความสั้นๆ ได้ ข้อความนี้ช่วยให้แอปยืนยันอีกครั้งว่าผู้ใช้ต้องการทำธุรกรรมที่มีความละเอียดอ่อนให้เสร็จสมบูรณ์ เช่น การชำระเงิน
SELinux
แซนด์บ็อกซ์ SELinux ต่อแอป
แซนด์บ็อกซ์แอปพลิเคชันมีการปกป้องและกรณีทดสอบใหม่เพื่อให้มั่นใจว่าแอปที่ไม่มีสิทธิ์ทั้งหมดที่กำหนดเป้าหมายเป็น Android 9 ขึ้นไปจะทำงานในแซนด์บ็อกซ์ SELinux แต่ละรายการ
การเปลี่ยนแปลง SELinux ของ Treble
การอัปเดต Treble SELinux ใน Android 9 ขึ้นไปมีอยู่ในเอกสารหลายหน้าในส่วนส่วน SELinux
ผู้ให้บริการเริ่มต้น
Vendor init จะปิดช่องโหว่ในระบบ/ผู้ให้บริการ Treble ที่แยกกันโดยใช้โดเมน SELinux แยกต่างหากเพื่อเรียกใช้คำสั่ง /vendor
ด้วยสิทธิ์เฉพาะผู้ให้บริการ
พร็อพเพอร์ตี้ของระบบ
Android 9 ป้องกันไม่ให้แชร์พร็อพเพอร์ตี้ของระบบระหว่างพาร์ติชัน system
กับ vendor
โดยไม่จำเป็น และระบุวิธีการเพื่อให้มั่นใจว่าพร็อพเพอร์ตี้ของระบบที่แชร์จะสอดคล้องกัน
การทดสอบแอตทริบิวต์ SELinux
Android 9 มีการทดสอบเวลาสร้างแบบใหม่ที่ช่วยให้มั่นใจว่าไฟล์ทั้งหมดในตำแหน่งที่เจาะจงมีแอตทริบิวต์ที่เหมาะสม
เช่น ไฟล์ทั้งหมดใน sysfs
มีแอตทริบิวต์ sysfs_type
ที่จำเป็น
เสียง
เอฟเฟกต์เสียงความละเอียดสูง
การอัปเดตเอฟเฟกต์เสียงความละเอียดสูงรวมถึงการเปลี่ยนการประมวลผลเอฟเฟกต์จากรูปแบบ int16 เป็นรูปแบบ float และการเพิ่มแทร็กเอาต์พุตของไคลเอ็นต์พร้อมกัน หน่วยความจำสูงสุดของไคลเอ็นต์/เซิร์ฟเวอร์ และแทร็กผสมทั้งหมด
กล้อง
กล้อง USB ภายนอก
Android 9 ขึ้นไปรองรับการใช้กล้อง USB แบบเสียบแล้วใช้งานได้ทันที (นั่นคือเว็บแคม) โดยใช้ Android Camera2 API มาตรฐานและอินเทอร์เฟซ HIDL ของกล้อง
การติดตามการเคลื่อนไหว
อุปกรณ์กล้องสามารถโฆษณาความสามารถในการติดตามการเคลื่อนไหว
การรองรับกล้องหลายตัว
การรองรับกล้องหลายตัวรวมถึงการรองรับ API สําหรับอุปกรณ์ที่มีกล้องหลายตัวผ่านอุปกรณ์กล้องเชิงตรรกะแบบใหม่ซึ่งประกอบด้วยอุปกรณ์กล้องจริงตั้งแต่ 2 ตัวขึ้นไปที่ชี้ไปในทิศทางเดียวกัน
พารามิเตอร์เซสชัน
การใช้พารามิเตอร์เซสชันสามารถลดความล่าช้าได้โดยช่วยให้ไคลเอ็นต์กล้องกําหนดค่าพารามิเตอร์คําขอย่อยที่เสียค่าใช้จ่ายเป็นส่วนหนึ่งของระยะเริ่มต้นเซสชันการจับภาพ
บัฟเฟอร์สำหรับผู้ผลิตรายการเดียวและผู้บริโภคหลายราย
การขนส่งบัฟเฟอร์กล้องแบบผู้ผลิตรายเดียวและผู้บริโภคหลายรายเป็นชุดเมธอดที่ช่วยให้ไคลเอ็นต์กล้องเพิ่มและนำเอาอินเทอร์เฟซเอาต์พุตออกแบบไดนามิกขณะที่เซสชันการจับภาพทำงานอยู่และสตรีมมิงกล้องดำเนินอยู่
การเชื่อมต่อ
การโทรและการรับส่งข้อความ
ใช้แพ็กเกจอินเทอร์เน็ต
Android 9 ขึ้นไปให้การสนับสนุนที่ดีขึ้นสำหรับผู้ให้บริการที่ใช้แพ็กเกจอินเทอร์เน็ตโดยใช้ SubscriptionPlan API
แอปรับสายของบุคคลที่สาม
Android 9 ขึ้นไปมี API ที่อนุญาตให้แอปการโทรของบุคคลที่สาม (3P) จัดการสายเรียกเข้าจากผู้ให้บริการพร้อมกันและบันทึกการโทรในบันทึกการโทรของระบบ
ผู้ให้บริการ
ข้อมูลระบุตัวตนของผู้ให้บริการ
ใน Android 9 AOSP ได้เพิ่มฐานข้อมูลรหัสผู้ให้บริการเพื่อช่วยในการระบุผู้ให้บริการ ฐานข้อมูลจะลดตรรกะซ้ำและประสบการณ์การใช้งานแอปที่กระจัดกระจายด้วยการกำหนดวิธีทั่วไปในการระบุผู้ให้บริการ
eSIM
ซิมแบบฝัง (eSIM หรือ eUICC) เป็นเทคโนโลยีล่าสุดที่ช่วยให้ผู้ใช้อุปกรณ์เคลื่อนที่ดาวน์โหลดโปรไฟล์ผู้ให้บริการและเปิดใช้งานบริการของผู้ให้บริการได้โดยไม่ต้องมีซิมการ์ดจริง ใน Android 9 ขึ้นไป เฟรมเวิร์ก Android จะมี API มาตรฐานสําหรับการเข้าถึง eSIM และจัดการโปรไฟล์การสมัครใช้บริการใน eSIM โปรดดูข้อมูลเพิ่มเติมจากหัวข้อดังนี้
การรองรับหลายซิมสำหรับการตั้งค่า IMS
Android 9 ขึ้นไปมีการปรับปรุงการตั้งค่าผู้ใช้สำหรับระบบย่อยมัลติมีเดีย IP (IMS) คุณสามารถตั้งค่าการโทรผ่าน LTE (VoLTE), วิดีโอคอล และการโทรผ่าน Wi-Fi ตามการสมัครใช้บริการแต่ละรายการแทนที่จะแชร์การตั้งค่าเหล่านี้กับการสมัครใช้บริการทั้งหมด
การออกอากาศสถานะซิม
ใน Android 9 ขึ้นไป ระบบจะเลิกใช้งาน Intent.ACTION_SIM_STATE_CHANGED
และเพิ่มการออกอากาศแยกกัน 2 รายการสำหรับสถานะของการ์ดและสถานะการสมัครใช้การ์ด นั่นคือ TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED
และ TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED
การเปลี่ยนแปลงเหล่านี้ทำให้ผู้รับที่จำเป็นต้องทราบเพียงว่ามีการ์ดอยู่หรือไม่ไม่จำเป็นต้องคอยฟังการเปลี่ยนแปลงสถานะแอปพลิเคชัน และผู้รับที่จำเป็นต้องทราบเพียงว่าแอปพลิเคชันการ์ดพร้อมใช้งานหรือไม่ไม่จำเป็นต้องคอยฟังการเปลี่ยนแปลงสถานะการ์ด
การออกอากาศใหม่ 2 รายการคือ @SystemApis และไม่ใช่การออกอากาศแบบติดหนึบ เฉพาะผู้รับที่มีสิทธิ์ READ_PRIVILEGED_PHONE_STATE
เท่านั้นที่จะรับการออกอากาศได้
ระบบจะไม่ออกอากาศ Intent อีกครั้งเมื่อคุณปลดล็อกอุปกรณ์ ผู้รับที่ขึ้นอยู่กับการออกอากาศที่ส่งก่อนปลดล็อกต้องใช้ directBootAware
หรือต้องค้นหาสถานะหลังจากผู้ใช้ปลดล็อก คุณสามารถค้นหาสถานะได้โดยใช้ API ที่เกี่ยวข้องใน TelephonyManager, getSimCardState()
และgetSimApplicationState()
Wi-Fi
Wi-Fi ของผู้ให้บริการ
ฟีเจอร์ Wi-Fi ของผู้ให้บริการช่วยให้อุปกรณ์เชื่อมต่อกับเครือข่าย Wi-Fi ที่ผู้ให้บริการติดตั้งไว้โดยอัตโนมัติ ในพื้นที่ที่มีผู้คนหนาแน่นหรือมีสัญญาณมือถือน้อย เช่น สนามกีฬาหรือสถานีรถไฟใต้ดิน Wi-Fi ของผู้ให้บริการจะช่วยปรับปรุงการเชื่อมต่อและลดปริมาณการเข้าชม
การสุ่ม MAC
การสุ่ม MAC ช่วยให้อุปกรณ์ใช้ที่อยู่ MAC แบบสุ่มเมื่อสแกนหาเครือข่ายใหม่ขณะที่ไม่ได้เชื่อมโยงกับเครือข่ายใดอยู่ ใน Android 9 ขึ้นไป คุณสามารถเปิดใช้ตัวเลือกสำหรับนักพัฒนาแอปเพื่อทําให้อุปกรณ์ใช้ที่อยู่ MAC แบบสุ่มเมื่อเชื่อมต่อกับเครือข่าย Wi-Fi
เปิด Wi‑Fi โดยอัตโนมัติ
เมื่อเปิดใช้ฟีเจอร์เปิด Wi-Fi โดยอัตโนมัติ ระบบจะเปิดใช้ Wi-Fi อีกครั้งโดยอัตโนมัติเมื่ออุปกรณ์อยู่ใกล้เครือข่าย Wi-Fi ที่บันทึกไว้ซึ่งมีสัญญาณบอกสถานะความแรงของสัญญาณที่ได้รับ (RSSI) ที่สูงพอ
ระยะเวลารับส่งข้อมูลของ Wi-Fi
เวลาในการรับส่งข้อมูล Wi-Fi (RTT) ช่วยให้อุปกรณ์วัดระยะทางไปยังอุปกรณ์อื่นๆ ที่รองรับได้ ไม่ว่าจะเป็นจุดเข้าใช้งาน (AP) หรืออุปกรณ์ที่เปิดใช้ Wi-Fi Aware (หากอุปกรณ์รองรับ Wi-Fi Aware) ฟีเจอร์นี้สร้างขึ้นจากโปรโตคอล IEEE 802.11mc และช่วยให้แอปใช้ความแม่นยำของตำแหน่งและการรับรู้ตำแหน่งที่ดีขึ้น
การปรับปรุงการให้คะแนน Wi-Fi
โมเดลการให้คะแนน Wi-Fi ที่ปรับปรุงใหม่จะระบุได้อย่างรวดเร็วและแม่นยำว่าเมื่อใดที่อุปกรณ์ควรออกจากเครือข่าย Wi-Fi ที่เชื่อมต่ออยู่หรือเข้าสู่เครือข่าย Wi-Fi ใหม่ โมเดลเหล่านี้มอบประสบการณ์การใช้งานที่เชื่อถือได้และราบรื่นให้แก่ผู้ใช้โดยหลีกเลี่ยงช่องโหว่ในการเชื่อมต่อ
ตรวจสอบและปรับค่า RSSI ในแหล่งข้อมูล config.xml
โดยเฉพาะอย่างยิ่งค่าต่อไปนี้
config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz
config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz
config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz
config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz
การทำงานพร้อมกันของ STA/AP ของ Wi-Fi
การทำงานพร้อมกันของ STA/AP ของ Wi-Fi คือความสามารถของอุปกรณ์ในการทํางานในโหมดสถานี (STA) และโหมดจุดเข้าใช้งาน (AP) พร้อมกัน สำหรับอุปกรณ์ที่รองรับ Wi-Fi แบบ Dual-band Simultaneous (DBS) ตัวเลือกนี้จะเปิดโอกาสให้อุปกรณ์ทำงานได้หลากหลาย เช่น ไม่รบกวน Wi-Fi ของ STA เมื่อผู้ใช้ต้องการเปิดใช้ฮอตสปอต (SoftAP)
การปรับปรุง WiFiStateMachine
WifiStateMachine
คือคลาสหลักที่ใช้ควบคุมกิจกรรม Wi-Fi, ประสานงานกับอินพุตของผู้ใช้ (โหมดการทํางาน: ฮอตสปอต สแกน เชื่อมต่อ หรือปิด) และควบคุมการดําเนินการของเครือข่าย Wi-Fi (เช่น การสแกนหรือการเชื่อมต่อ)
ใน Android 9 ขึ้นไป โค้ดเฟรมเวิร์ก Wi-Fi และการใช้งาน WifiStateMachine
ได้รับการออกแบบใหม่ ทำให้ขนาดโค้ดลดลง ตรรกะการควบคุม Wi-Fi ทำตามได้ง่ายขึ้น การควบคุมมีความละเอียดมากขึ้น และเพิ่มความครอบคลุมและคุณภาพของ Unit Test
WifiStateMachine
อนุญาตให้ Wi-Fi อยู่ในสถานะใดสถานะหนึ่งต่อไปนี้
- โหมดไคลเอ็นต์ (เชื่อมต่อและสแกนได้)
- โหมดสแกนเท่านั้น
- โหมด SoftAP (ฮอตสปอต Wi-Fi)
- ปิดใช้ (Wi-Fi ปิดอยู่)
โหมด Wi-Fi แต่ละโหมดมีข้อกำหนดที่แตกต่างกันสำหรับบริการที่ทำงานอยู่ และควรตั้งค่าในลักษณะที่สอดคล้องกัน โดยจัดการเฉพาะเหตุการณ์ที่เกี่ยวข้องกับการทํางานเท่านั้น การใช้งานแบบใหม่จะจํากัดโค้ดไว้สําหรับเหตุการณ์ที่เกี่ยวข้องกับโหมดนั้นๆ ซึ่งจะช่วยลดเวลาในการแก้ไขข้อบกพร่องและความเสี่ยงที่จะเกิดข้อบกพร่องใหม่เนื่องจากความซับซ้อน นอกจากการจัดการที่ชัดเจนสำหรับฟังก์ชันการทำงานของโหมดแล้ว การจัดการเธรดยังได้รับการจัดการอย่างสอดคล้องกันและไม่มีการใช้แชแนลแบบไม่พร้อมกันเป็นกลไกในการซิงค์
การอัปเดตสิทธิ์ Wi-Fi
ใน Android 9 ขึ้นไป ระบบจะเปิดใช้สิทธิ์ของแอป CHANGE_WIFI_STATE
โดยค่าเริ่มต้น คุณปิดใช้สิทธิ์สำหรับแอปใดก็ได้ในหน้าการตั้งค่าที่การตั้งค่า > แอปและการแจ้งเตือน > สิทธิ์เข้าถึงพิเศษของแอป > การควบคุม Wi-Fi
แอปต้องจัดการกรณีที่ไม่ได้รับสิทธิ์ CHANGE_WIFI_STATE
ได้
หากต้องการตรวจสอบลักษณะการทำงานนี้ ให้เรียกใช้ roboelectric และทำการทดสอบด้วยตนเอง
สำหรับการทดสอบด้วยตนเอง
- ไปที่การตั้งค่า > แอปและการแจ้งเตือน > สิทธิ์เข้าถึงพิเศษของแอป > การควบคุม Wi-Fi
- เลือกและปิดสิทธิ์สำหรับแอป
- ยืนยันว่าแอปสามารถจัดการสถานการณ์ที่
CHANGE_WIFI_STATE
ไม่ได้รับสิทธิ์
การเลิกใช้งาน WPS
การตั้งค่าการป้องกัน Wi-Fi (WPS) ใน WiFiManager
เลิกใช้งานและปิดใช้ใน Android 9 ขึ้นไปแล้วเนื่องจากปัญหาด้านความปลอดภัย อย่างไรก็ตาม WiFiDirect
ยังใช้ WPS ในโปรแกรมรับส่งข้อมูล WPA
กราฟิก
การใช้งาน
Vulkan 1.1 API
Android 9 ขึ้นไปรองรับการใช้ Vulkan 1.1 Graphics API
เครื่องมือ WinScope สําหรับการติดตามการเปลี่ยนหน้าต่าง
Android 9 ขึ้นไปมีเครื่องมือ WinScope สำหรับการติดตามการเปลี่ยนหน้าต่าง WinScope มีโครงสร้างพื้นฐานและเครื่องมือในการบันทึกและวิเคราะห์สถานะตัวจัดการหน้าต่างระหว่างและหลังการเปลี่ยน ซึ่งช่วยให้บันทึกและเลื่อนดูการเปลี่ยนผ่านของหน้าต่างได้ พร้อมกับบันทึกสถานะที่เกี่ยวข้องกับเครื่องมือจัดการหน้าต่างทั้งหมดลงในไฟล์การติดตาม คุณสามารถใช้ข้อมูลนี้เพื่อเล่นซ้ำและดูขั้นตอนการเปลี่ยนแปลงได้
ซอร์สโค้ดของเครื่องมือ WinScope อยู่ที่
platform/development/tools/winscope
การโต้ตอบ
ระบบเสียงสำหรับยานยนต์
เสียงสำหรับยานยนต์อธิบายถึงสถาปัตยกรรมเสียงสําหรับการติดตั้งใช้งาน Android ที่เกี่ยวข้องกับยานยนต์
HAL ของเครือข่ายประสาทเทียม (NN) จะกำหนดการแยกแยะตัวเร่งต่างๆ ไดรเวอร์สำหรับโปรแกรมเร่งเหล่านี้ต้องเป็นไปตาม HAL นี้
HAL ยานพาหนะ
คุณสมบัติของยานพาหนะอธิบายการเปลี่ยนแปลงอินเทอร์เฟซ HAL ของยานพาหนะ
การเลือกดาวเทียม GNSS
เมื่อทำงานกับ HAL ของระบบนำทางด้วยดาวเทียมทั่วโลก (GNSS) ใหม่ (v1.1 ขึ้นไป) เฟรมเวิร์ก Android จะตรวจสอบการตั้งค่า Android พาร์ทเนอร์สามารถเปลี่ยนการตั้งค่าจากบริการ Google Play หรือการอัปเดตระบบอื่นๆ การตั้งค่าเหล่านี้จะบอก HAL ของ GNSS ว่าไม่ควรใช้ดาวเทียม GNSS บางดวงหรือไม่ ซึ่งอาจมีประโยชน์ในกรณีที่มีข้อผิดพลาดเกี่ยวกับดาวเทียมหรือกลุ่มดาว GNSS อย่างต่อเนื่อง หรือเพื่อตอบสนองต่อปัญหาการติดตั้งใช้งาน GNSS HAL ได้อย่างรวดเร็วยิ่งขึ้น ซึ่งอาจเกิดขึ้นเมื่อมีการผสมกลุ่มดาวโดยใช้ระบบเวลาและเหตุการณ์ภายนอกที่แตกต่างกัน เช่น การทดเวลา 1 วินาที การเปลี่ยนวัน หรือการเปลี่ยนหมายเลขสัปดาห์
รุ่นฮาร์ดแวร์ GNSS
ใน Android 9 นั้น GNSS HAL เวอร์ชัน 1.1 ขึ้นไปสามารถส่งต่อข้อมูลเกี่ยวกับ API ของฮาร์ดแวร์ไปยังแพลตฟอร์มได้ แพลตฟอร์มต้องติดตั้งใช้งานอินเทอร์เฟซ IGnssCallback
และส่งแฮนเดิลไปยัง HAL GNSS HAL จะส่งข้อมูลรุ่นฮาร์ดแวร์ผ่านเมธอด LocationManager#getGnssHardwareModelName()
ผู้ผลิตอุปกรณ์ควรทํางานร่วมกับผู้ให้บริการ GNSS HAL เพื่อระบุข้อมูลนี้หากเป็นไปได้
สิทธิ์
การกำหนดค่าการอัปเดตการควบคุมการเข้าถึงแบบมีการพิจารณา
การกำหนดค่าการควบคุมการเข้าถึงแบบมีการพิจารณา (DAC) มีการอัปเดตกลไกรหัส Android (AID) เพื่อขยายความสามารถของระบบไฟล์
การเพิ่มสิทธิ์ของแอปที่มีอภิสิทธิ์ในรายการที่อนุญาตพิเศษ
ใน Android 9 ขึ้นไป หากมีสิทธิ์ที่ควรปฏิเสธ ให้แก้ไข XML เพื่อใช้แท็ก deny-permission
แทนแท็ก permission
ที่ใช้กันในรุ่นก่อนหน้า
ข้อมูล
การปรับปรุงการประมาณแบนด์วิดท์
Android 9 รองรับการประมาณแบนด์วิดท์ได้ดียิ่งขึ้น แอป Android สามารถตั้งค่าความละเอียดที่เหมาะสมมากขึ้นสําหรับวิดีโอคอลและสตรีมมิงวิดีโอได้หากเข้าถึงแบนด์วิดท์อินเทอร์เน็ตได้
ในอุปกรณ์ที่ใช้ Android 6.0 ขึ้นไป ผู้โทรที่ต้องการทราบแบนด์วิดท์โดยประมาณสำหรับการโทรผ่านเครือข่ายมือถือConnectivityManager.requestBandwidthUpdate()
และเฟรมเวิร์กอาจแสดงแบนด์วิดท์ดาวน์ลิงก์โดยประมาณ
แต่บนอุปกรณ์ที่ใช้ Android 9 ขึ้นไป แคล็กแบ็ก onCapabilitiesChanged()
จะทำงานโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงที่สำคัญในแบนด์วิดท์โดยประมาณ และการเรียก requestBandwidthUpdate()
จะไม่มีผลใดๆ getLinkDownstreamBandwidthKbps()
และ getLinkUpstreamBandwidthKbps()
ที่เชื่อมโยงจะสร้างขึ้นด้วยข้อมูลที่อัปเดตซึ่งมาจากเลเยอร์ทางกายภาพ
นอกจากนี้ อุปกรณ์ยังตรวจสอบแบนด์วิดท์ของเซลล์ LTE ผ่าน ServiceState.getCellBandwidths()
ได้ด้วย
ซึ่งช่วยให้แอปพลิเคชันระบุปริมาณแบนด์วิดท์ (ความถี่) ที่พร้อมใช้งานในเซลล์หนึ่งๆ ได้ ข้อมูลแบนด์วิดท์ของเซลล์จะแสดงผ่านเมนูที่ซ่อนอยู่เพื่อให้ผู้ทดสอบภาคสนามตรวจสอบข้อมูลล่าสุดได้
การตรวจสอบการเข้าชม eBPF
เครื่องมือตรวจสอบการรับส่งข้อมูลในเครือข่าย eBPF ใช้การใช้งานเคอร์เนลและพื้นที่ผู้ใช้ร่วมกันเพื่อตรวจสอบการใช้เครือข่ายในอุปกรณ์นับตั้งแต่การบูตอุปกรณ์ครั้งล่าสุด เครื่องมือนี้มีฟังก์ชันการทำงานเพิ่มเติม เช่น การติดแท็กซ็อกเก็ต การแยกการรับส่งข้อมูลเบื้องหน้า/เบื้องหลัง และไฟร์วอลล์ต่อ UID เพื่อบล็อกแอปไม่ให้เข้าถึงเครือข่ายโดยขึ้นอยู่กับสถานะของอุปกรณ์
กู้คืนเป็น API เวอร์ชันเก่า
ตอนนี้อุปกรณ์สามารถกู้คืนจากระบบปฏิบัติการเวอร์ชันในอนาคตได้แล้ว ซึ่งจะมีประโยชน์อย่างยิ่งเมื่อผู้ใช้อัปเกรดโทรศัพท์แต่ทำโทรศัพท์หายหรือโทรศัพท์เสีย
หาก OEM แก้ไขตัวแทนการสำรองข้อมูลสำหรับแพ็กเกจระบบ (android, ระบบ, การตั้งค่า) ตัวแทนเหล่านั้นควรจัดการการกู้คืนชุดข้อมูลสำรองที่สร้างในแพลตฟอร์มเวอร์ชันที่สูงกว่าโดยไม่ขัดข้องและกู้คืนข้อมูลได้อย่างน้อยบางส่วน
ลองใช้โปรแกรมตรวจสอบเพื่อตรวจหาค่าที่ไม่ถูกต้องของข้อมูลสำรองบางส่วน แล้วกู้คืนเฉพาะข้อมูลที่ถูกต้อง ดังที่อธิบายไว้ในcore/java/android/provider/SettingsValidators.java
ฟีเจอร์นี้จะเปิดอยู่โดยค่าเริ่มต้น คุณปิดการรองรับการกู้คืนจากเวอร์ชันในอนาคตของ SettingsBackupAgent ได้ผ่าน Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION
ไม่จำเป็นต้องมีการใช้งานเพิ่มเติม เว้นแต่ผู้ผลิตอุปกรณ์จะขยายตัวแทนการสำรองข้อมูลอย่างใดอย่างหนึ่งที่รวมอยู่ใน ROM (หรือเพิ่มตัวแทนที่กำหนดเอง)
ฟีเจอร์นี้ช่วยให้ระบบกู้คืนจากแพลตฟอร์มเวอร์ชันในอนาคตได้ แต่ข้อมูลที่ได้รับการกู้คืนอาจไม่สมบูรณ์ วิธีการต่อไปนี้ใช้กับตัวแทนการสำรองข้อมูลต่อไปนี้
PackageManagerBackupAgent รองรับข้อมูลสำรองเวอร์ชันในอนาคตผ่านการกำหนดเวอร์ชันรูปแบบ ส่วนขยายที่นี่ต้องเข้ากันได้กับรหัสการกู้คืนปัจจุบันหรือทำตามวิธีการในคลาส ซึ่งรวมถึงการอัปเกรดค่าคงที่ที่เหมาะสม
SystemBackupAgent ระบุ
restoreAnyVersion = false
ใน Android 9 ขึ้นไป และไม่รองรับการกู้คืนจาก API เวอร์ชันที่สูงกว่าSettingsBackupAgent จะระบุ
restoreAnyVersion = true
ใน Android 9 ขึ้นไป รองรับบางส่วนผ่านโปรแกรมตรวจสอบ คุณสามารถกู้คืนการตั้งค่าจาก API เวอร์ชันที่ใหม่กว่าได้หากมีโปรแกรมตรวจสอบสำหรับ API เวอร์ชันนั้นในระบบปฏิบัติการเป้าหมาย การเพิ่มการตั้งค่าใดๆ ควรมาพร้อมกับโปรแกรมตรวจสอบการตั้งค่านั้น ดูรายละเอียดได้ในชั้นเรียนตัวแทนการสำรองข้อมูลที่กำหนดเองที่รวมอยู่ใน ROM ควรเพิ่มรหัสเวอร์ชันทุกครั้งที่มีการเปลี่ยนแปลงรูปแบบข้อมูลสำรองที่เข้ากันไม่ได้ และตรวจสอบว่า
restoreAnyVersion = false
(ค่าเริ่มต้น) หากตัวแทนไม่พร้อมจัดการข้อมูลสำรองจากโค้ดเวอร์ชันในอนาคต
องค์กร
การปรับปรุงโปรไฟล์ที่มีการจัดการ
การเปลี่ยนแปลง UX สำหรับโปรไฟล์ที่มีการจัดการช่วยให้ผู้ใช้ระบุ เข้าถึง และควบคุมโปรไฟล์ที่มีการจัดการได้ง่ายขึ้น
หยุด OTA ชั่วคราว
@SystemApi ใหม่ช่วยให้เจ้าของอุปกรณ์หยุดการอัปเดต OTA ชั่วคราวได้แบบไม่มีกำหนด ซึ่งรวมถึงการอัปเดตความปลอดภัย
ประสิทธิภาพ
Health 2.0
Android 9 ขึ้นไปมี android.hardware.health
HAL 2.0 ซึ่งเป็นการอัปเกรดเวอร์ชันครั้งใหญ่จาก HAL ของ health@1.0 ดูข้อมูลเพิ่มเติมได้ที่หน้าต่อไปนี้
โซลูชันการแคช APK
Android 9 ขึ้นไปมีโซลูชันการแคช APK สำหรับการติดตั้้งแอปที่โหลดไว้ล่วงหน้าอย่างรวดเร็วในอุปกรณ์ที่รองรับพาร์ติชัน A/B OEM สามารถวางแอปที่โหลดล่วงหน้าและแอปยอดนิยมไว้ในแคช APK ซึ่งจัดเก็บไว้ส่วนใหญ่ในพาร์ติชัน B ที่ว่างเปล่าในอุปกรณ์แบบพาร์ติชัน A/B เครื่องใหม่โดยไม่ส่งผลกระทบต่อพื้นที่ข้อมูลที่แสดงต่อผู้ใช้
การเพิ่มประสิทธิภาพโดยอิงตามโปรไฟล์
Android 9 ขึ้นไปรองรับการใช้การเพิ่มประสิทธิภาพที่แนะนำโดยโปรไฟล์ (PGO) ของ Clang ในโมดูล Android เนทีฟที่มีกฎการสร้างบิลด์เพลน
การบันทึกการเขียนล่วงหน้า
โหมดพิเศษของ SQLiteDatabase ที่เรียกว่าการบันทึกแบบเขียนล่วงหน้าเพื่อใช้งานร่วมกัน (WAL) ช่วยให้ฐานข้อมูลใช้ journal_mode=WAL
ได้ขณะที่เก็บการเชื่อมต่อไว้สูงสุด 1 รายการต่อฐานข้อมูล
เวลาในการบูต
Android 9 เปลี่ยนแปลงการเพิ่มประสิทธิภาพเวลาบูตตามที่อธิบายไว้ในการเพิ่มประสิทธิภาพเวลาบูต
พาวเวอร์
ข้อจำกัดการทำงานในเบื้องหลัง
Android 9 ขึ้นไปมีการจำกัดการทำงานในเบื้องหลังที่ช่วยให้ผู้ใช้ได้จำกัดแอปที่อาจทำให้แบตเตอรี่หมดเร็ว นอกจากนี้ ระบบอาจแนะนำให้ปิดใช้แอปที่ส่งผลเสียต่อประสิทธิภาพของอุปกรณ์
อุปกรณ์ที่ไม่มีแบตเตอรี่
Android 9 จัดการอุปกรณ์ที่ไม่มีแบตเตอรี่ได้ดีกว่าในรุ่นก่อนหน้า Android 9 นำโค้ดสำหรับอุปกรณ์ที่ไม่มีแบตเตอรี่ออก ซึ่งจะถือว่ามีแบตเตอรี่ ชาร์จเต็ม 100% และอยู่ในสภาพดีโดยค่าเริ่มต้น โดยมีค่าอุณหภูมิที่อ่านได้จากเทอร์มิสเตอร์เป็นปกติ