บันทึกประจำรุ่นของ 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 ใน 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 ด้วยพร็อพเพอร์ตี้ของระบบ

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) ปรับแต่งแพ็กเกจการสนับสนุนบอร์ด (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 คุณจะทำสิ่งต่อไปนี้ได้

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

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 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 รูปภาพระบบทั่วไป (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 ที่ป้องกันการเขียนทับที่อยู่ส่งคืน (เช่น บัฟเฟอร์สแต็ก ล้น) โดยการบันทึกที่อยู่ส่งคืนของฟังก์ชันไปยังอินสแตนซ์ ShadowCallStack ที่จัดสรรแยกต่างหากในส่วนนำของฟังก์ชันที่ไม่ใช่ฟังก์ชันใบ และ โหลดที่อยู่ส่งคืนจากอินสแตนซ์ ShadowCallStack ในส่วนท้ายของฟังก์ชัน

เสียง

Audio HAL

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

  • AudioSource
  • AudioFormat
  • AudioChannelMask

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

ผลลัพธ์ของการประมวลผลล่วงหน้า

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

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

Android 10 มีการปรับโครงสร้างเครื่องมือจัดการนโยบายเสียงครั้งใหญ่เพื่อให้มีความยืดหยุ่นมากขึ้นในการรองรับกรณีการใช้งานยานยนต์ที่ซับซ้อน

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

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

อินเทอร์เฟซ:

วิธีการ

หากต้องการใช้ 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 1 รายการต่อบริบท IAudioControl HAL มีส่วนขยายเฉพาะของยานพาหนะสำหรับ Audio HAL

การนำทางด้วยท่าทางสัมผัส

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

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

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

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

เซ็นเซอร์

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

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() เพิ่ม Listener
  • removeThermalStatusListener() นำผู้ฟังที่เพิ่มไว้ก่อนหน้านี้ออก

แอปจะเพิ่มและนำ 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) ล้มเหลว