บันทึกประจำรุ่นของ Android 10

หน้านี้จะสรุปฟีเจอร์หลักในรุ่น Android 10 และมีลิงก์ไปยังข้อมูลเพิ่มเติม ข้อมูลสรุปฟีเจอร์เหล่านี้จัดระเบียบตามตำแหน่งเอกสารประกอบของฟีเจอร์ในเว็บไซต์นี้

สร้าง

java_sdk_library

Android 10 เปิดตัว java_sdk_library ซึ่งเป็นกฎการสร้างใหม่เพื่อแก้ไขปัญหาความเข้ากันได้ของไลบรารี Java ที่แชร์ ผู้ผลิตอุปกรณ์สามารถใช้กลไกนี้กับไลบรารี Java ที่แชร์ของตนเองเพื่อรักษาความเข้ากันได้แบบย้อนหลังสำหรับ API ของตน

สถาปัตยกรรม

คอมโพเนนต์ของระบบแบบโมดูล

Android 10 ทำให้คอมโพเนนต์บางอย่างของระบบ Android เป็นโมดูลและทำให้อัปเดตคอมโพเนนต์เหล่านั้นได้นอกรอบการเผยแพร่ปกติของ Android ตัวอย่างข้อบังคับบางส่วน ได้แก่

เลเยอร์การจัดการฮาร์ดแวร์โดยตรง (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 ในแรมดิสก์ระยะที่ 1

HIDL

ย้ายข้อมูล 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

การกำหนดค่า

HAL ของ ConfigStore

Android 10 เลิกใช้งาน ConfigStore HAL เนื่องจากมีการใช้หน่วยความจำสูงและใช้งานยาก และแทนที่ HAL ด้วยพร็อพเพอร์ตี้ของระบบ

Config File Schema 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) ปรับแต่งแพ็กเกจการสนับสนุนบอร์ดสําหรับผู้จำหน่ายระบบวงจรรวมบนชิป (SoC) ให้เหมาะกับอุปกรณ์ที่เฉพาะเจาะจง (บอร์ดสําหรับอุปกรณ์ของตน) ได้ โดยสามารถติดตั้งใช้งานโมดูลเคอร์เนลสำหรับคอมโพเนนต์เฉพาะบอร์ดและเดอมอนเฉพาะบอร์ด หรือฟีเจอร์ของตนเองในเลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) และอาจเปลี่ยนหรือปรับแต่งคอมโพเนนต์ SoC ด้วย

การกำหนดเวอร์ชันส่วนหัวของอิมเมจบูท

Android 10 จะอัปเดตส่วนหัวของภาพการบูตเป็นเวอร์ชัน 2 ซึ่งจะมีส่วนสำหรับจัดเก็บบล็อก Device Tree (DTB) การทดสอบ VTS ของ Android 10 จะยืนยันว่าอุปกรณ์ทั้งหมดที่เปิดตัวด้วย Android 10 ใช้ส่วนหัวของอิมเมจบูตเวอร์ชัน 2 และมีอิมเมจ DTB ที่ถูกต้องเป็นส่วนหนึ่งของอิมเมจการบูต/การกู้คืน

รูปภาพการกู้คืนสำหรับอุปกรณ์ที่ไม่ใช่ A/B

ใน Android 9 ขึ้นไป อิมเมจการกู้คืนของอุปกรณ์ต้องมีข้อมูลจากรูปภาพที่วางซ้อน ผู้ผลิตอุปกรณ์สามารถใช้ DeviceTree หรือ Advanced Configuration and Power (ACPI) เพื่ออธิบายอุปกรณ์ที่ตรวจไม่พบทั้งหมด Android 10 ขึ้นไปรองรับสถาปัตยกรรมที่ใช้ ACPI แทน Blob ของ DeviceTree สําหรับการวางซ้อน (DTBO)

AIDL เวอร์ชันเสถียร

Android 10 เพิ่มการรองรับภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL) เวอร์ชันเสถียร ซึ่งเป็นวิธีใหม่ในการติดตาม Application Programming 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 และ Zawgyi คุณไม่ต้องดำเนินการใดๆ เพื่อรองรับการแสดงผลแบบฟอนต์ Zawgyi ในอุปกรณ์ที่เปิดตัวด้วย Android 10 หากอุปกรณ์มีการใช้งานแบบกำหนดเองเพื่อรองรับ Zawgyi คุณจะทำสิ่งต่อไปนี้ได้

  • เปลี่ยนกลับการเปลี่ยนแปลงเหล่านั้นและใช้วิธีการที่แพลตฟอร์มรองรับ
  • เก็บแบบอักษร Zawgyi ทั่วไปไว้ในระบบและใช้รหัสภาษา my-qaag ใน fonts.xml ดูข้อมูลเพิ่มเติมได้ที่บันทึกประจำรุ่น Unicode CLDR สำหรับ Zawgyi (Qaag)

