หน้านี้สรุปฟีเจอร์หลักๆ ในรุ่น Android 10 และมีลิงก์ไปยังข้อมูลเพิ่มเติม สรุปฟีเจอร์เหล่านี้จัดเรียงตามตำแหน่งเอกสารประกอบของฟีเจอร์ในเว็บไซต์นี้
สร้าง
java_sdk_library
Android 10 เปิดตัว
java_sdk_library ซึ่งเป็นกฎการสร้างใหม่เพื่อ
แก้ไขปัญหาความเข้ากันได้สำหรับไลบรารี Java ที่แชร์ ผู้ผลิตอุปกรณ์สามารถใช้กลไกนี้กับไลบรารี Java ที่แชร์ของตนเองเพื่อรักษาความเข้ากันได้แบบย้อนกลับสำหรับ API ของตน
สถาปัตยกรรม
ส่วนประกอบของระบบแบบโมดูล
Android 10 แยกส่วนคอมโพเนนต์บางอย่างของระบบ Android และช่วยให้สามารถ อัปเดตคอมโพเนนต์เหล่านั้นได้นอกรอบการเปิดตัว Android ปกติ โมดูลบางส่วน ได้แก่
- Android Runtime
- Conscrypt
- รีโซลเวอร์ DNS
- DocumentsUI
- ExtServices
- สื่อ
- ModuleMetadata
- เครือข่าย
- PermissionController
- ข้อมูลเขตเวลา
ระดับชั้นการจัดการฮาร์ดแวร์โดยตรง (HAL)
Android 10 เพิ่มการรองรับ HAL เพื่อปิดโดยอัตโนมัติ เมื่อไม่มีไคลเอ็นต์
เคอร์เนล
ABI
Android 10 รองรับ ยูทิลิตีการตรวจสอบ ABI ใหม่เพื่อช่วยในการเปรียบเทียบ ติดตาม และลดผลกระทบจากการเปลี่ยนแปลง ABI ของเคอร์เนลที่ส่งผลต่อ ความเข้ากันได้กับโมดูลเคอร์เนล
Android 10 ยังเปิดตัวเครื่องมือตรวจสอบการใช้งาน ABI ที่อิงตามสัญลักษณ์ด้วย เครื่องมือตรวจสอบ จะตรวจหาไบนารีที่สร้างไว้ล่วงหน้าที่ล้าสมัยได้ในเวลาบิลด์ เพื่อให้นักพัฒนาไลบรารีที่ใช้ร่วมกัน ทราบว่าไบนารีที่สร้างไว้ล่วงหน้าใดบ้างที่อาจเสียจากการเปลี่ยนแปลงของตน และ ไบนารีที่สร้างไว้ล่วงหน้าใดบ้างที่ต้องสร้างใหม่
Android Live-Lock Daemon
Android 10 มี Android Live-Lock Daemon (llkd) ซึ่งออกแบบมาเพื่อตรวจจับและลดปัญหาเคอร์เนลหยุดทำงาน
vDSO32 ใน ARM64
Android 10 รองรับการใช้ vDSO32 ในเคอร์เนล 64 บิต ซึ่งช่วยเพิ่มอายุการใช้งานแบตเตอรี่และปรับปรุงประสิทธิภาพอื่นๆ ได้ 0.4 เปอร์เซ็นต์
รายการ fstab สำหรับพาร์ติชันที่ติดตั้งก่อน
Android 10 กำหนดให้อุปกรณ์ระบุรายการ fstab
สำหรับ
พาร์ติชันที่ติดตั้งก่อน
โดยใช้ไฟล์ fstab ใน Ramdisk ระยะแรก
HIDL
Offload BroadcastQueue
Android 10 มีการส่งต่อใหม่BroadcastQueue
ไปยังคิวเบื้องหลังและเบื้องหน้าที่มีอยู่ คิวการโอนมี
ลำดับความสำคัญและลักษณะการทำงานของไทม์เอาต์เหมือนกับคิวเบื้องหลัง คิวการลดภาระจะจัดการBOOT_COMPLETED การออกอากาศ ซึ่งแอปจำนวนมากรับฟังและอาจใช้เวลานานกว่าจะเสร็จสมบูรณ์ เพื่อป้องกันไม่ให้คิวเบื้องหลังถูกบล็อก ซึ่งอาจมีการออกอากาศที่น่าสนใจหรือผู้ใช้มองเห็นได้
ปัจจุบันคิวการออฟโหลดรองรับเฉพาะBOOT_COMPLETED แต่
อาจรองรับการออกอากาศแบบยาวอื่นๆ ได้
บริการ SystemSuspend
Android 10 จะแทนที่เธรดใน libsuspend
ที่รับผิดชอบในการเริ่มต้นการระงับระบบด้วยบริการ SystemSuspend HIDL
การ
ติดตั้งใช้งานนี้มีฟังก์ชันการทำงานเทียบเท่ากับเวอร์ชันก่อนหน้า ขณะเดียวกันก็
ใช้ประโยชน์จากโครงสร้างพื้นฐาน HIDL ของ Android
safe_union ใน HIDL
Android 10 เปิดตัว
safe_union ซึ่งเป็นประเภท Union ที่มีการติดแท็กอย่างชัดเจน
ใน HIDL
การกำหนดค่า
ConfigStore HAL
Android 10 เลิกใช้งาน ConfigStore HAL เนื่องจากใช้หน่วยความจำสูง และใช้งานยาก และแทนที่ HAL ด้วยพร็อพเพอร์ตี้ของระบบ
API สคีมาไฟล์กำหนดค่า
แพลตฟอร์ม Android มีไฟล์ XML จำนวนมากสำหรับจัดเก็บข้อมูลการกำหนดค่า
ไฟล์ XML หลายไฟล์อยู่ในพาร์ติชัน vendor แต่จะอ่านในพาร์ติชัน system ในกรณีนี้ สคีมาของไฟล์ XML จะทำหน้าที่เป็น
อินเทอร์เฟซในพาร์ติชันทั้ง 2 รายการ ดังนั้นจึงต้อง
ระบุสคีมาอย่างชัดเจนและต้องพัฒนาในลักษณะที่เข้ากันได้แบบย้อนหลัง ก่อน Android 10 แพลตฟอร์มไม่มีกลไกในการกำหนดและใช้สคีมา XML หรือเพื่อป้องกันการเปลี่ยนแปลงที่ไม่เข้ากันในสคีมา Android 10 มีกลไกนี้
ซึ่งเรียกว่า
Config File Schema API
พร็อพเพอร์ตี้ของระบบเป็น API
พร็อพเพอร์ตี้ของระบบที่เข้าถึงได้ในพาร์ติชันต่างๆ จะได้รับการจัดรูปแบบเป็นsyspropไฟล์คำอธิบาย และ API สำหรับเข้าถึงพร็อพเพอร์ตี้จะได้รับการสร้างเป็นฟังก์ชันที่เฉพาะเจาะจงสำหรับ C++ และคลาสสำหรับ Java
ออบเจ็กต์อินเทอร์เฟซของผู้ให้บริการ (VINTF)
VINTF
การเปลี่ยนแปลง VINTF ใน Android 10 มีดังนี้
- เลิกใช้งานแท็กเวอร์ชัน AVB
- การเพิ่มข้อมูลเคอร์เนลในแพ็กเกจ OTA
- สร้างไฟล์ Manifest ของ ODM อย่างเป็นทางการ
- การเพิ่มเมทริกซ์ความเข้ากันได้ของผลิตภัณฑ์
- การเชื่อมโยง รายการในไฟล์ Manifest กับโมดูล HAL ในระบบบิลด์
Bootloader
Ramdisk
ใน Android 10 ระบบไฟล์รูทจะ
ไม่รวมอยู่ใน ramdisk.img อีกต่อไป แต่จะผสานรวมกับ system.img แทน
สร้างพาร์ติชัน ODM
Android 10 รองรับ
การสร้างพาร์ติชัน odm
โดยใช้ระบบบิลด์ของ Android คุณสามารถใช้พาร์ติชัน /odm แยกต่างหากสำหรับการปรับแต่ง ซึ่งจะช่วยให้คุณใช้รูปภาพของผู้ให้บริการรายเดียวสำหรับ SKU ฮาร์ดแวร์หลายรายการได้ ซึ่งช่วยให้ผู้ผลิตการออกแบบดั้งเดิม (ODM) ปรับแต่งแพ็กเกจการสนับสนุนบอร์ด (BSP) ของผู้จำหน่ายระบบวงจรรวมบนชิป (SoC) ให้เหมาะกับอุปกรณ์ (บอร์ด) ของตนได้ โดยสามารถใช้โมดูลเคอร์เนลสำหรับคอมโพเนนต์เฉพาะบอร์ด
แดมอนเฉพาะบอร์ด หรือฟีเจอร์ของตนเองในเลเยอร์
การแยกฮาร์ดแวร์ (HAL) นอกจากนี้ ยังอาจเปลี่ยนหรือปรับแต่งคอมโพเนนต์ SoC ได้ด้วย
การกำหนดเวอร์ชันส่วนหัวของอิมเมจบูต
Android 10 อัปเดตส่วนหัวของรูปภาพการบูตเป็นเวอร์ชัน 2 ซึ่ง มีส่วนสำหรับจัดเก็บรูปภาพ Device Tree Blob (DTB) การทดสอบ VTS ของ Android 10 จะยืนยันว่าอุปกรณ์ทั้งหมดที่เปิดตัวพร้อม Android 10 ใช้ส่วนหัวของอิมเมจบูตเวอร์ชัน 2 และมีอิมเมจ DTB ที่ถูกต้องเป็นส่วนหนึ่งของอิมเมจบูต/อิมเมจการกู้คืน
อิมเมจการกู้คืนสำหรับอุปกรณ์ที่ไม่ใช่ A/B
ใน Android 9 ขึ้นไป อิมเมจการกู้คืนของอุปกรณ์ต้องมีข้อมูล จากอิมเมจการวางซ้อน ผู้ผลิตอุปกรณ์สามารถใช้ DeviceTree หรือ Advanced Configuration and Power Interface (ACPI) เพื่ออธิบายอุปกรณ์ทั้งหมดที่ค้นหาไม่ได้ Android 10 ขึ้นไปรองรับสถาปัตยกรรมที่ ใช้ ACPI แทน Blob ของ DeviceTree สำหรับการซ้อนทับ (DTBO)
AIDL ที่เสถียร
Android 10 เพิ่มการรองรับ ภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL) ซึ่งเป็นวิธีใหม่ในการติดตาม Application Program Interface (API)/Application Binary Interface (ABI) ที่อินเทอร์เฟซ AIDL จัดเตรียมไว้ให้
ย้าย fastboot ไปยังพื้นที่ผู้ใช้
Android 10 เพิ่มการรองรับพาร์ติชันที่ปรับขนาดได้โดยการย้ายการใช้งาน fastboot จาก Bootloader ไปยังพื้นที่ผู้ใช้
Display
การเล่นวิดีโอ HDR
Android 10 รองรับ การเล่น HDR10, VP9 และ HDR10+
การจัดประเภทข้อความ
การจัดประเภทข้อความใช้เทคนิคแมชชีนเลิร์นนิงเพื่อช่วยนักพัฒนาแอปจัดประเภทข้อความ Android
10 ได้เปิดตัว 2 วิธีการสำหรับ TextClassifier API ดังนี้
suggestConversationActions
และ detectLanguage
เมธอด suggestConversationActions จะสร้างการตอบกลับและการดำเนินการที่แนะนำ
จากการสนทนาที่กำหนด และเมธอด detectLanguage จะตรวจหาภาษา
ของข้อความ
รองรับการแสดงผลแบบอักษร Zawgyi
Zawgyi เป็นแบบอักษรที่ได้รับความนิยมมากที่สุดในเมียนมาร์ Android 9 และเวอร์ชันที่ต่ำกว่าไม่รองรับ การแสดงผล Zawgyi เนื่องจาก ไม่เป็นไปตามมาตรฐาน Unicode Android 10 แก้ปัญหานี้ด้วยการรวมแบบอักษร Unicode ที่แสดงผลทั้ง Unicode Burmese และ Zawgyi ได้พร้อมกัน ไม่ต้องดำเนินการ ใดๆ เพื่อรองรับการแสดงผลแบบอักษร Zawgyi ในอุปกรณ์ที่เปิดตัวด้วย Android 10 หากอุปกรณ์มีการติดตั้งใช้งานที่กำหนดเองเพื่อรองรับ Zawgyi คุณจะทำสิ่งต่อไปนี้ได้
- โปรดเปลี่ยนกลับการเปลี่ยนแปลงเหล่านั้นและใช้วิธีการที่แพลตฟอร์มรองรับ
- เก็บแบบอักษร Zawgyi ทั่วไปไว้ในระบบและใช้รหัสภาษา
my-qaagในfonts.xmlดูข้อมูลเพิ่มเติมได้ที่บันทึกประจำรุ่น CLDR ของ Unicode เกี่ยวกับ Zawgyi (Qaag)
ข้อจำกัดในการซ่อนไอคอนแอป
Android 10 จำกัดความสามารถของแอปในการซ่อนไอคอน Launcher หากแอปไม่ได้เปิดใช้กิจกรรมของ Launcher ระบบจะแสดงกิจกรรมที่สังเคราะห์ขึ้นใน Launcher ซึ่งกิจกรรมที่สังเคราะห์ขึ้นนี้แสดงถึงหน้ารายละเอียดของแอปในการตั้งค่าระบบ
ดูข้อมูลเพิ่มเติมเกี่ยวกับตรรกะที่ใช้ในการแสดงไอคอนแอป รวมถึงประเภทของแอปที่ไม่ได้แสดงไอคอนแอปได้ที่เอกสารประกอบสำหรับ
getActivityList()
ในข้อมูลอ้างอิง API
การตั้งค่า
Android 10 มีการตั้งค่าระยะหมดเวลาที่ผู้ใช้ปรับแต่งได้เพื่อปรับปรุงการช่วยเหลือพิเศษ การเปลี่ยนแปลง API และการตั้งค่าจะมาพร้อมกับ Android 10 หากคุณปรับแต่งการตั้งค่า โปรดตรวจสอบว่า ระบบรองรับฟีเจอร์นี้ หากมีองค์ประกอบ UI ที่หมดเวลาในอุปกรณ์ ให้ใช้ API การหมดเวลา กับองค์ประกอบเหล่านั้น ดูข้อมูลเพิ่มเติมได้ที่ หลักเกณฑ์ด้านการช่วยเหลือพิเศษสำหรับนักพัฒนาแอป Android
ความเข้ากันได้
เอกสารนิยามความเข้ากันได้ของ Android (CDD)
เอกสารคำจำกัดความความเข้ากันได้ของ Android 10 จะต่อยอดจากเวอร์ชันก่อนหน้าด้วยการอัปเดตฟีเจอร์ใหม่ และการเปลี่ยนแปลงข้อกำหนดสำหรับฟังก์ชันที่เผยแพร่ก่อนหน้านี้
การทดสอบ
ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS)
CTS ของ Android มี หน้าหมายเหตุประจำรุ่นแยกต่างหากซึ่งแสดงการเปลี่ยนแปลงที่สำคัญหลายอย่าง สำหรับ Android 10
การดาวน์โหลด CTS
แพ็กเกจ CTS ที่รองรับ Android 10 มีให้บริการในหน้าการดาวน์โหลด CTS คุณสามารถซิงค์ซอร์สโค้ดสำหรับการทดสอบที่รวมไว้กับแท็ก android-cts-10_r1 ใน
โครงสร้างแบบโอเพนซอร์ส
APEX ของ CTS Shim
Android 10 เปิดตัวแพ็กเกจที่ชื่อ CtsShimApex
ซึ่งต้องติดตั้งไว้ล่วงหน้าในอุปกรณ์เพื่อเขียนการทดสอบ CTS สำหรับการจัดการ APEX
โหมดโปรแกรมทดสอบอัตโนมัติ
โหมดชุดทดสอบ CTS ช่วยให้นักพัฒนาแอปทำการทดสอบอุปกรณ์หรือกลุ่มอุปกรณ์โดยอัตโนมัติได้
โหมด Instant Apps
ตั้งแต่ Android 10 เป็นต้นไป CTS จะทำงานในโหมด Instant App ซึ่งหมายถึงการติดตั้ง APK ของการทดสอบเป็น Instant App และเรียกใช้การทดสอบ
นอกเหนือจากโหมด CTS สำหรับ Instant App แล้ว Android 10 ยังมี CTS Verifier สำหรับ Instant App ด้วย
การทดสอบเสียงระดับมืออาชีพของ CTS Verifier
Android 10 เพิ่มการทดสอบ CTS Verifier สำหรับการปฏิบัติตามข้อกำหนดของ Pro Audio
การทดสอบ MIDI ของ CTS Verifier
ใน Android 10 การทดสอบ MIDI ของ CTS Verifier จะทดสอบฟังก์ชันการทำงานของ MIDI ด้วยอินเทอร์เฟซ MIDI ผ่าน USB, อินเทอร์เฟซ MIDI ผ่านบลูทูธ และเส้นทางอุปกรณ์ MIDI เสมือน
การตีความผลการทดสอบ CTS
Android 10 อัปเดตกลไกสำหรับ การตีความผลลัพธ์ของ CTS
ชุดทดสอบของผู้ให้บริการ (VTS)
การทดสอบ VTS ด้วย ramdisk สำหรับการแก้ไขข้อบกพร่อง
ใน Android 10 Generic System Image (GSI) ที่ใช้ในการ
เรียกใช้การทดสอบการปฏิบัติตามข้อกำหนด CTS-on-GSI/VTS จะเปลี่ยนจากประเภทบิลด์ userdebug เป็น user
เนื่องจาก GSI มีการลงนามรุ่น อย่างไรก็ตาม adb root คำสั่งที่ให้สิทธิ์รูทแก่โฮสต์
ในอุปกรณ์ Android ที่อยู่ระหว่างการทดสอบนั้นไม่พร้อมใช้งานในบิลด์ของผู้ใช้
ซึ่งเป็นปัญหาเนื่องจาก VTS ต้องใช้ adb root ในการเรียกใช้
เราได้เปิดตัว debug ramdisk เพื่อให้adb root เป็นไปได้หากอุปกรณ์ปลดล็อกอยู่ ซึ่งจะช่วยลดความซับซ้อนของขั้นตอนการทดสอบ
โดยการนำบิลด์ผู้ใช้เดียวกันมาใช้ซ้ำ system.img (ไม่ว่าจะเป็น GSI หรือ system.img ของ OEM)
การตรวจสอบความถูกต้องของฮาร์ดแวร์คอมโพสเซอร์
Android 10 เพิ่มคลาสการทดสอบ VTS ใหม่สำหรับการตรวจสอบ Hardware
Composer ผ่านอินเทอร์เฟซ readback ใน IComposerClient.hal
หากผู้ให้บริการไม่ได้ใช้ readback การทดสอบจะผ่านโดยอัตโนมัติ
การแก้ไขข้อบกพร่อง
โหลดไลบรารีที่ใช้ร่วมกันด้วยตัวโหลดคลาสที่แตกต่างกัน
ใน Android 9 และเวอร์ชันที่ต่ำกว่า แอปจะโหลดไลบรารีที่ใช้ร่วมกันของ Java ที่ลิงก์ไว้ในตัวโหลดคลาสของแอป
ใน Android 10 เฟรมเวิร์กจะใช้
เครื่องมือโหลดคลาสที่แตกต่างจากเครื่องมือโหลดคลาสของแอปเพื่อโหลดไลบรารีที่แชร์ของ Java
ซึ่งลิงก์ผ่าน uses-library หรือ uses-static-library
โดยทั่วไปแล้ว แอปไม่ควรอาศัยการใช้ตัวโหลดคลาสที่เฉพาะเจาะจง ดังนั้นการเปลี่ยนแปลงนี้จึงไม่ควรทำให้ลักษณะการทำงานของแอปหยุดชะงัก อย่างไรก็ตาม หากแอปต้องใช้ตัวโหลดคลาสเดียว ลักษณะการทำงานดังกล่าวจะหยุดทำงาน นอกจากนี้ ระบบยังรองรับระดับการเข้าถึง package-private ของคลาสในแพ็กเกจเดียวกัน แต่ไม่รองรับ ในไลบรารีที่ใช้ร่วมกัน
ผู้ผลิตอุปกรณ์อาจพบปัญหาความเข้ากันได้ของแอปขณะทดสอบอุปกรณ์ที่ใช้ Android 10
ฟีเจอร์การรักษาความปลอดภัย
ดูรายการการเพิ่มประสิทธิภาพที่สมบูรณ์ยิ่งขึ้นซึ่งเกี่ยวข้องกับความปลอดภัยและความเป็นส่วนตัวเท่านั้นได้ที่หน้าการเพิ่มประสิทธิภาพด้านความปลอดภัยและความเป็นส่วนตัวของ Android 10
ตรวจสิทธิ์ด้วยใบหน้า
การตรวจสอบสิทธิ์ด้วยใบหน้าช่วยให้ผู้ใช้ ปลดล็อกอุปกรณ์ได้เพียงแค่ดูที่ด้านหน้าของอุปกรณ์ Android 10 เพิ่มการรองรับสแต็กการตรวจสอบสิทธิ์ด้วยใบหน้าแบบใหม่ ที่ประมวลผลเฟรมกล้องได้อย่างปลอดภัย พร้อมรักษาความปลอดภัยและความเป็นส่วนตัว ระหว่างการตรวจสอบสิทธิ์ด้วยใบหน้าในฮาร์ดแวร์ที่รองรับ Android 10 ยังมีวิธีง่ายๆ สำหรับการติดตั้งใช้งานที่สอดคล้องกับข้อกำหนดด้านความปลอดภัยเพื่อเปิดใช้การผสานรวมแอปสำหรับธุรกรรมต่างๆ เช่น ธนาคารออนไลน์หรือบริการอื่นๆ
การเข้าถึงเพิ่มเติม
เอเจนต์ความน่าเชื่อถือซึ่งเป็นกลไกพื้นฐานที่ใช้โดยกลไกการตรวจสอบสิทธิ์ระดับที่สาม เช่น Smart Lock จะขยายการปลดล็อกได้ใน Android 10 เท่านั้น เอเจนต์ความน่าเชื่อถือจะปลดล็อกอุปกรณ์ที่ล็อกอยู่ไม่ได้อีกต่อไป และจะปลดล็อกอุปกรณ์ค้างไว้ได้สูงสุด 4 ชั่วโมงเท่านั้น
การเข้ารหัส
OEMCrypto
Android 10 ใช้ OEMCrypto API เวอร์ชัน 15
การทดสอบ
BoundsSanitizer
Android 10 จะติดตั้งใช้งาน BoundsSanitizer (BoundSan) ในบลูทูธ และตัวแปลงรหัส BoundSan ใช้ตัวล้างข้อมูลขอบเขตของ UBSan การลดความเสี่ยงนี้จะเปิดใช้ ในระดับต่อโมดูล โดยจะช่วยรักษาความปลอดภัยของคอมโพเนนต์ที่สำคัญของ Android และ ไม่ควรปิดใช้ BoundSan เปิดใช้ในตัวแปลงรหัสต่อไปนี้
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisideclibaaclibxaac
การล้างข้อมูลการล้นจำนวนเต็ม
Android 10 เปิดใช้ การล้างข้อมูลการล้นจำนวนเต็ม (IntSan) ใน ตัวแปลงรหัสซอฟต์แวร์ ตรวจสอบว่าประสิทธิภาพการเล่นเป็นที่ยอมรับสำหรับตัวแปลงรหัส ที่ฮาร์ดแวร์ของอุปกรณ์ไม่รองรับ IntSan เปิดใช้ในตัวแปลงรหัสต่อไปนี้
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisidec
หน่วยความจำแบบเรียกใช้เท่านั้น
โดยค่าเริ่มต้น ระบบจะทำเครื่องหมายส่วนโค้ดที่เรียกใช้งานได้สำหรับไบนารีของระบบ AArch64 เป็น เรียกใช้เท่านั้น (อ่านไม่ได้) เพื่อลดความเสี่ยงจากการโจมตีด้วยการนำโค้ด ที่คอมไพล์แบบ Just-In-Time มาใช้ซ้ำ โค้ดที่ผสมข้อมูลและโค้ดเข้าด้วยกัน และโค้ดที่ตั้งใจตรวจสอบส่วนเหล่านี้ (โดยไม่แมปส่วนหน่วยความจำใหม่เป็นแบบอ่านได้ก่อน) จะไม่ทํางานอีกต่อไป แอปที่มี SDK เป้าหมายเป็น Android 10 (API ระดับ 29 ขึ้นไป) จะได้รับผลกระทบหากแอป พยายามอ่านส่วนโค้ดของไลบรารีระบบที่เปิดใช้หน่วยความจำแบบดำเนินการอย่างเดียว (XOM) ในหน่วยความจำโดยไม่ได้ทำเครื่องหมายส่วนดังกล่าวเป็นแบบอ่านได้ก่อน
Scudo
Scudo เป็นตัวจัดสรรหน่วยความจำในโหมดผู้ใช้แบบไดนามิก ซึ่งออกแบบมาให้มีความยืดหยุ่นมากขึ้นต่อช่องโหว่ที่เกี่ยวข้องกับฮีป โดยมี ฟังก์ชันพื้นฐานสำหรับการจัดสรรและยกเลิกการจัดสรร C มาตรฐาน รวมถึงฟังก์ชันพื้นฐานของ C++
ShadowCallStack
ShadowCallStack (SCS) เป็นโหมดการวัดประสิทธิภาพ LLVM
ที่ป้องกันการเขียนทับที่อยู่ส่งคืน (เช่น Stack Buffer
Overflow) โดยการบันทึกที่อยู่ส่งคืนของฟังก์ชันไปยังอินสแตนซ์ ShadowCallStack ที่จัดสรรแยกต่างหากในฟังก์ชัน Prolog ของฟังก์ชันที่ไม่ใช่ Leaf และ
โหลดที่อยู่ส่งคืนจากอินสแตนซ์ ShadowCallStack ในฟังก์ชัน Epilog
เสียง
HAL เสียง
Android 10 มีความสามารถใหม่ต่อไปนี้ สำหรับ HAL ของเสียง
AudioSourceAudioFormatAudioChannelMask
เพิ่มข้อกำหนดเพิ่มเติมสำหรับการใช้งาน HAL และระบบย่อยของเสียง
ผลลัพธ์ของการประมวลผลล่วงหน้า
Android มีเอฟเฟกต์การประมวลผลเบื้องต้น เช่น
การตัดเสียงก้อง การควบคุมสัญญาณเสียงที่ได้รับอัตโนมัติ และการลดเสียงรบกวน
Android 10 มีข้อกำหนดใหม่สำหรับการจับภาพด้วย
VOICE_COMMUNICATION
ตัวจัดการนโยบายเสียง
Android 10 มีการปรับโครงสร้างAudio Policy Manager ครั้งใหญ่เพื่อให้มีความยืดหยุ่นมากขึ้นในการรองรับ Use Case ที่ซับซ้อนของยานยนต์
เสียงความละเอียดสูง
Android 10 มีการปรับปรุงเสียงความละเอียดสูงดังต่อไปนี้
- การรองรับการลอยตัว
- รองรับความถี่ 192 KHz
- รองรับ 8 ช่อง
- การรวมข้อมูลเวลา
การจับภาพพร้อมกัน
Android 10 ปรับปรุงประสบการณ์ของผู้ใช้ในการบันทึกพร้อมกันซึ่งต้องมีการบันทึกเสียงที่ใช้งานอยู่มากกว่า 1 รายการพร้อมกัน
AudioPlaybackCapture
Android 10 มี API ใหม่ที่ชื่อ AudioPlaybackCapture ซึ่งช่วยให้แอปสามารถคัดลอกเสียงที่แอปอื่นกำลังเล่นได้ ฟีเจอร์นี้คล้ายกับการจับภาพหน้าจอ แต่เป็นการจับภาพเสียง
กรณีการใช้งานหลักคือการเปิดใช้แอปสตรีมมิงเพื่อบันทึกเสียงที่เกมเล่น
API การจับภาพไม่ส่งผลต่อเวลาในการตอบสนองของแอปที่มีการจับภาพเสียง
MIDI
Android 10 ช่วยให้การพอร์ตแอปเสียงระดับมืออาชีพ
ที่ใช้ MIDI ไปยังแพลตฟอร์ม Android เป็นเรื่องง่ายขึ้นโดยใช้
AMidi NDK API
กล้อง
ดูสรุปการเปลี่ยนแปลงใน Camera API, Camera HAL และโมดูลกล้อง ที่เปิดตัวใน Android 10 ได้ที่ ข้อมูลอัปเดตเกี่ยวกับกล้องใน Android 10
การปรับปรุงความเป็นส่วนตัวของเฟรมเวิร์กกล้อง
Android 10 ได้เปิดตัวการปรับปรุงความเป็นส่วนตัวใน
เฟรมเวิร์กของกล้อง หากต้องการหลีกเลี่ยงการเปิดเผยข้อมูลกล้องแบบคงที่ที่อาจมีความละเอียดอ่อนใน
CameraCharacteristics
โดยไม่ได้รับความยินยอมจากผู้ใช้ แอปต้องได้รับสิทธิ์
CAMERA
ในการดึงข้อมูลเมตาแบบคงที่ด้วยแท็กที่คำนึงถึงความเป็นส่วนตัวโดยใช้วิธี
getCameraCharacteristics
หากต้องการดูรายการคีย์ลักษณะกล้องที่ต้องมีสิทธิ์ CAMERA
ให้เรียกใช้เมธอด getKeysNeedingPermission
คำค้นหาการกำหนดค่าเซสชันใหม่
Android 10 เพิ่มฟีเจอร์ คำค้นหาการกำหนดค่าเซสชันใหม่ ซึ่งช่วยปรับปรุงประสิทธิภาพด้วยการควบคุม ตรรกะการกำหนดค่าพารามิเตอร์เซสชันภายในใหม่ได้มากขึ้น
API การจัดการบัฟเฟอร์ HAL3 ของกล้อง
Android 10 เปิดตัวAPI การจัดการบัฟเฟอร์ HAL3 ของกล้องซึ่งเป็นตัวเลือกที่ ช่วยให้คุณใช้ตรรกะการจัดการบัฟเฟอร์เพื่อให้ได้การแลกเปลี่ยนหน่วยความจำและความหน่วงในการจับภาพที่แตกต่างกันในการติดตั้งใช้งาน HAL ของกล้อง
การสลับกล้องจริงแบบไดนามิกของ HAL ของกล้อง
Android 10 เปิดตัวแท็กข้อมูลเมตาแบบไดนามิก
ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
ซึ่งระบุกล้องจริงพื้นฐานที่ใช้งานอยู่ของอุปกรณ์กล้องตรรกะ ดูข้อมูลเพิ่มเติมได้ที่
การรองรับกล้องหลายตัว
รองรับการซ่อนกล้องจริง
ใน Android 10 กล้อง HAL สามารถลดจำนวน กล้องจริงที่แอปเปิดได้โดยตรง ดูรายละเอียดเพิ่มเติมได้ที่การรองรับกล้องหลายตัว
Camera2 VNDK API
ใน Android 10 โมดูลของผู้ให้บริการสามารถเข้าถึงและควบคุม
อุปกรณ์กล้องผ่านอินเทอร์เฟซ HIDL มาตรฐานใหม่ 2 รายการ
android.frameworks.cameraservice.service@2.0 และ
android.frameworks.cameraservice.device@2.0 Android 10 ยังได้เปิดตัวไลบรารี libcamera2_vendor ที่ผู้ให้บริการมีให้เพื่ออำนวยความสะดวกในการใช้อินเทอร์เฟซ HIDL
ไลบรารีนี้คล้ายกับ
ไลบรารี Camera NDK
โดยมีการแก้ไขเล็กน้อย
การกำหนดค่าสตรีม
Android 10 เพิ่มฟีเจอร์ที่ช่วยให้ผู้จำหน่ายกล้องสามารถ โฆษณา สตรีมกล้องที่แนะนำ ต่อไคลเอ็นต์กล้อง และรองรับAPI สำหรับการค้นหาชุดค่าผสมของสตรีม
ข้อกำหนดในการรวมสตรีมจากกล้อง
อุปกรณ์ที่ใช้ Android 10 ไม่จำเป็นต้อง
รองรับการผสมสตรีมกับสตรีมกล้องย่อยจริงอีกต่อไป อย่างไรก็ตาม อุปกรณ์ที่ใช้ Android 10 ที่มีอุปกรณ์ HAL ของกล้องเวอร์ชัน 3.5 ต้องรองรับ isStreamCombinationSupported() เพื่อให้แอปค้นหาได้ว่าระบบรองรับการรวมสตรีมที่มีสตรีมจริงหรือไม่
ดูข้อมูลเพิ่มเติมได้ที่ การรองรับกล้องหลายตัว
การถ่ายภาพ HEIF
Android 10 รองรับกล้องในตัวสำหรับรูปภาพรูปแบบไฟล์ภาพที่มีประสิทธิภาพสูง (HEIF) ซึ่งมี คุณภาพของรูปภาพที่ดีขึ้นและมีขนาดเล็กกว่ารูปภาพ JPEG อุปกรณ์ต้องมีตัวเข้ารหัส HEIC หรือ HEVC เพื่อรองรับรูปภาพ HEIF
กล้องขาวดำ
Android 10 รองรับรูปแบบ Y8 เพิ่มเติม
ข้อมูลเมตาแบบคงที่ของอาร์เรย์ตัวกรองสีขาวดำและอินฟราเรดใกล้ (NIR)
และDngCreator ฟังก์ชันสำหรับกล้องขาวดำ
การเชื่อมต่อ
การโทรและการรับส่งข้อความ
หมายเลขฉุกเฉินและการโทรฉุกเฉิน
Android 10 รองรับการโทรฉุกเฉินได้ดียิ่งขึ้น ในกรณีฉุกเฉิน อุปกรณ์ที่รองรับ IRadio HAL v1.4 สามารถเริ่มการโทรฉุกเฉินโดยใช้ หมายเลขฉุกเฉินที่ดึงมาจากแหล่งที่มา เช่น ซิมการ์ด สัญญาณ เครือข่าย หรือฐานข้อมูล Android คุณจัดหมวดหมู่หมายเลขโทรศัพท์ตามหมวดหมู่บริการฉุกเฉิน เช่น ตำรวจ ดับเพลิง และรถพยาบาล ได้
API การโทรแบบกลุ่ม
API การโทรแบบกลุ่มเป็นส่วนขยายของ API eMBMS ที่เพิ่มเข้ามาใน Android 9 API ใหม่กำหนดมาตรฐานสำหรับแอปในการเข้าร่วมและออกอากาศในการโทรแบบกลุ่ม การออกอากาศทางโทรศัพท์มือถือโดยการโต้ตอบกับแพ็กเกจมิดเดิลแวร์ eMBMS การโทรกลุ่มต้องได้รับการสนับสนุนจากผู้ให้บริการชิปเซ็ต ผู้ให้บริการมิดเดิลแวร์ และผู้ให้บริการเครือข่ายมือถือจึงจะทำงานได้อย่างถูกต้อง เอกสารประกอบสำหรับนักพัฒนาแอปอยู่ที่ developer.google.com
ความสามารถของซิมระยะไกล
Android 10 เปิดตัวความสามารถของ SIM ระยะไกลที่
อนุญาตให้แอปส่งข้อความในอุปกรณ์โฮสต์ Android ส่งข้อความ SMS ผ่าน
โทรศัพท์โดยใช้กลไกต่างๆ เช่น บลูทูธ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบอ้างอิงสำหรับเมธอด
getSubscriptionType
และค่าคงที่
SUBSCRIPTION_TYPE_REMOTE_SIM
eSIM หลายรายการ
ใน Android 10 คลาส EuiccManager รองรับอุปกรณ์ที่มี
ซิมแบบฝัง (eSIM) หลายซิม
หรือ eUICC
ข้อมูลอัปเดต eSIM
สำหรับอุปกรณ์ที่ใช้ Android 10 ซึ่งรองรับ eSIM คุณต้องกำหนดอาร์เรย์รหัสช่อง eUICC ที่ถอดออกไม่ได้ นอกจากนี้ อุปกรณ์ต้องรองรับ IRadio HAL v1.4 และ IRadioConfig HAL v1.2 ด้วย ดูข้อมูลเพิ่มเติมได้ที่ การติดตั้งใช้งาน eSIM และข้อกำหนดของ HAL
5G แบบ Non-Standalone (NSA)
Android 10 เพิ่มการรองรับ 5G แบบ Non-Standalone (NSA) 5G NSA เป็นโซลูชัน สำหรับเครือข่าย 5G ที่โครงสร้างพื้นฐาน 4G ที่มีอยู่รองรับเครือข่าย ใน Android 10 อุปกรณ์จะแสดงไอคอน 5G ใน แถบสถานะเมื่อเชื่อมต่อกับเครือข่าย 5G
คำแนะนำบัญชีโทรศัพท์
Android 10 เปิดตัว บริการคำแนะนำบัญชีโทรศัพท์ ซึ่งช่วยให้ระบบแสดงคำแนะนำสำหรับบัญชีโทรศัพท์แก่ผู้ใช้เมื่อโทรออกได้
ผู้ให้บริการ
ย้ายข้อมูลการตั้งค่าเครือข่ายมือถือ
Android 10 ได้ปรับโครงสร้างโค้ด UI ของการตั้งค่าเครือข่ายมือถือใหม่
และย้ายจากสแต็ก Telephony ไปยังสแต็กการตั้งค่า หากต้องการรองรับโค้ดที่ย้ายข้อมูล ให้เปลี่ยนค่าการกำหนดค่าการตั้งค่าเครือข่ายมือถือต่อไปนี้จากทรัพยากร Android เป็นทรัพยากร CarrierConfig
config_world_mode ->
CarrierConfigManager#KEY_WORLD_MODE_ENABLED_BOOL
config_support_tdscdma ->
CarrierConfigManager#KEY_SUPPORT_TDSCDMA_BOOL
config_support_tdscdma_roaming_on_networks ->
CarrierConfigManager#KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY
config_enabled_lte ->
CarrierConfigManager#KEY_LTE_ENABLED_BOOL
ตัวระบุอุปกรณ์
ตัวระบุอุปกรณ์ถาวร (IMEI/MEID, IMSI และหมายเลขบิวด์) ได้รับการปกป้องโดยสิทธิ์ที่มีสิทธิ์ และสิทธิ์เข้าถึงจะมอบให้แก่แอปของเจ้าของอุปกรณ์และเจ้าของโปรไฟล์ด้วย เนื่องจาก IMSI และ หมายเลขซีเรียลของซิมเป็นข้อมูลที่ผู้ให้บริการระบุไว้ สิทธิ์เข้าถึงตัวระบุเหล่านี้จึง มอบให้แก่แพ็กเกจที่มีสิทธิ์ของผู้ให้บริการ
Wi-Fi
การเลือกเครือข่าย
Android ประเมินคุณภาพของเครือข่ายที่เชื่อมต่ออย่างต่อเนื่องและ ประเมินคุณภาพของเครือข่ายที่พร้อมใช้งาน Android 10 ได้อัปเดตอัลกอริทึมและขั้นตอนสำหรับการเลือกและการสลับระหว่างเครือข่าย Wi-Fi
การสแกนการลดภาระเครือข่ายที่ต้องการของ Wi-Fi
Android 10 เปิดตัวเมธอด API ที่ไม่บังคับชื่อ
setDeviceMobilityState() ใน WifiManager ซึ่งจะเพิ่มช่วงเวลาระหว่างการสแกน
การออฟโหลดเครือข่ายที่ต้องการ (PNO)
เมื่ออุปกรณ์อยู่กับที่เพื่อลดการใช้พลังงาน
Wi-Fi ของผู้ให้บริการ
ใน Android 10 อุปกรณ์ที่มีฟีเจอร์ Wi-Fi ของผู้ให้บริการจะเชื่อมต่อกับเครือข่าย Wi-Fi ของผู้ให้บริการที่กำหนดค่าไว้โดยอัตโนมัติ (เครือข่ายที่มีใบรับรองคีย์สาธารณะ)
Wi-Fi Easy Connect
ใน Android 10 อุปกรณ์สามารถใช้ Wi-Fi Easy Connect ซึ่งใช้ โปรโตคอลการจัดสรรอุปกรณ์ (DPP) ที่ Wi-Fi Alliance (WFA) เปิดตัว เพื่อ จัดสรรและกำหนดค่าอุปกรณ์ Wi-Fi
โหมดค่าความหน่วงต่ำของ Wi-Fi
Android 10 เปิดตัวโหมดเวลาในการตอบสนองต่ำของ Wi-Fi ซึ่ง กำหนดค่าชิป Wi-Fi เพื่อลดเวลาในการตอบสนอง
เซิร์ฟเวอร์ DHCP ที่อัปเดตแล้ว
เราจะลบ dnsmasq ออกเนื่องจากเป็นส่วนหนึ่งของการจัดตั้งกลุ่มบริการ "เซิร์ฟเวอร์ IP"
Android 10 จะแทนที่การใช้งานฟังก์ชันเซิร์ฟเวอร์ DHCPv4
ด้วยคอมโพเนนต์แยกต่างหาก ซึ่งเขียนด้วยภาษา Java เป็นหลักเพื่อผสานรวมกับ
ระนาบควบคุมเฟรมเวิร์ก Java ได้ดียิ่งขึ้น ซึ่งจะช่วยปรับปรุงความปลอดภัยและ
ความสามารถในการอัปเดตสำหรับเซิร์ฟเวอร์ DHCP ดูรายละเอียดเพิ่มเติมได้ที่
packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java
คุณไม่จำเป็นต้องดำเนินการใดๆ เพื่อใช้การเปลี่ยนแปลงนี้ โดยอุปกรณ์ทั้งหมดที่เปิดตัวและอัปเกรดเป็น Android 10 จะใช้ DhcpServer โดยค่าเริ่มต้น
หากมีการปรับแต่งเซิร์ฟเวอร์ DHCP คุณสามารถกลับไปใช้ลักษณะการทำงานของ Android 9
ได้โดยตั้งค่าส่วนกลาง tether_enable_legacy_dhcp_server=1
DhcpServer ใหม่จะรวมอยู่ในโมดูลคอมโพเนนต์เครือข่าย ดังนั้นการปรับแต่งฟังก์ชันเซิร์ฟเวอร์ DHCP ควรจะอัปสตรีม
WPA3 และ Wi-Fi Enhanced Open
Android 10 เพิ่มการรองรับมาตรฐานความปลอดภัย Wi-Fi Protected Access 3 (WPA3) และ Wi-Fi Enhanced Open เพื่อมอบความเป็นส่วนตัวและความแข็งแกร่งที่ดียิ่งขึ้นต่อการโจมตีที่ทราบ
Wi-Fi Direct
Wi-Fi Direct หรือที่เรียกว่า Wi-Fi P2P ช่วยให้อุปกรณ์ที่รองรับค้นหาและเชื่อมต่อกันได้โดยตรงโดยใช้ โปรโตคอล Wi-Fi Direct โดยไม่ต้องเข้าถึงอินเทอร์เน็ตหรือเครือข่ายมือถือ
การปรับปรุงการสุ่ม MAC
ตั้งแต่ Android 10 เป็นต้นไป ระบบจะเปิดใช้การสุ่ม MAC โดยค่าเริ่มต้นสำหรับโหมดไคลเอ็นต์, SoftAp และ Wi-Fi Direct อุปกรณ์ต้องมี ตัวเลือกในการเปิดหรือปิดใช้การสุ่ม MAC สำหรับแต่ละ SSID ใน UI ของระบบ
Passpoint R2
Android 10 รองรับ ฟีเจอร์ Passpoint R2 Passpoint R2 ใช้การลงชื่อสมัครใช้ออนไลน์ (OSU) ซึ่งเป็นวิธีการมาตรฐานในการจัดสรรโปรไฟล์ Passpoint ใหม่ Android 10 รองรับ การจัดสรรโปรไฟล์ EAP-TTLS โดยใช้ SOAP-XML
NFC
รักษาความปลอดภัยของ NFC
NFC ที่ปลอดภัยอนุญาตให้เปิดใช้การจำลองบัตร NFC นอกโฮสต์ได้เฉพาะเมื่อปลดล็อกหน้าจอของอุปกรณ์แล้วเท่านั้น การใช้ฟีเจอร์นี้จะช่วยให้ผู้ใช้มีตัวเลือกในการเปิดใช้รักษาความปลอดภัยของ NFC เพื่อปรับปรุงความปลอดภัย
เลิกใช้งาน Android Beam แล้ว
ใน Android 10 คุณไม่จำเป็นต้องใช้ Android Beam อีกต่อไป และเราได้เลิกใช้งานอินเทอร์เฟซและเมธอดต่อไปนี้แล้ว
อินเทอร์เฟซ:
NfcAdapter.CreateBeamUrisCallbackNfcAdapter.CreateNdefMessageCallbackNfcAdapter.OnNdefPushCompleteCallback
วิธีการ
createBeamUrisinvokeBeamisNdefPushEnabledsetBeamPushUrissetBeamPushUrisCallbacksetNdefPushMessagesetNdefPushMessageCallbacksetOnNdefPushCompleteCallbackcreateNdefMessageCallbackonNdefPushCompleteCallback
หากต้องการใช้ Android Beam ให้รายงานค่าคงที่ของฟีเจอร์
android.sofware.nfc.beam
กราฟิก
ASurfaceControl
Android 10 เพิ่ม
ASurfaceControl ซึ่งเป็นวิธีใหม่สำหรับ
SurfaceFlinger ในการยอมรับบัฟเฟอร์
การใช้งานกราฟิก
เลเยอร์ OpenGL ES
Android 10 ขอแนะนำระบบเลเยอร์สำหรับ GLES
EGL 1.5
Android 10 ใช้อินเทอร์เฟซ EGL 1.5 ดูข้อมูลเกี่ยวกับฟีเจอร์ใหม่ใน EGL 1.5 ได้ที่ Khronos เผยแพร่ข้อมูลจำเพาะของ EGL 1.5
Vulkan
Android 10 รองรับกราฟิก Vulkan 1.1
นอกจากนี้ แพลตฟอร์มยังรองรับ VK_KHR_swapchain v70 ด้วย ดังนั้นแอป Vulkan จึงสร้าง VkImage ที่มีหน่วยความจำ Swapchain เป็นข้อมูลสำรองได้
อัตราการรีเฟรชประสิทธิภาพ
Android 10 เพิ่มการรองรับอัตราการรีเฟรชประสิทธิภาพ ฟีเจอร์นี้จะปิดอยู่โดยค่าเริ่มต้น
การโต้ตอบ
ยานยนต์
ระบบเสียงสำหรับยานยนต์
ใน Android 10 บริบทของ Audio HAL จะแมปกับ
AudioAttributes.usage เพื่อระบุเสียง Android รองรับAUDIO_DEVICE_OUT_BUSอินสแตนซ์เดียวต่อบริบท IAudioControl HAL มีส่วนขยายเฉพาะของยานพาหนะสำหรับ Audio HAL
การนำทางด้วยท่าทางสัมผัส
Android 10 เปิดตัวตัวเลือกการนำทางของระบบด้วยท่าทางสัมผัสอย่างเต็มรูปแบบ ดูข้อมูลเกี่ยวกับวิธีเตรียมแอปให้พร้อมใช้งานฟีเจอร์นี้ได้ที่หน้าการนำทางด้วยท่าทางสัมผัสในเว็บไซต์ของนักพัฒนาแอป Android
โครงข่ายประสาทเทียม
Android 10 เปิดตัวการอัปเดต Neural Networks API และ HAL ของโครงข่ายประสาท ดูสรุปการเปลี่ยนแปลงได้ที่โครงข่ายประสาทเทียม
เอกสารประกอบเกี่ยวกับโครงข่ายระบบประสาทเทียมใหม่และที่อัปเดตแล้วสำหรับ Android 10
- ภาพรวม
- AHardwareBuffer
- การดำเนินการแบบกลุ่มและคิวข้อความที่รวดเร็ว
- การแคชการคอมไพล์
- การค้นหาและการมอบหมายอุปกรณ์
- ส่วนขยายของผู้ให้บริการ
เซ็นเซอร์
HAL เซ็นเซอร์ 2.0
HAL 2.0 ของเซ็นเซอร์รองรับการใช้คิวข้อความด่วน (FMQ) เพื่อส่งเหตุการณ์เซ็นเซอร์ จาก HAL ไปยังเฟรมเวิร์กเซ็นเซอร์ของ Android
ปิดเซ็นเซอร์
Android 10 มีการตั้งค่าสำหรับนักพัฒนาแอปเพื่อปิดเซ็นเซอร์ทั้งหมดในอุปกรณ์ ฟีเจอร์นี้ ช่วยให้นักพัฒนาแอปทดสอบฟังก์ชันการทำงานของแอปในสถานการณ์ที่เซ็นเซอร์เหล่านั้น ไม่พร้อมใช้งาน และยังช่วยให้ผู้ใช้ควบคุมเซ็นเซอร์ ในอุปกรณ์ของตนได้ด้วย
หากอุปกรณ์ใช้การติดตั้งใช้งานเริ่มต้นของ SensorService,
CameraService และ AudioPolicyService คุณไม่จำเป็นต้องปรับแต่งเพิ่มเติม
ในการออกแบบอ้างอิง หากมีเซ็นเซอร์อื่นๆ โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับการรองรับฟีเจอร์นี้ในส่วนการปรับแต่ง
สื่อ
คอมโพเนนต์สื่อที่อัปเดตได้
Android 10 มีคอมโพเนนต์สื่อที่อัปเดตได้ซึ่งช่วยให้คอมโพเนนต์ของระบบโมดูลที่เกี่ยวข้องกับสื่ออัปเดตได้ผ่านโครงสร้างพื้นฐานของ Google Play Store หรือผ่านกลไกการอัปเดตผ่านอากาศ (OTA) ที่พาร์ทเนอร์จัดหาให้
Media DRM
Android 10 ปรับปรุงอรรถประโยชน์และการใช้งานของ MediaDrm Java และ NDK API
การถอดรหัส
Android 10 รองรับการถอดรหัส SW ของ AV1
สิทธิ์
Android 10 มีการกำหนดค่าสิทธิ์เพิ่มเติม เพื่อความโปร่งใสและความเป็นส่วนตัวของผู้ใช้
ผู้ให้บริการรายชื่อติดต่อและข้อมูลความสัมพันธ์
ตั้งแต่ Android 10 เป็นต้นไป ระบบจะเข้าถึงข้อมูลที่เกี่ยวข้องกับความสัมพันธ์ของรายชื่อติดต่อ ซึ่งจัดการโดยContacts Provider ในลักษณะที่แตกต่างจากใน Android 9 และเวอร์ชันที่ต่ำกว่า การเปลี่ยนแปลงเหล่านี้เกี่ยวกับความสามารถในการเข้าถึงข้อมูลจะช่วยปรับปรุงความเป็นส่วนตัวของผู้ใช้ในอุปกรณ์ Android 10 ทั้งหมดที่ใช้คอมโพเนนต์ Contacts Provider ฐานข้อมูลพื้นฐานไม่มีข้อมูลความสัมพันธ์กับผู้ติดต่ออีกต่อไป ดังนั้น แอปจึงเขียนหรืออ่านข้อมูลจากไดเรกทอรีนี้ไม่ได้
การเปลี่ยนแปลงใน Android 10 คาดว่าจะส่งผลกระทบอย่างมากต่อ API หากแอปของคุณใช้ฟีเจอร์ที่เลิกใช้งานแล้วซึ่งระบุไว้ใน ผู้ให้บริการรายชื่อติดต่อและข้อมูลความสัมพันธ์ คุณอาจต้องอัปเดตแอป เพื่อชดเชยการเปลี่ยนแปลง นอกจากนี้ หากคุณใช้ Contacts Provider เวอร์ชันแยก คุณต้องอัปเดต Contacts Provider
สิทธิ์เข้าถึงตำแหน่งแบบ 3 สถานะ
สิทธิ์เข้าถึงตำแหน่งแบบ 3 สถานะใน Android 10 ช่วยให้ผู้ใช้ควบคุมวิธีที่แอปเข้าถึงตำแหน่งของ อุปกรณ์ได้มากขึ้น
การช่วยเตือนเรื่องการเข้าถึงตำแหน่งในเบื้องหลัง
Android 10 มี การช่วยเตือนการเข้าถึงตำแหน่งขณะแอปทำงานในเบื้องหลัง ซึ่งจะเพิ่มความโปร่งใสเกี่ยวกับระดับการเข้าถึงตำแหน่งของอุปกรณ์ที่แอปมี และช่วยให้ผู้ใช้ควบคุมการเข้าถึงดังกล่าวได้
จำกัดสถานที่ตั้งที่อาจเป็นอันตราย
เมื่อแอปขอตำแหน่งของอุปกรณ์ แอปจะรอการตอบกลับคำขอหรือใช้เครื่องมือฟังตำแหน่งที่ใช้งานอยู่เพื่อรับการอัปเดตตำแหน่งแบบฉวยโอกาสก็ได้ ตั้งแต่ Android 10 เป็นต้นไป หากต้องการรับการอัปเดตตำแหน่งตามโอกาส นักพัฒนาแอปต้องระบุว่าตนต้องการการอัปเดตตำแหน่งแบบพาสซีฟจากคลาส
FusedLocationProviderClient
การเปิดแอปในเบื้องหลัง
ใน Android 10 แอปที่ไม่มีสิทธิ์และไม่มีหน้าต่างที่มองเห็นได้จะไม่สามารถเปิดตัวเองโดยอัตโนมัติในเบื้องหน้าได้ การเปลี่ยนแปลงนี้ จะระงับป๊อปอัปโฆษณาและการครอบครองที่เป็นอันตราย คุณไม่ต้องดำเนินการใดๆ เพื่อเปิดใช้ ฟีเจอร์นี้
แซนด์บ็อกซ์ของแอป
ใน Android 10 แอปจะมีมุมมองแบบดิบของระบบไฟล์แบบจำกัด โดยจะไม่มีสิทธิ์เข้าถึงเส้นทางโดยตรง เช่น /sdcard/DCIM อย่างไรก็ตาม แอปจะยังคงมีสิทธิ์เข้าถึงเส้นทางเฉพาะแพ็กเกจแบบดิบอย่างเต็มรูปแบบตามที่เมธอดที่เกี่ยวข้องส่งคืน เช่น Context.getExternalFilesDir()
แอปยังคงมีสิทธิ์เข้าถึงเส้นทางเฉพาะแพ็กเกจแบบดิบอย่างเต็มรูปแบบ
ใช้หลักเกณฑ์การแชร์ไฟล์ ของแซนด์บ็อกซ์ของแอป เพื่อระบุระดับการแชร์ข้อมูลที่เหมาะสม
จำกัดการเข้าถึงคลิปบอร์ดของแอป
ใน Android 10 มีการเปลี่ยนแปลงการเข้าถึงคลิปบอร์ดเพื่อไม่ให้
สามารถดูเนื้อหาในคลิปบอร์ดได้โดยการเรียก
ClipboardManager.getPrimaryClip
หรือโดยการเพิ่ม
onPrimaryClipChangedListener
Listener สำหรับการแจ้งเตือนเมื่อคลิปบอร์ดมีการเปลี่ยนแปลง ซึ่งจะช่วยเพิ่มความเป็นส่วนตัวของผู้ใช้
และปิดไม่ให้แอปมัลแวร์โฆษณาแก้ไขคลิปบอร์ด
ใน Android 10 ระบบจะอนุญาตสิทธิ์การเข้าถึงแบบอ่านเฉพาะ
แอปปัจจุบันที่มีโฟกัสอินพุตหรือแป้นพิมพ์ปัจจุบันเท่านั้น ตอนนี้การเรียกใช้ Listener ของ
ClipboardManager.onPrimaryClipChanged()
จะทริกเกอร์เฉพาะแอปที่เป็นไปตามข้อจำกัดดังกล่าวเท่านั้น
ClipboardManager.getPrimaryClip
และ ClipboardManager.getPrimaryClipDescription
จะแสดง null หากแอปที่ขอไม่ใช่โปรแกรมแก้ไขวิธีการป้อนข้อมูล (IME) เริ่มต้น
หรือไม่มีโฟกัสอินพุต
สิทธิ์รันไทม์รวมถึงการจดจำกิจกรรม
ตอนนี้ผู้ใช้จะเห็นกล่องโต้ตอบการจดจำกิจกรรมเมื่อแอปเข้าถึงตำแหน่งของอุปกรณ์ในเบื้องหลัง สิทธิ์รันไทม์ที่ถูกจำกัดอย่างเข้มงวดต้อง อยู่ในรายการที่อนุญาตอย่างถูกต้องใน Android 10
สิทธิ์ MANAGE_DEVICE_ADMINS
Android 10 เปลี่ยนสิทธิ์
MANAGE_DEVICE_ADMINS
จากลายเซ็นหรือสิทธิ์พิเศษเป็นลายเซ็นเท่านั้น ซึ่งหมายความว่ามีเพียงแอปที่แพลตฟอร์มลงนามเท่านั้นที่ตั้งค่าแอปอื่นเป็นผู้ดูแลระบบอุปกรณ์ได้
การปรับปรุง Sharing API
Android 10 มีฟีเจอร์ใหม่ของ Android Platform API ที่เกี่ยวข้องกับการแชร์หลายอย่าง หากคุณแก้ไขโค้ดชีตการแชร์ในการติดตั้งใช้งาน โปรดตรวจสอบว่าการติดตั้งใช้งานรองรับฟีเจอร์ใหม่เหล่านี้ หากไม่ได้แก้ไขโค้ดชีตการแชร์ในการติดตั้งใช้งาน คุณก็ไม่จำเป็นต้องดำเนินการใดๆ เพื่อรองรับฟีเจอร์ใหม่เหล่านี้
Android Runtime (ART)
การกำหนดค่าที่ลงชื่อ
ฟีเจอร์การกำหนดค่าที่ลงนามช่วยให้ ฝังการกำหนดค่าข้อจำกัดของอินเทอร์เฟซที่ไม่ใช่ SDK ใน APK ได้ ซึ่งจะช่วยให้ นำอินเทอร์เฟซที่ไม่ได้อยู่ใน SDK บางรายการออกจากบัญชีดำได้ เพื่อให้ AndroidX ใช้งานได้อย่างปลอดภัย การเปลี่ยนแปลงนี้จะช่วยให้ AndroidX รองรับฟีเจอร์ใหม่ๆ ใน Android เวอร์ชันเก่าได้
ประสิทธิภาพ
เลเยอร์แอบสแตรกชัน Cgroup
Android 10 มีเลเยอร์การแยก cgroup และโปรไฟล์งาน ซึ่งนักพัฒนาแอปสามารถใช้เพื่ออธิบายชุดข้อจำกัดที่จะใช้กับเธรดหรือกระบวนการได้
Low Memory Killer Daemon (lmkd)
Android 10 รองรับlmkdโหมดใหม่ที่ใช้การตรวจสอบข้อมูลการหยุดชะงักเนื่องจากแรงดันเคอร์เนล (PSI)
เพื่อตรวจหาแรงดันหน่วยความจำ
กำลัง
การจัดการพลังงานของแพลตฟอร์ม
ใน Android 10 โหมดพักเครื่อง จะเปิดใช้ได้ในอุปกรณ์ที่เปิดอยู่ตลอดเวลาและอุปกรณ์ที่ใช้พลังงานจากแบตเตอรี่
โหมดประหยัดแบตเตอรี่ตามกิจวัตร
Android 10 มีตัวเลือกกำหนดเวลาโหมดประหยัดแบตเตอรี่ใหม่ ที่เรียกว่าอิงตามกิจวัตร โหมดประหยัดแบตเตอรี่ตามกิจวัตรช่วยให้แอปที่ OEM เลือกส่งสัญญาณไปยังระบบเพื่อกำหนดเวลาโหมดประหยัดแบตเตอรี่ได้อย่างชาญฉลาดมากขึ้น ตัวเลือกนี้ต้องมีการกำหนดค่าและเป็นตัวเลือกที่ไม่บังคับ ในการใช้งาน
HAL สถิติการใช้พลังงาน
ใน Android 10
IPowerStats.hal
จะแทนที่ API การรวบรวมสถิติการใช้พลังงานใน
IPower.hal
แม้ว่า HAL ของ Power จะยังรองรับ API อยู่ แต่เราจะย้ายข้อมูล API เหล่านี้ไปยัง HAL ของสถิติการใช้พลังงานโดยเฉพาะในอนาคต
HAL สถิติการใช้พลังงานมี API ใหม่เพื่อรองรับการรวบรวมข้อมูลจาก การวัดการใช้พลังงานในอุปกรณ์สำหรับอุปกรณ์ที่รองรับ นอกจากนี้ เรายังอัปเดต API การรวบรวมสถิติการใช้พลังงานที่มีอยู่เพื่อเพิ่มความยืดหยุ่นด้วย API คำแนะนำด้านพลังงาน ยังคงอยู่ใน HAL พลังงานและไม่มีการเปลี่ยนแปลง
การลดความร้อน
เฟรมเวิร์กความร้อนใน Android 10 จะแยกอินเทอร์เฟซของอุปกรณ์ สำหรับเซ็นเซอร์อุณหภูมิของระบบย่อยความร้อน ซึ่งรวมถึง CPU, GPU, แบตเตอรี่, ผิวหนัง และอุปกรณ์ระบายความร้อน เฟรมเวิร์กนี้มีอินเทอร์เฟซการสำรวจ เพื่อค้นหาสถานะความร้อนเพื่อเริ่มการควบคุมปริมาณ และอินเทอร์เฟซ Callback เพื่อ ส่งข้อความถึงผู้ใช้เมื่อเกินขีดจำกัด
Android 10 มีข้อมูลประเภทใหม่ผ่านอินเทอร์เฟซ
IThermalService โดยใช้วิธีการใหม่ 3 วิธีต่อไปนี้
getCurrentThermalStatus()แสดงผลสถานะความร้อนปัจจุบันของอุปกรณ์เป็นจำนวนเต็ม เว้นแต่ อุปกรณ์จะอยู่ระหว่างการควบคุมปริมาณการใช้งานaddThermalStatusListener()เพิ่ม ListenerremoveThermalStatusListener()นำผู้ฟังที่เพิ่มไว้ก่อนหน้านี้ออก
แอปจะเพิ่มและนำ Listener ออก รวมถึงเข้าถึงสถานะอุณหภูมิในคลาส
PowerManager
เฉพาะบริการระบบที่เชื่อถือได้ เช่น Android API หรือ API ของผู้ผลิตอุปกรณ์
เท่านั้นที่จะเข้าถึงข้อมูลเกี่ยวกับเหตุการณ์เชิงสาเหตุที่เชื่อมโยงได้ ผู้ผลิตอุปกรณ์
หรือผู้ผลิต SoC ต้องใช้ thermal HAL 2.0 เพื่อเปิดใช้ฟังก์ชันการทำงานทั้งหมด
ของเฟรมเวิร์กการระบายความร้อนใหม่
ดูตัวอย่างการติดตั้งใช้งานการลดความร้อนได้ที่การติดตั้งใช้งานอ้างอิง
อัปเดต
รูปแบบไฟล์ APEX
Android Pony EXpress (APEX) เป็นรูปแบบคอนเทนเนอร์ใหม่ ที่ใช้ในขั้นตอนการติดตั้งสำหรับคอมโพเนนต์ระบบแบบแยกส่วน
พาร์ติชันแบบไดนามิก
พาร์ติชันแบบไดนามิกจะนำระบบการแบ่งพาร์ติชันใน
พื้นที่ผู้ใช้มาใช้ใน Android ซึ่งช่วยให้สร้าง
ปรับขนาด หรือทำลายพาร์ติชันได้ในระหว่างการอัปเดต OTA ผู้ผลิตอุปกรณ์ไม่ต้องกังวล
เกี่ยวกับขนาดของพาร์ติชันแต่ละรายการ เช่น system, vendor และ
product แต่จะมีการจัดสรรsuperพาร์ติชันขนาดใหญ่ 1 พาร์ติชัน และสามารถปรับขนาดพาร์ติชันย่อยแบบไดนามิกภายในพาร์ติชันนั้นได้
การอัปเดตระบบแบบไดนามิก
การอัปเดตระบบแบบไดนามิก (DSU) ช่วยให้คุณสร้างอิมเมจระบบ Android ที่ผู้ใช้ดาวน์โหลดจากอินเทอร์เน็ตได้ และทดลองใช้โดยไม่ต้องเสี่ยงต่อการทำให้อิมเมจระบบปัจจุบันเสียหาย
การสำรองและกู้คืนข้อมูลแบบหลายผู้ใช้
Android 10 รองรับฟังก์ชันการสำรองและกู้คืน สำหรับผู้ใช้ทุกคนในอุปกรณ์ ก่อนหน้านี้การสำรองและกู้คืนข้อมูล ใช้ได้เฉพาะผู้ใช้ระบบเท่านั้น การสำรองและกู้คืนข้อมูลสำหรับผู้ใช้ที่ไม่ใช่ระบบจะ ปิดอยู่โดยค่าเริ่มต้นเนื่องจากครอบคลุมเฉพาะบางส่วนสำหรับการตั้งค่า วอลเปเปอร์ และคอมโพเนนต์ของระบบ
Overlayfs
ผู้ใช้ที่ใช้บิลด์ userdebug หรือ eng คาดหวังว่าจะสามารถ
เมานต์พาร์ติชันระบบใหม่เป็นแบบอ่าน-เขียนได้อย่างมีประสิทธิภาพ
แล้วเพิ่มหรือแก้ไขไฟล์จำนวนเท่าใดก็ได้โดยไม่ต้องแฟลชอิมเมจระบบใหม่ คุณใช้ Overlayfs ได้ ซึ่งจะ
ตั้งค่าพื้นที่เก็บข้อมูลสำรองสำหรับระบบไฟล์ที่เขียนได้โดยอัตโนมัติเป็น
การอ้างอิงระดับบน และเมานต์ทับระดับล่าง การดำเนินการเหล่านี้เกิดขึ้นในคำขอ adb disable-verity และ adb remount ดูรายละเอียดเพิ่มเติมได้ที่
README ของ Overlayfs
ใน AOSP
การรองรับคลังที่ใช้ร่วมกันในโหมดการกู้คืน
ใน Android 10 ไลบรารีที่ใช้ร่วมกันจะอยู่ใน
พาร์ติชันการกู้คืน ซึ่งช่วยให้ไม่ต้องใช้ไฟล์ปฏิบัติการทั้งหมดในโหมดการกู้คืน
แบบคงที่ ไลบรารีที่ใช้ร่วมกันจะอยู่ในไดเรกทอรี
/system/lib (หรือ /system/lib64 สำหรับอุปกรณ์ 64 บิต) ในพาร์ติชัน
หากต้องการเพิ่มไลบรารีที่ใช้ร่วมกันใหม่ลงในพาร์ติชันการกู้คืน ให้เพิ่ม
recovery_available: true หรือ recovery: true ลงใน Android.bp ของไลบรารีที่ใช้ร่วมกัน
โดยตัวเลือกแรกจะติดตั้งไลบรารีทั้งในพาร์ติชันระบบและพาร์ติชันการกู้คืน
ส่วนตัวเลือกหลังจะติดตั้งเฉพาะในพาร์ติชันการกู้คืน
ระบบบิลด์ที่ใช้ Make ของ Android ไม่สามารถสร้างการรองรับไลบรารีที่ใช้ร่วมกันได้
หากต้องการแปลงไฟล์ปฏิบัติการแบบคงที่ที่มีอยู่สำหรับโหมดการกู้คืนเป็นแบบไดนามิก
ให้นำ LOCAL_FORCE_STATIC_EXECUTABLE := true ใน Android.mk หรือ
static_executable: true (ใน Android.bp) ออก
จุดตรวจสอบข้อมูลผู้ใช้ (UDC)
Android 10 ขอแนะนำฟีเจอร์จุดตรวจสอบข้อมูลผู้ใช้ (UDC) ซึ่งช่วยให้ Android กลับไปสู่สถานะก่อนหน้าได้เมื่อการอัปเดต Android แบบ Over-The-Air (OTA) ล้มเหลว