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

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

สร้าง

java_sdk_library

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

สถาปัตยกรรม

ส่วนประกอบของระบบโมดูลาร์

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

เลเยอร์นามธรรมของฮาร์ดแวร์ (HAL)

Android 10 เพิ่มการรองรับ HAL เพื่อ ปิดเครื่องโดยอัตโนมัติ เมื่อไม่มีไคลเอนต์

เคอร์เนล

เอบีไอ

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

Android 10 ยังแนะนำ ตัวตรวจสอบการใช้งาน ABI ที่ใช้สัญลักษณ์ ตัวตรวจสอบสามารถตรวจจับไบนารีที่สร้างไว้ล่วงหน้าที่ล้าสมัย ณ เวลาสร้าง เพื่อให้นักพัฒนาไลบรารีแบบแบ่งใช้สามารถรู้ได้ว่าไบนารีที่สร้างไว้ล่วงหน้าตัวใดที่อาจเสียหายจากการเปลี่ยนแปลง และไบนารีที่สร้างไว้ล่วงหน้าตัวใดที่ต้องสร้างใหม่

Android Live-Lock ภูต

Android 10 มี Android Live-Lock Daemon (llkd) ซึ่งออกแบบมาเพื่อตรวจจับและลดการหยุดชะงักของเคอร์เนล

vDSO32 บน ARM64

Android 10 รองรับการใช้ vDSO32 บนเคอร์เนล 64 บิต ซึ่งช่วยเพิ่มอายุการใช้งานแบตเตอรี่ 0.4 เปอร์เซ็นต์และการปรับปรุงประสิทธิภาพอื่นๆ

รายการ fstab สำหรับพาร์ติชั่นที่เมาท์ก่อนหน้านี้

Android 10 กำหนดให้อุปกรณ์ระบุรายการ fstab สำหรับ พาร์ติชันที่เมาท์ก่อน โดยใช้ไฟล์ fstab ใน ramdisk ระยะแรก

เอชดีแอล

ออฟโหลด BroadcastQueue

Android 10 รวม การถ่ายข้อมูล BroadcastQueue ใหม่ไปยังคิว เบื้องหลัง และ เบื้องหน้า ที่มีอยู่ คิวออฟโหลดมีลำดับความสำคัญและพฤติกรรมการหมดเวลาเหมือนกับคิวเบื้องหลัง เพื่อป้องกันการบล็อกคิวเบื้องหลัง ซึ่งการออกอากาศที่น่าสนใจหรือมองเห็นได้โดยผู้ใช้อาจเกิดขึ้นได้ คิวออฟโหลดจะจัดการการออกอากาศ BOOT_COMPLETED ซึ่งแอปจำนวนมากฟังและอาจใช้เวลานานในการดำเนินการให้เสร็จสิ้น ขณะนี้คิวออฟโหลดจัดการเฉพาะการออกอากาศ BOOT_COMPLETED เท่านั้น แต่อาจสามารถรองรับการออกอากาศแบบยาวอื่นๆ ได้

ระบบระงับการให้บริการ

Android 10 แทนที่เธรดใน libsuspend ที่รับผิดชอบในการเริ่มต้นการระงับระบบด้วย บริการ SystemSuspend HIDL การใช้งานนี้มีฟังก์ชันการทำงานที่เทียบเท่ากับเวอร์ชันก่อนหน้า ในขณะที่ใช้ประโยชน์จากโครงสร้างพื้นฐาน Android HIDL

safe_union ใน HIDL

Android 10 แนะนำ safe_union ซึ่งเป็นประเภทสหภาพที่ติดแท็กอย่างชัดเจนใน HIDL

การกำหนดค่า

ConfigStore HAL

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

กำหนดค่า Schema API ของไฟล์

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

คุณสมบัติของระบบเป็น API

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

อ็อบเจ็กต์ส่วนต่อประสานผู้ขาย (VINTF)

วินท์เอฟ