ข้อจำกัดในการซ่อนไอคอนแอป

Android 10 จำกัดความสามารถของแอปในการซ่อนไอคอนตัวเปิด หากแอปไม่ได้เปิดใช้กิจกรรมใน Launcher ระบบจะแสดงกิจกรรมที่สังเคราะห์ใน Launcher ซึ่งแสดงหน้ารายละเอียดของแอปในการตั้งค่าระบบ

ดูข้อมูลเพิ่มเติมเกี่ยวกับตรรกะที่ใช้แสดงไอคอนแอป รวมถึงประเภทแอปที่ระบบไม่แสดงไอคอนได้ที่เอกสารประกอบของ getActivityList() ในข้อมูลอ้างอิง API

การตั้งค่า

Android 10 มีการตั้งค่าการหมดเวลาที่กำหนดเองได้ของผู้ใช้เพื่อปรับปรุงการช่วยเหลือพิเศษ การเปลี่ยนแปลง API และการตั้งค่ามาพร้อมกับ Android 10 หากคุณปรับแต่งการตั้งค่า โปรดตรวจสอบว่าอุปกรณ์รองรับฟีเจอร์นี้ หากคุณมีองค์ประกอบ UI ที่หมดเวลาในอุปกรณ์ ให้ใช้ timeouts API กับองค์ประกอบเหล่านั้น ดูข้อมูลเพิ่มเติมได้ที่หลักเกณฑ์การช่วยเหลือพิเศษสำหรับนักพัฒนาแอป Android

ความเข้ากันได้

เอกสารนิยามความเข้ากันได้ของ Android (CDD)

เอกสารคำจำกัดความความเข้ากันได้ของ Android 10 ปรับปรุงจากเวอร์ชันก่อนหน้าด้วยข้อมูลอัปเดตเกี่ยวกับฟีเจอร์ใหม่และการเปลี่ยนแปลงข้อกำหนดสำหรับฟังก์ชันการทำงานที่เผยแพร่ไปก่อนหน้านี้

การทดสอบ

ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS)

Android CTS มีหน้าบันทึกประจำรุ่นแยกต่างหากซึ่งแสดงการเปลี่ยนแปลงที่สำคัญมากมายสำหรับ Android 10

การดาวน์โหลด CTS

แพ็กเกจ CTS ที่รองรับ Android 10 มีอยู่ในหน้าการดาวน์โหลด CTS คุณซิงค์ซอร์สโค้ดสําหรับการทดสอบที่รวมไว้กับแท็ก android-cts-10_r1 ในทรีโอเพนซอร์สได้

ชิม CTS APEX

Android 10 เปิดตัวแพ็กเกจชื่อ CtsShimApex ซึ่งต้องติดตั้งในอุปกรณ์ล่วงหน้าเพื่อเขียนการทดสอบ CTS สำหรับการจัดการ APEX

โหมดโปรแกรมทดสอบอัตโนมัติ

โหมดชุดทดสอบ CTS ช่วยให้นักพัฒนาแอปทำการทดสอบอุปกรณ์หรือกลุ่มอุปกรณ์แบบอัตโนมัติได้

โหมด Instant Apps

ตั้งแต่ Android 10 เป็นต้นไป CTS จะทำงานในโหมด Instant App ซึ่งหมายความว่าจะติดตั้ง APK ทดสอบเป็น Instant App และทำการทดสอบ

นอกจากโหมด CTS สำหรับ Instant App แล้ว Android 10 ยังมีโปรแกรมตรวจสอบ CTS สำหรับ Instant App ด้วย

การทดสอบเสียงด้วย CTS Verifier Pro

Android 10 เพิ่มการทดสอบ CTS Verifier สำหรับการปฏิบัติตามข้อกำหนดของ Pro Audio

การทดสอบ MIDI ของโปรแกรมตรวจสอบ CTS

