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

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

วิธีการ

หากต้องการใช้ 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

เซ็นเซอร์

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() เพิ่ม 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) ล้มเหลว