การเปลี่ยนแปลง VINTF ใน Android 10 รวมถึง:

  • การเลิกใช้แท็กเวอร์ชัน AVB
  • การเพิ่มข้อมูลเคอร์เนลในแพ็คเกจ OTA
  • การสร้าง ODM ปรากฏอย่างเป็นทางการ
  • การเพิ่มเมทริกซ์ความเข้ากันได้ของผลิตภัณฑ์
  • การเชื่อมโยง รายการรายการกับโมดูล HAL ในระบบบิลด์

บูตโหลดเดอร์

แรมดิสก์

ใน Android 10 ระบบไฟล์รูท จะไม่รวมอยู่ใน ramdisk.img อีกต่อไป และจะรวมเข้ากับ system.img แทน

สร้างพาร์ติชัน ODM

Android 10 รองรับการ สร้างพาร์ติชัน odm โดยใช้ระบบบิลด์ Android คุณสามารถใช้พาร์ติชัน /odm แยกต่างหากสำหรับการปรับแต่ง ซึ่งช่วยให้คุณสามารถใช้อิมเมจของผู้จำหน่ายรายเดียวสำหรับ SKU ฮาร์ดแวร์หลายรายการได้ ซึ่งช่วยให้ผู้ผลิตที่ออกแบบดั้งเดิม (ODM) สามารถปรับแต่งแพ็คเกจการสนับสนุนบอร์ด (BSP) ของผู้จำหน่ายระบบบนชิป (SoC) ให้เข้ากับอุปกรณ์เฉพาะของตน (บอร์ดของตน) พวกเขาสามารถใช้โมดูลเคอร์เนลสำหรับส่วนประกอบเฉพาะของบอร์ด daemons เฉพาะของบอร์ด หรือคุณสมบัติของตัวเองใน hardware abstraction layer (HAL) นอกจากนี้ยังอาจเปลี่ยนหรือปรับแต่งส่วนประกอบ SoC อีกด้วย

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

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

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

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

โรคเอดส์ที่มีเสถียรภาพ

Android 10 เพิ่มการรองรับ Android Interface Definition Language (AIDL) ที่เสถียร ซึ่งเป็นวิธีใหม่ในการติดตาม application program interface (API)/application binary interface (ABI) ที่จัดทำโดยอินเทอร์เฟซ AIDL

ย้าย fastboot ไปยังพื้นที่ผู้ใช้

Android 10 เพิ่มการรองรับพาร์ติชันที่ปรับขนาดได้โดยการย้าย การใช้งาน fastboot จาก bootloader ไปยังพื้นที่ผู้ใช้

แสดง

การเล่นวิดีโอ HDR

Android 10 รองรับ การเล่น HDR10, VP9 และ HDR10+

การจำแนกข้อความ

การจัดประเภทข้อความ ใช้เทคนิคการเรียนรู้ของเครื่องเพื่อช่วยนักพัฒนาจัดประเภทข้อความ Android 10 แนะนำสองวิธีใน 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 ของคุณ สำหรับข้อมูลเพิ่มเติม โปรดดู บันทึกประจำรุ่น Unicode CLDR บน Zawgyi (Qaag)

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

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

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

การตั้งค่า

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

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

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

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

การทดสอบ

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

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

ดาวน์โหลดซีทีเอส

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

CTS ชิม APEX

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

โหมดทดสอบสายรัด

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

โหมดแอปทันใจ

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

นอกเหนือจากโหมด CTS สำหรับ Instant Apps แล้ว Android 10 ยังมี CTS Verifier สำหรับ Instant Apps อีก ด้วย

การทดสอบเสียง CTS Verifier pro

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

การทดสอบ CTS Verifier MIDI

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

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

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

ชุดทดสอบผู้ขาย (VTS)

การทดสอบ VTS ด้วย debug ramdisk

ใน Android 10 อิมเมจระบบทั่วไป (GSI) ที่ใช้ในการรันการทดสอบการปฏิบัติตามข้อกำหนดของ CTS-on-GSI/VTS จะเปลี่ยนจาก userdebug เป็นประเภทบิลด์ผู้ใช้ เนื่องจาก 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

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

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

คุณสมบัติด้านความปลอดภัย

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

การพิสูจน์ตัวตนด้วยใบหน้า

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

ขยายการเข้าถึง

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

การเข้ารหัส

OEMCrypto

Android 10 ใช้ OEMCrypto API เวอร์ชัน 15