ใน Android 10 การทดสอบ MIDI ของโปรแกรมตรวจสอบ CTS จะทดสอบฟังก์ชัน MIDI ด้วยอินเทอร์เฟซ MIDI ผ่าน USB, อินเทอร์เฟซ MIDI ผ่านบลูทูธ และเส้นทางอุปกรณ์ MIDI เสมือน

การตีความการทดสอบ CTS

Android 10 อัปเดตกลไกการตีความผลลัพธ์ CTS

ชุดทดสอบของผู้ให้บริการ (VTS)

การทดสอบ VTS ด้วย RAMdisk สำหรับการแก้ไขข้อบกพร่อง

ใน Android 10 รูปภาพระบบทั่วไป (GSI) ที่ใช้ในการเรียกใช้การทดสอบการปฏิบัติตามข้อกำหนด CTS-on-GSI/VTS จะเปลี่ยนจากประเภท userdebug เป็นประเภทบิลด์ผู้ใช้ เนื่องจาก GSI ได้รับการรับรองรุ่น อย่างไรก็ตาม คำสั่ง adb root ที่ให้สิทธิ์รูทของโฮสต์แก่อุปกรณ์ Android ที่ใช้ทดสอบจะใช้ไม่ได้ในบิลด์ของผู้ใช้ ซึ่งทำให้เกิดปัญหาเนื่องจาก VTS ต้องใช้ adb root จึงจะทำงานได้

Ramdisk การแก้ไขข้อบกพร่องมีไว้เพื่อให้adb rootเป็นไปได้ หากอุปกรณ์ปลดล็อกอยู่ วิธีนี้ช่วยให้ขั้นตอนการทดสอบง่ายขึ้นด้วยการใช้บิลด์ผู้ใช้ system.img เดียวกันซ้ำ (ของ GSI หรือ system.img ของ OEM)

การตรวจสอบ Hardware Composer

Android 10 เพิ่มคลาสการทดสอบ VTS ใหม่สำหรับฮาร์ดแวร์เพื่อตรวจสอบความถูกต้องของคอมโพเซอร์ผ่านอินเทอร์เฟซ readback ใน IComposerClient.hal หากผู้ให้บริการไม่ได้ติดตั้งใช้งาน readback การทดสอบจะผ่านโดยอัตโนมัติ

การแก้ไขข้อบกพร่อง

โหลดไลบรารีที่ใช้ร่วมกันด้วยตัวโหลดคลาสอื่น

ใน Android 9 และต่ำกว่า แอปจะโหลดไลบรารี Java ที่แชร์ซึ่งลิงก์ไว้ในโปรแกรมโหลดคลาสของแอป ใน Android 10 เฟรมเวิร์กจะใช้ตัวโหลดคลาสที่แตกต่างจากตัวโหลดคลาสของแอปเพื่อโหลดไลบรารี Java ที่แชร์ซึ่งลิงก์ผ่าน uses-library หรือ uses-static-library

โดยทั่วไปแล้ว แอปไม่ควรใช้ Class Loader ที่เจาะจง ดังนั้นการเปลี่ยนแปลงนี้จึงไม่น่าจะส่งผลต่อลักษณะการทํางานของแอป อย่างไรก็ตาม หากแอปใช้ตัวโหลดคลาสเดียว ลักษณะการทำงานดังกล่าวจะใช้งานไม่ได้ นอกจากนี้ ระบบยังคงรองรับระดับการเข้าถึงระดับแพ็กเกจของคลาสในแพ็กเกจเดียวกัน แต่จะไม่รองรับในไลบรารีที่ใช้ร่วมกัน

ผู้ผลิตอุปกรณ์อาจพบปัญหาความเข้ากันได้ของแอปขณะทดสอบอุปกรณ์ที่ใช้ Android 10

ฟีเจอร์การรักษาความปลอดภัย

ดูรายการการปรับปรุงทั้งหมดที่เกี่ยวข้องกับความปลอดภัยและความเป็นส่วนตัวได้ที่หน้าการปรับปรุงด้านความปลอดภัยและความเป็นส่วนตัวของ Android 10

ตรวจสิทธิ์ด้วยใบหน้า

