หน้านี้สรุปฟีเจอร์หลักๆ ในรุ่น 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
ที่รับผิดชอบในการเริ่มต้นการระงับระบบด้วยบริการ HIDL ของ SystemSuspend
การ
ติดตั้งใช้งานนี้มีฟังก์ชันการทำงานเทียบเท่ากับเวอร์ชันก่อนหน้า ขณะเดียวกันก็
ใช้ประโยชน์จากโครงสร้างพื้นฐาน 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 แทนที่ DeviceTree blob สำหรับการซ้อนทับ (DTBO)
AIDL ที่เสถียร
Android 10 เพิ่มการรองรับ ภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL) ที่เสถียร ซึ่งเป็นวิธีใหม่ในการติดตาม Application Program Interface (API)/Application Binary Interface (ABI) ที่อินเทอร์เฟซ AIDL จัดเตรียมไว้ให้
ย้าย fastboot ไปยังพื้นที่ผู้ใช้
Android 10 เพิ่มการรองรับพาร์ติชันที่ปรับขนาดได้โดย ย้ายการใช้งาน fastboot จาก โปรแกรมโหลดระบบไปยังพื้นที่ผู้ใช้
จอแสดงผล
การเล่นวิดีโอ 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 ซึ่งกิจกรรมที่สังเคราะห์ขึ้นนี้แสดงถึงหน้ารายละเอียดของแอปในการตั้งค่าระบบ
ดูข้อมูลเพิ่มเติมเกี่ยวกับตรรกะที่ใช้ในการแสดงไอคอนแอป รวมถึงประเภท
ของแอปที่ไม่ได้แสดงไอคอนแอปได้ที่เอกสารประกอบสำหรับ
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
ในโครงสร้างแบบโอเพนซอร์สได้
CTS Shim APEX
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
Android 10 เพิ่มการทดสอบ CTS Verifier สำหรับการปฏิบัติตามข้อกำหนดของ Pro Audio
การทดสอบ MIDI ของโปรแกรมตรวจสอบ CTS
ใน Android 10 การทดสอบ MIDI ของ CTS Verifier จะทดสอบฟังก์ชัน MIDI ด้วยอินเทอร์เฟซ MIDI ของ USB, อินเทอร์เฟซ MIDI ของบลูทูธ และเส้นทาง อุปกรณ์ MIDI เสมือน
การตีความการทดสอบ CTS
Android 10 อัปเดตกลไกสำหรับการตีความผลลัพธ์ของ CTS
ชุดทดสอบของผู้ให้บริการ (VTS)
การทดสอบ VTS ด้วย ramdisk สำหรับการแก้ไขข้อบกพร่อง
ใน Android 10 อิมเมจระบบทั่วไป (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 เปิดใช้ในตัวแปลงรหัสต่อไปนี้
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
libaac
libxaac
การล้างข้อมูลการล้นจำนวนเต็ม
Android 10 เปิดใช้ การล้างข้อมูลการล้นจำนวนเต็ม (IntSan) ใน ตัวแปลงรหัสซอฟต์แวร์ ตรวจสอบว่าประสิทธิภาพการเล่นเป็นที่ยอมรับสำหรับตัวแปลงรหัส ที่ฮาร์ดแวร์ของอุปกรณ์ไม่รองรับ IntSan เปิดใช้ในตัวแปลงรหัสต่อไปนี้
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
หน่วยความจำแบบดำเนินการเท่านั้น
โดยค่าเริ่มต้น ระบบจะทำเครื่องหมายส่วนโค้ดที่เรียกใช้งานได้สำหรับไบนารีของระบบ 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 ของเสียง
AudioSource
AudioFormat
AudioChannelMask
เพิ่มข้อกำหนดเพิ่มเติมสำหรับการใช้งาน 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
ไลบรารีนี้คล้ายกับ
ไลบรารี 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.CreateBeamUrisCallback
NfcAdapter.CreateNdefMessageCallback
NfcAdapter.OnNdefPushCompleteCallback
วิธีการ
createBeamUris
invokeBeam
isNdefPushEnabled
setBeamPushUris
setBeamPushUrisCallback
setNdefPushMessage
setNdefPushMessageCallback
setOnNdefPushCompleteCallback
createNdefMessageCallback
onNdefPushCompleteCallback
หากต้องการใช้ 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 และ Neural Networks 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 เป็นต้นไป ระบบจะเข้าถึงข้อมูลที่เกี่ยวข้องกับความสัมพันธ์ของรายชื่อติดต่อ ซึ่งจัดการโดยคอมโพเนนต์ผู้ให้บริการรายชื่อติดต่อ ในลักษณะที่แตกต่างจากใน 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 ระบบจะอนุญาตสิทธิ์การเข้าถึงแบบอ่านเฉพาะ
แอปปัจจุบันที่มีโฟกัสอินพุตหรือแป้นพิมพ์ปัจจุบันเท่านั้น ตอนนี้การเรียกใช้
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, แบตเตอรี่, ผิวหนัง และอุปกรณ์ระบายความร้อน เฟรมเวิร์กนี้มีอินเทอร์เฟซการสำรวจ เพื่อค้นหาสถานะความร้อนเพื่อเริ่มการควบคุมปริมาณ และอินเทอร์เฟซการเรียกกลับเพื่อ ส่งข้อความถึงผู้ใช้เมื่อเกินขีดจำกัด
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) ล้มเหลว