การทดสอบ

BoundsSanitizer

Android 10 ปรับใช้ BoundsSanitizer (BoundSan) ใน Bluetooth และตัวแปลงสัญญาณ BoundSan ใช้น้ำยาฆ่าเชื้อ BoundSan ของ UBSan การบรรเทาผลกระทบนี้เปิดใช้งานในระดับต่อโมดูล ช่วยรักษาองค์ประกอบสำคัญของ Android ให้ปลอดภัยและไม่ควรปิดใช้งาน BoundSan ถูกเปิดใช้งานในตัวแปลงสัญญาณต่อไปนี้:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

การฆ่าเชื้อล้นจำนวนเต็ม

Android 10 เปิดใช้งาน Integer Overflow Sanitization (IntSan) ในตัวแปลงสัญญาณซอฟต์แวร์ ตรวจสอบให้แน่ใจว่าประสิทธิภาพการเล่นเป็นที่ยอมรับสำหรับตัวแปลงสัญญาณที่ไม่รองรับในฮาร์ดแวร์ของอุปกรณ์ IntSan ถูกเปิดใช้งานในตัวแปลงสัญญาณต่อไปนี้:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

หน่วยความจำดำเนินการเท่านั้น

ตามค่าเริ่มต้น ส่วนโค้ดที่ปฏิบัติการได้สำหรับไบนารีของระบบ AArch64 จะถูกทำเครื่องหมายว่าดำเนินการเท่านั้น (ไม่สามารถอ่านได้) เป็นการบรรเทาผลกระทบที่หนักขึ้นจากการโจมตีการใช้โค้ดซ้ำแบบทันเวลา โค้ดที่ผสมข้อมูลและโค้ดเข้าด้วยกันและโค้ดที่จงใจตรวจสอบส่วนเหล่านี้ (โดยไม่ต้องทำการแมปส่วนหน่วยความจำใหม่ให้สามารถอ่านได้ก่อน) จะไม่ทำงานอีกต่อไป แอปที่มี SDK เป้าหมายเป็น Android 10 (API ระดับ 29 ขึ้นไป) จะได้รับผลกระทบหากแอปพยายามอ่านส่วนโค้ดของไลบรารีระบบที่เปิดใช้งานหน่วย ความจำเฉพาะการดำเนินการ (XOM) ในหน่วยความจำโดยไม่ได้ทำเครื่องหมายส่วนดังกล่าวว่าอ่านได้ก่อน

สคูโด

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

ShadowCallStack

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

เสียง

เครื่องเสียง HAL

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

  • AudioSource
  • AudioFormat
  • AudioChannelMask

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

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

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

ผู้จัดการนโยบายเสียง

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

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

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

  • รองรับการลอยตัว
  • รองรับความถี่ 192 กิโลเฮิร์ตซ์
  • รองรับแปดช่อง
  • รวมข้อมูลเวลา

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

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

การเล่นเสียงCapture

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

API การจับภาพไม่ส่งผลต่อเวลาแฝงของแอปที่กำลังบันทึกเสียงอยู่

มิดิ

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

กล้อง

หากต้องการสรุปการเปลี่ยนแปลง API ของกล้อง, 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 มาตรฐานใหม่สองอินเทอร์เฟซ ได้แก่ android.frameworks.cameraservice.service@2.0 และ android.frameworks.cameraservice.device@2.0 เพื่อให้การใช้อินเทอร์เฟซ HIDL สะดวกยิ่งขึ้น Android 10 ยังแนะนำไลบรารีที่ผู้จำหน่ายมีจำหน่าย libcamera2_vendor ไลบรารีนี้คล้ายกับ ไลบรารี 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 การโทรแบบกลุ่มเป็นส่วนขยายของ eMBMS API ที่เพิ่มเข้ามาใน Android 9 API ใหม่กำหนดมาตรฐานสำหรับแอปที่จะเข้าร่วมและออกอากาศการโทรแบบกลุ่มที่ออกอากาศทางมือถือโดยการโต้ตอบกับแพ็คเกจมิดเดิลแวร์ eMBMS การโทรแบบกลุ่มต้องได้รับการสนับสนุนจากผู้จำหน่ายชิปเซ็ต ผู้จำหน่ายมิดเดิลแวร์ และผู้ให้บริการเซลล์เพื่อให้ทำงานได้อย่างถูกต้อง เอกสารประกอบสำหรับนักพัฒนาอยู่ที่ Developer.google.com

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

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