การตรวจสอบสิทธิ์ด้วยใบหน้าช่วยให้ผู้ใช้ปลดล็อกอุปกรณ์ได้ง่ายๆ เพียงมองไปที่ด้านหน้าของอุปกรณ์ Android 10 เพิ่มการรองรับสแต็กการตรวจสอบใบหน้าแบบใหม่ที่ประมวลผลเฟรมกล้องได้อย่างปลอดภัย เพื่อรักษาความปลอดภัยและความเป็นส่วนตัวในระหว่างการตรวจสอบใบหน้าในฮาร์ดแวร์ที่รองรับ นอกจากนี้ Android 10 ยังมีวิธีง่ายๆ ในการติดตั้งใช้งานที่เป็นไปตามข้อกำหนดด้านความปลอดภัยเพื่อเปิดใช้การผสานรวมแอปสำหรับธุรกรรมต่างๆ เช่น การธนาคารออนไลน์หรือบริการอื่นๆ

การเข้าถึงเพิ่มเติม

เอเจนต์ความน่าเชื่อถือ ซึ่งเป็นกลไกพื้นฐานที่กลไกการตรวจสอบสิทธิ์ระดับ 3 เช่น 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 จะมีการทำเครื่องหมายเป็น "เรียกใช้ได้อย่างเดียว" (อ่านไม่ได้) เพื่อลดความเสี่ยงจากการโจมตีด้วยโค้ดแบบทันท่วงที โค้ดที่ผสมข้อมูลและโค้ดเข้าด้วยกันและโค้ดที่ตรวจสอบส่วนเหล่านี้โดยเจตนา (โดยไม่แมปกลุ่มหน่วยความจำใหม่เป็น "อ่านได้" ก่อน) จะใช้งานไม่ได้อีกต่อไป แอปที่มี SDK เป้าหมายเป็น Android 10 (API ระดับ 29 ขึ้นไป) จะได้รับผลกระทบหากแอปพยายามอ่านส่วนโค้ดของไลบรารีระบบที่เปิดใช้หน่วยความจำแบบเรียกใช้ได้อย่างเดียว (XOM) ในหน่วยความจำโดยไม่ทำเครื่องหมายส่วนดังกล่าวว่าอ่านได้ก่อน

Scudo

Scudo เป็นตัวจัดสรรหน่วยความจำแบบไดนามิกในโหมดผู้ใช้ที่ออกแบบมาให้มีความยืดหยุ่นมากขึ้นต่อช่องโหว่ที่เกี่ยวข้องกับกอง โดยจะมีการจัดสรรและการยกเลิกการจัดสรรแบบพื้นฐานของ C มาตรฐาน รวมถึงแบบพื้นฐานของ C++

ShadowCallStack

ShadowCallStack (SCS) เป็นโหมดเครื่องมือวัด LLVM ที่ป้องกันการเขียนทับที่อยู่สำหรับส่งคืน (เช่น การเขียนทับบัฟเฟอร์สแต็ก) ด้วยการบันทึกที่อยู่สำหรับส่งคืนของฟังก์ชันลงในอินสแตนซ์ ShadowCallStack ที่จัดสรรแยกต่างหากในส่วนนำหน้าของฟังก์ชันของฟังก์ชันที่ไม่ใช่ฟังก์ชันย่อย และโหลดที่อยู่สำหรับส่งคืนจากอินสแตนซ์ ShadowCallStack ในส่วนปิดท้ายของฟังก์ชัน

เสียง

HAL เสียง

Android 10 มีความสามารถใหม่ต่อไปนี้สำหรับ HAL เสียง

  • AudioSource
  • AudioFormat
  • AudioChannelMask

เพิ่มข้อกำหนดเพิ่มเติมสำหรับการใช้งาน HAL และระบบย่อยของเสียง

เอฟเฟกต์การประมวลผลข้อมูลล่วงหน้า

Android มีเอฟเฟกต์การประมวลผลก่อนการแปลงสัญญาณ เช่น การตัดเสียงก้อง การควบคุมสัญญาณที่ได้รับอัตโนมัติ และการลดเสียงรบกวน Android 10 มีข้อกำหนดใหม่สำหรับการจับภาพด้วย VOICE_COMMUNICATION

ตัวจัดการนโยบายเสียง

Android 10 มีการรีแฟกทอริงที่สำคัญของเครื่องมือจัดการนโยบายเสียงเพื่อให้มีความยืดหยุ่นมากขึ้นเพื่อรองรับ Use Case ที่ซับซ้อนของยานยนต์

เสียงความละเอียดสูง

Android 10 มีการปรับปรุงต่อไปนี้สำหรับเสียงความละเอียดสูง

  • การรองรับการลอยตัว
  • การรองรับความถี่ 192 KHz
  • รองรับ 8 ช่องสัญญาณ
  • การระบุข้อมูลเวลา

การจับภาพพร้อมกัน

Android 10 ปรับปรุงประสบการณ์ของผู้ใช้การบันทึกพร้อมกันซึ่งต้องมีการบันทึกเสียงที่ใช้งานอยู่มากกว่า 1 รายการพร้อมกัน

AudioPlaybackCapture

Android 10 มี API ใหม่ที่ชื่อว่า AudioPlaybackCapture ซึ่งช่วยให้แอปคัดลอกเสียงที่แอปอื่นๆ เล่นอยู่ได้ ฟีเจอร์นี้คล้ายกับการจับภาพหน้าจอ แต่ใช้กับเสียง กรณีการใช้งานหลักคือช่วยให้แอปสตรีมมิงบันทึกเสียงที่เกมเล่นได้

Capture API จะไม่ส่งผลต่อเวลาในการตอบสนองของแอปที่กำลังบันทึกเสียง

MIDI

Android 10 ช่วยให้พอร์ตแอปเสียงระดับมืออาชีพที่ใช้ MIDI ไปยังแพลตฟอร์ม Android ได้ง่ายขึ้นโดยใช้ AMidi NDK API

กล้อง

ดูสรุปการเปลี่ยนแปลงของ Camera API, HAL ของกล้อง และโมดูลกล้องที่เปิดตัวใน Android 10 ได้ที่การอัปเดตกล้องใน Android 10

การปรับปรุงความเป็นส่วนตัวของเฟรมเวิร์กกล้อง

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

หากต้องการดูรายการคีย์ลักษณะของกล้องที่ต้องใช้สิทธิ์ CAMERA ให้เรียกใช้เมธอด getKeysNeedingPermission

การค้นหาการกําหนดค่าเซสชันใหม่

Android 10 เพิ่มฟีเจอร์การค้นหาการกําหนดค่าเซสชันใหม่ ซึ่งช่วยปรับปรุงประสิทธิภาพด้วยการควบคุมตรรกะการกําหนดค่าพารามิเตอร์เซสชันภายในใหม่ได้มากขึ้น

API การจัดการบัฟเฟอร์ของ Camera 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 การโทรแบบกลุ่มเป็นส่วนขยายของ eMBMS API ที่เพิ่มเข้ามาใน Android 9 API ใหม่จะกำหนดมาตรฐานสำหรับแอปในการเข้าร่วมและออกอากาศในการโทรแบบกลุ่มผ่านระบบการออกอากาศผ่านเครือข่ายมือถือ (Cell Broadcast) โดยการโต้ตอบกับแพ็กเกจมิดเดิลแวร์ eMBMS การโทรแบบกลุ่มต้องได้รับการสนับสนุนจากผู้ให้บริการชิปเซ็ต ผู้ให้บริการมิดเดิลแวร์ และผู้ให้บริการเครือข่ายมือถือจึงจะทำงานได้อย่างถูกต้อง เอกสารประกอบสําหรับนักพัฒนาแอปมีอยู่ที่ developer.google.com

ความสามารถของซิมระยะไกล

Android 10 เปิดตัวความสามารถของซิมระยะไกลที่อนุญาตให้แอปรับส่งข้อความในอุปกรณ์โฮสต์ Android ส่งข้อความ SMS ผ่านโทรศัพท์โดยใช้กลไกต่างๆ เช่น บลูทูธ ดูข้อมูลเพิ่มเติมได้ที่เอกสารอ้างอิงสำหรับเมธอด getSubscriptionType และค่าคงที่ SUBSCRIPTION_TYPE_REMOTE_SIM

eSIM หลายรายการ

ใน Android 10 คลาส EuiccManager รองรับอุปกรณ์ที่มีSIM แบบฝังหลายตัว (eSIM) หรือ eUICC

ข้อมูลอัปเดต eSIM

สำหรับอุปกรณ์ที่ใช้ Android 10 ที่รองรับ eSIM คุณต้องกำหนดอาร์เรย์รหัสช่อง eUICC ที่ไม่สามารถนำออกได้ นอกจากนี้ อุปกรณ์ต้องรองรับ IRadio HAL v1.4 และ IRadioConfig HAL v1.2 ด้วย ดูข้อมูลเพิ่มเติมได้ที่การติดตั้งใช้งาน eSIM และข้อกำหนด HAL

5G แบบไม่สแตนด์อโลน (NSA)