eSIM หลายอัน

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

อัพเดต eSIM

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

อินเตอร์เน็ตไร้สาย

การเลือกเครือข่าย

Android จะประเมินคุณภาพของเครือข่ายที่เชื่อมต่ออย่างต่อเนื่องและประเมินคุณภาพของเครือข่ายที่มีอยู่ Android 10 ได้อัปเดตอัลกอริธึมและขั้นตอนใน การเลือกและสลับระหว่างเครือข่าย Wi-Fi

การสแกนออฟโหลดเครือข่ายที่ต้องการ Wi-Fi

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

ผู้ให้บริการ Wi-Fi

ใน Android 10 อุปกรณ์ที่มี คุณสมบัติ Wi-Fi ของผู้ให้บริการ จะเชื่อมต่อกับเครือข่าย Wi-Fi ของผู้ให้บริการที่กำหนดค่าไว้โดยอัตโนมัติ (เครือข่ายที่มีใบรับรองคีย์สาธารณะ)

เชื่อมต่อ Wi-Fi อย่างง่ายดาย

ใน Android 10 อุปกรณ์สามารถใช้ Wi-Fi Easy Connect ซึ่งใช้ Device Provisioning Protocol (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 ตรง

Wi-Fi Direct หรือที่เรียกว่า Wi-Fi P2P ช่วยให้อุปกรณ์ที่รองรับสามารถค้นพบและเชื่อมต่อถึงกันได้โดยตรงโดยใช้โปรโตคอล Wi-Fi Direct โดยไม่ต้องใช้อินเทอร์เน็ตหรือเครือข่ายโทรศัพท์เคลื่อนที่

การปรับปรุงการสุ่ม MAC

จาก Android 10 การสุ่ม MAC จะถูกเปิดใช้งานตามค่าเริ่มต้นสำหรับโหมดไคลเอนต์, SoftAp และ Wi-Fi Direct อุปกรณ์จะต้องมีตัวเลือกในการเปิดหรือปิดใช้งานการสุ่ม MAC สำหรับแต่ละ SSID ใน UI ของระบบ

พาสพอยต์ R2

Android 10 แนะนำการรองรับ ฟีเจอร์ Passpoint R2 Passpoint R2 ใช้การลงทะเบียนออนไลน์ (OSU) ซึ่งเป็นวิธีการมาตรฐานในการจัดเตรียมโปรไฟล์ Passpoint ใหม่ Android 10 รองรับการจัดเตรียมโปรไฟล์ EAP-TTLS โดยใช้ SOAP-XML

เอ็นเอฟซี

เอ็นเอฟซีที่ปลอดภัย

Secure NFC อนุญาตให้เปิดใช้งานการจำลองการ์ด NFC นอกโฮสต์เฉพาะเมื่อหน้าจอของอุปกรณ์ถูกปลดล็อคเท่านั้น การใช้คุณสมบัตินี้จะทำให้ผู้ใช้สามารถเปิดใช้งาน Secure NFC เพื่อเพิ่มความปลอดภัยได้

Android Beam เลิกใช้งานแล้ว

ใน Android 10 ไม่จำเป็นต้องใช้ Android Beam อีกต่อไป และอินเทอร์เฟซและวิธีการต่อไปนี้ได้เลิกใช้งานแล้ว

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

วิธีการ:

หากต้องการใช้ Android Beam ให้รายงานค่าคงที่ของคุณลักษณะ android.sofware.nfc.beam

กราฟิก

ASurfaceControl

Android 10 เพิ่ม ASurfaceControl ซึ่งเป็นวิธีใหม่สำหรับ SurfaceFlinger ในการยอมรับบัฟเฟอร์

การใช้งานกราฟิก

เลเยอร์ OpenGL ES

Android 10 แนะนำ ระบบการแบ่งชั้น สำหรับ GLES

อีจีแอล 1.5

Android 10 ใช้ อินเทอร์เฟซ EGL 1.5 สำหรับข้อมูลเกี่ยวกับคุณสมบัติใหม่ใน EGL 1.5 โปรดดู ข้อมูลจำเพาะของ Khronos EGL 1.5

วัลแคน

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 หากต้องการสรุปการเปลี่ยนแปลง โปรดดู โครงข่ายประสาทเทียม

เอกสาร Neural Networks ใหม่และอัปเดตสำหรับ Android 10:

เซนเซอร์

เซนเซอร์ HAL 2.0

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

เซ็นเซอร์ปิดอยู่

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

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

สื่อ

ส่วนประกอบสื่อที่อัพเดตได้

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

สื่อ DRM

Android 10 ปรับปรุงอรรถประโยชน์และการใช้งานของ MediaDrm Java และ NDK API

การถอดรหัส

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

สิทธิ์

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

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

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

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

การอนุญาตตำแหน่ง Tristate

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

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

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

จำกัดสถานที่ฉวยโอกาส

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

แอปพื้นหลังเปิดตัว

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

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

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

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

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

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

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

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

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

สิทธิ์ MANAGE_DEVICE_ADMINS

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

การแบ่งปันการปรับปรุง API

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

รันไทม์ของ Android (ART)

การกำหนดค่าที่ลงนาม

คุณลักษณะ Signed Config ช่วยให้สามารถฝังการกำหนดค่าข้อจำกัดอินเทอร์เฟซที่ไม่ใช่ SDK ใน APK ได้ ซึ่งช่วยให้สามารถลบอินเทอร์เฟซที่ไม่ใช่ SDK บางอย่างออกจากบัญชีดำได้ เพื่อให้ AndroidX สามารถใช้งานได้อย่างปลอดภัย ด้วยการเปลี่ยนแปลงนี้ AndroidX สามารถเพิ่มการรองรับคุณสมบัติใหม่ใน Android เวอร์ชันเก่าได้

ผลงาน

เลเยอร์นามธรรมของ Cgroup

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

ภูตนักฆ่าหน่วยความจำต่ำ (lmkd)

Android 10 รองรับ โหมด lmkd ใหม่ที่ใช้ตัวตรวจสอบข้อมูลแผงแรงดันเคอร์เนล (PSI) สำหรับการตรวจจับแรงดันหน่วยความจำ

พลัง

การจัดการพลังงานของแพลตฟอร์ม

ใน Android 10 คุณสามารถเปิดใช้งาน โหมด Doze บนอุปกรณ์ที่เปิดตลอดเวลาและอุปกรณ์ที่ใช้พลังงานแบตเตอรี่

ประหยัดแบตเตอรี่เป็นประจำ

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

สถิติพลังงาน HAL

ใน Android 10 IPowerStats.hal จะแทนที่ API การรวบรวมสถิติพลังงานใน IPower.hal แม้ว่า power HAL ยังคงรองรับ API แต่จะถูกย้ายไปยัง HAL สถิติพลังงานโดยเฉพาะในอนาคต

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

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

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

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

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

แอพจะเพิ่มและลบ Listener และเข้าถึงสถานะอุณหภูมิในคลาส PowerManager เฉพาะบริการระบบที่เชื่อถือได้ เช่น Android API หรือ API ผู้ผลิตอุปกรณ์เท่านั้นที่สามารถเข้าถึงข้อมูลเกี่ยวกับเหตุการณ์เชิงสาเหตุที่เกี่ยวข้องได้ ผู้ผลิตอุปกรณ์หรือผู้ผลิต SoC ต้องใช้ระบบ thermal HAL 2.0 เพื่อเปิดใช้งานฟังก์ชันการทำงานเต็มรูปแบบของกรอบงานระบายความร้อนใหม่

สำหรับตัวอย่างการดำเนินการลดความร้อน โปรดดู การดำเนินการอ้างอิง

อัพเดท

รูปแบบไฟล์ APEX

Android Pony EXpress (APEX) เป็นรูปแบบคอนเทนเนอร์ใหม่ที่ใช้ในขั้นตอนการติดตั้งสำหรับส่วนประกอบของระบบโมดูลาร์

พาร์ติชันแบบไดนามิก

พาร์ติชันแบบไดนามิก แนะนำระบบการแบ่งพาร์ติชัน userspace สำหรับ Android ช่วยให้สามารถสร้าง ปรับขนาด หรือทำลายพาร์ติชันระหว่างการอัปเดต OTA ผู้ผลิตอุปกรณ์ไม่จำเป็นต้องกังวลเกี่ยวกับขนาดพาร์ติชั่นแต่ละขนาด เช่น system vendor และ product แต่จะจัดสรรซูเปอร์พาร์ติ super ขนาดใหญ่หนึ่งพาร์ติชันแทน และสามารถกำหนดขนาดพาร์ติชันย่อยแบบไดนามิกภายในได้

การอัปเดตระบบแบบไดนามิก

การอัปเดตระบบแบบไดนามิก (DSU) ช่วยให้คุณสร้างอิมเมจระบบ Android ที่ผู้ใช้สามารถดาวน์โหลดได้จากอินเทอร์เน็ต และทดลองใช้โดยไม่มีความเสี่ยงที่จะทำให้อิมเมจระบบปัจจุบันเสียหาย

การสำรองและกู้คืนผู้ใช้หลายคน

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

ภาพซ้อนทับ

ผู้ใช้ที่ทำงานกับ userdebug หรือ eng builds คาดว่าจะสามารถติดตั้งพาร์ติชันระบบใหม่ได้อย่างมีประสิทธิภาพเป็นแบบอ่าน-เขียน จากนั้นจึงเพิ่มหรือแก้ไขไฟล์จำนวนเท่าใดก็ได้โดยไม่ต้องรีเฟรชอิมเมจระบบ คุณสามารถใช้ Overlayfs ซึ่งจะตั้งค่าพื้นที่เก็บข้อมูลสำรองสำหรับระบบไฟล์ที่เขียนได้โดยอัตโนมัติเป็นข้อมูลอ้างอิงด้านบน และต่อเชื่อมที่ด้านล่าง การดำเนินการเหล่านี้เกิดขึ้นในคำขอ adb disable-verity และ adb remount สำหรับรายละเอียดเพิ่มเติม โปรดดู Overlayfs README ใน AOSP

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

ใน Android 10 ไลบรารีที่ใช้ร่วมกันจะพร้อมใช้งานในพาร์ติชันการกู้คืน ซึ่งช่วยให้โปรแกรมปฏิบัติการโหมดการกู้คืนทั้งหมดเป็นแบบคงที่ ไลบรารีแบบแบ่งใช้อยู่ภายใต้ไดเร็กทอรี /system/lib (หรือ /system/lib64 สำหรับอุปกรณ์ 64 บิต) ในพาร์ติชัน

หากต้องการเพิ่มไลบรารีแบบแบ่งใช้ใหม่ให้กับพาร์ติชันการกู้คืน ให้เพิ่ม recovery_available: true หรือ recovery: true ใน Android.bp ของไลบรารีแบบแบ่งใช้ แบบแรกจะติดตั้งไลบรารีให้กับทั้งระบบและพาร์ติชันการกู้คืน ในขณะที่แบบหลังจะติดตั้งเฉพาะกับพาร์ติชันการกู้คืนเท่านั้น

ไม่สามารถสร้างการสนับสนุนไลบรารีที่ใช้ร่วมกันด้วยระบบการสร้างแบบ make-based ของ Android หากต้องการแปลงไฟล์ปฏิบัติการแบบคงที่ที่มีอยู่สำหรับโหมดการกู้คืนเป็นไฟล์ไดนามิก ให้ลบ LOCAL_FORCE_STATIC_EXECUTABLE := true ใน Android.mk หรือ static_executable: true (ใน Android.bp )

จุดตรวจสอบข้อมูลผู้ใช้ (UDC)

Android 10 แนะนำ ฟีเจอร์ User Data Checkpoint (UDC) ซึ่งช่วยให้ Android ย้อนกลับไปสู่สถานะก่อนหน้าได้เมื่อการอัปเดต Android over-the-air (OTA) ล้มเหลว