Android 10 เพิ่มการรองรับ 5G แบบไม่สแตนด์อโลน (NSA) 5G NSA เป็นโซลูชันสำหรับเครือข่าย 5G ที่โครงสร้างพื้นฐาน 4G ที่มีอยู่รองรับเครือข่าย ใน Android 10 อุปกรณ์จะแสดงไอคอน 5G ในแถบสถานะเมื่อเชื่อมต่อกับเครือข่าย 5G

คำแนะนำบัญชีโทรศัพท์

Android 10 เปิดตัวบริการแนะนำบัญชีโทรศัพท์ ซึ่งจะแสดงคำแนะนำสำหรับบัญชีโทรศัพท์แก่ผู้ใช้เมื่อโทรออก

ผู้ให้บริการ

ย้ายข้อมูลการตั้งค่าเครือข่ายมือถือ

Android 10 ได้ออกแบบโค้ดการตั้งค่าเครือข่ายมือถือ UI ใหม่และย้ายจากสแต็กโทรศัพท์ไปยังสแต็กการตั้งค่า หากต้องการรองรับโค้ดที่ย้ายข้อมูล ให้เปลี่ยนค่าการกำหนดค่าการตั้งค่าเครือข่ายมือถือต่อไปนี้จากแหล่งข้อมูล 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 และหมายเลขซีเรียลของ SIM เป็นข้อมูลที่ได้รับจากผู้ให้บริการ ระบบจึงให้สิทธิ์เข้าถึงตัวระบุเหล่านี้แก่แพ็กเกจที่มีสิทธิ์ของผู้ให้บริการ

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 เป็นหลักเพื่อผสานรวมกับ Control Plane ของเฟรมเวิร์ก 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 ควรส่งไปยัง upstream

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 อีกต่อไป และอินเทอร์เฟซและเมธอดต่อไปนี้เลิกใช้งานแล้ว

อินเทอร์เฟซ

วิธีการ

หากต้องการใช้ 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 บริบท HAL ของเสียงจะแมปกับ AudioAttributes.usage เพื่อระบุเสียง Android รองรับอินสแตนซ์ AUDIO_DEVICE_OUT_BUS รายการต่อบริบท IAudioControl HAL มีส่วนขยายเฉพาะยานพาหนะสำหรับ HAL เสียง

การไปยังส่วนต่างๆ ด้วยท่าทางสัมผัส

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

โครงข่ายประสาทเทียม

Android 10 เปิดตัวการอัปเดต Neural Networks API และ Neural Networks HAL ดูสรุปการเปลี่ยนแปลงได้ที่หัวข้อเครือข่ายประสาทเทียม

เอกสารประกอบเกี่ยวกับโครงข่ายระบบประสาทเทียมฉบับใหม่และฉบับปรับปรุงสำหรับ Android 10

เซ็นเซอร์

Sensors HAL 2.0

Sensors HAL 2.0 รองรับการใช้คิวข้อความด่วน (FMQ) เพื่อส่งเหตุการณ์เซ็นเซอร์จาก HAL ไปยังเฟรมเวิร์กเซ็นเซอร์ของ Android

ปิดเซ็นเซอร์

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

หากอุปกรณ์ใช้การติดตั้งใช้งานเริ่มต้นของ SensorService, CameraService และ AudioPolicyService ก็ไม่จำเป็นต้องปรับแต่งการออกแบบอ้างอิงเพิ่มเติม หากมีเซ็นเซอร์อื่นๆ โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับการรองรับฟีเจอร์นี้ในการปรับแต่ง

สื่อ

คอมโพเนนต์สื่อที่อัปเดตได้

Android 10 มีคอมโพเนนต์สื่อที่อัปเดตได้ ซึ่งช่วยให้อัปเดตคอมโพเนนต์ของระบบแบบโมดูลที่เกี่ยวข้องกับสื่อผ่านโครงสร้างพื้นฐานของ Google Play Store หรือผ่านกลไกการอัปเดตผ่านอากาศ (OTA) ที่ได้จากพาร์ทเนอร์

Media DRM

Android 10 ปรับปรุงยูทิลิตีและความสามารถในการใช้งานของ MediaDrmJava และ NDK API

การถอดรหัส

Android 10 รองรับการถอดรหัส SW ของ AV1

สิทธิ์

Android 10 มีการกำหนดค่าสิทธิ์เพิ่มเติมเพื่อความโปร่งใสและความเป็นส่วนตัวของผู้ใช้

ข้อมูลผู้ให้บริการรายชื่อติดต่อและความสัมพันธ์

ตั้งแต่ Android 10 เป็นต้นไป ระบบจะเข้าถึงข้อมูลที่เกี่ยวข้องกับความเกี่ยวข้องของรายชื่อติดต่อซึ่งจัดการโดยคอมโพเนนต์ผู้ให้บริการ Contacts ต่างจากใน Android 9 และเวอร์ชันที่ต่ำกว่า การเปลี่ยนแปลงเหล่านี้เกี่ยวกับสิทธิ์เข้าถึงข้อมูลจะช่วยปรับปรุงความเป็นส่วนตัวของผู้ใช้ในทุกอุปกรณ์ Android 10 ที่ใช้คอมโพเนนต์ผู้ให้บริการ Contacts ฐานข้อมูลที่สําคัญไม่มีข้อมูลความสัมพันธ์ของรายชื่อติดต่ออีกต่อไป แอปจึงไม่สามารถเขียนหรืออ่านจากไดเรกทอรีดังกล่าว

การเปลี่ยนแปลงใน Android 10 คาดว่าจะส่งผลอย่างมากต่อ API หากแอปของคุณใช้ฟีเจอร์ที่เลิกใช้งานซึ่งกล่าวถึงในผู้ให้บริการรายชื่อติดต่อและข้อมูลความเกี่ยวข้อง คุณอาจต้องอัปเดตแอปเพื่อชดเชยการเปลี่ยนแปลง นอกจากนี้ หากคุณใช้ผู้ให้บริการรายชื่อติดต่อเวอร์ชันแยกออกมา คุณต้องอัปเดตผู้ให้บริการรายชื่อติดต่อ

สิทธิ์เข้าถึงตำแหน่งแบบ 3 สถานะ

สิทธิ์เข้าถึงตำแหน่งแบบ 3 สถานะใน Android 10 ช่วยให้ผู้ใช้ควบคุมวิธีที่แอปเข้าถึงตำแหน่งของอุปกรณ์ได้มากขึ้น

การช่วยเตือนการเข้าถึงตำแหน่งในเบื้องหลัง

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

จำกัดสถานที่ตั้งที่มีโอกาส

เมื่อแอปขอตำแหน่งของอุปกรณ์ แอปจะรอการตอบกลับคำขอ หรือรับการอัปเดตตำแหน่งตามโอกาสโดยใช้เครื่องมือรับฟังตำแหน่งที่ทำงานอยู่ก็ได้ ตั้งแต่ Android 10 เป็นต้นไป หากต้องการการอัปเดตตำแหน่งแบบไม่ตั้งใจ นักพัฒนาแอปต้องระบุว่าต้องการการอัปเดตตำแหน่งแบบไม่ตั้งใจจากคลาส FusedLocationProviderClient

การเปิดแอปเบื้องหลัง

ใน Android 10 แอปที่ไม่มีสิทธิ์ซึ่งไม่มีหน้าต่างที่มองเห็นได้จะไม่สามารถเปิดตัวเองขึ้นที่เบื้องหน้าโดยอัตโนมัติ การเปลี่ยนแปลงนี้จะช่วยระงับป๊อปอัปโฆษณาและการลักลอบใช้บัญชี คุณไม่ต้องดำเนินการใดๆ เพื่อเปิดใช้ฟีเจอร์นี้

แซนด์บ็อกซ์ของแอป

ใน Android 10 แอปจะมีมุมมองไฟล์ระบบแบบไฟล์ดิบแบบจำกัด โดยไม่มีสิทธิ์เข้าถึงเส้นทางอย่าง /sdcard/DCIM โดยตรง อย่างไรก็ตาม แอปจะยังคงมีสิทธิ์เข้าถึงแบบไฟล์ดิบอย่างเต็มรูปแบบสำหรับเส้นทางเฉพาะแพ็กเกจตามที่แสดงผลโดยเมธอดที่เกี่ยวข้อง เช่น Context.getExternalFilesDir() แอปยังคงมีสิทธิ์เข้าถึงแบบไฟล์ดิบอย่างเต็มรูปแบบสำหรับเส้นทางเฉพาะแพ็กเกจ

ใช้แซนด์บ็อกซ์ของแอปเพื่อปฏิบัติตามหลักเกณฑ์การแชร์ไฟล์เพื่อระบุรายละเอียดการแชร์ข้อมูลที่เหมาะสม

จำกัดการเข้าถึงคลิปบอร์ดของแอป

ใน Android 10 สิทธิ์เข้าถึงคลิปบอร์ดมีการเปลี่ยนแปลงเพื่อไม่ให้สามารถดูเนื้อหาคลิปบอร์ดได้โดยเรียกใช้ ClipboardManager.getPrimaryClip หรือเพิ่มตัวรับฟัง onPrimaryClipChangedListener เพื่อรับการแจ้งเตือนเมื่อคลิปบอร์ดมีการเปลี่ยนแปลง ซึ่งจะช่วยเพิ่มความเป็นส่วนตัวของผู้ใช้และปิดใช้แอปที่เป็นอันตรายซึ่งพยายามแพร่กระจายมัลแวร์จากการแก้ไขคลิปบอร์ด

ใน Android 10 ระบบจะอนุญาตให้เข้าถึงระดับอ่านได้เฉพาะกับแอปปัจจุบันที่มีโฟกัสการป้อนข้อมูลหรือแป้นพิมพ์ปัจจุบันเท่านั้น ตอนนี้การเรียกฟังภาษา ClipboardManager.onPrimaryClipChanged() จะทํางานกับแอปที่ตรงกับข้อจํากัดดังกล่าวเท่านั้น ClipboardManager.getPrimaryClip และ ClipboardManager.getPrimaryClipDescription จะแสดงผลเป็น null หากแอปที่ส่งคำขอไม่ใช่เครื่องมือแก้ไข (IME) วิธีการป้อนข้อมูลเริ่มต้น หรือไม่มีโฟกัสการป้อนข้อมูล

สิทธิ์รันไทม์รวมถึงการจดจํากิจกรรม

ตอนนี้ผู้ใช้จะเห็นกล่องโต้ตอบการจดจำกิจกรรมเมื่อแอปเข้าถึงตำแหน่งของอุปกรณ์ในเบื้องหลัง สิทธิ์รันไทม์ที่ถูกจํากัดอย่างเข้มงวดต้องอยู่ในรายการที่อนุญาตอย่างถูกต้องใน Android 10

สิทธิ์ MANAGE_DEVICE_ADMINS

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

การแชร์การปรับปรุง 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 พลังงานจะยังคงรองรับ API เหล่านี้ แต่เราจะย้ายข้อมูล API ดังกล่าวไปยัง HAL สถิติพลังงานโดยเฉพาะในอนาคต

HAL สถิติพลังงานมี API ใหม่เพื่อรองรับการเก็บรวบรวมข้อมูลจากค่าการวัดพลังงานในอุปกรณ์สำหรับอุปกรณ์ที่รองรับ นอกจากนี้ เรายังได้อัปเดต API การเก็บรวบรวมสถิติการใช้พลังงานที่มีอยู่เพื่อเพิ่มความยืดหยุ่นด้วย API การบอกใบ้พลังงานจะยังคงอยู่ใน HAL พลังงานและไม่มีการเปลี่ยนแปลง

การลดความร้อน

เฟรมเวิร์กความร้อนใน Android 10 จะแยกอินเทอร์เฟซของอุปกรณ์สำหรับเซ็นเซอร์อุณหภูมิของระบบย่อยความร้อน ซึ่งรวมถึง CPU, GPU, แบตเตอรี่, ผิวหนัง และอุปกรณ์ทำความเย็น เฟรมเวิร์กนี้เปิดตัวอินเทอร์เฟซการสำรวจเพื่อสอบถามสถานะความร้อนเพื่อเริ่มการควบคุม และอินเทอร์เฟซการเรียกกลับเพื่อส่งข้อความถึงผู้ใช้เมื่ออุณหภูมิเกินเกณฑ์

Android 10 มีประเภทข้อมูลใหม่ผ่านอินเทอร์เฟซ IThermalService โดยใช้วิธีการใหม่ 3 วิธีต่อไปนี้

  • getCurrentThermalStatus() แสดงผลสถานะความร้อนปัจจุบันของอุปกรณ์เป็นจำนวนเต็ม เว้นแต่ว่าอุปกรณ์จะได้รับการจำกัด
  • addThermalStatusListener() เพิ่มผู้ฟัง
  • removeThermalStatusListener() นำผู้ฟังที่เพิ่มไว้ก่อนหน้านี้ออก

แอปจะเพิ่มและนำผู้ฟังออก รวมถึงเข้าถึงสถานะอุณหภูมิในคลาส 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 ดูรายละเอียดเพิ่มเติมได้ที่ Overlayfs README ใน 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 ผ่านอากาศ (OTA) ไม่สำเร็จ