การเปลี่ยนแปลงเฟรมเวิร์กความเข้ากันได้ (Android 12)

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

หน้านี้อธิบายการเปลี่ยนแปลงลักษณะการทํางานแต่ละรายการที่เป็นส่วนหนึ่งของเฟรมเวิร์กความเข้ากันได้ใน Android 12 (API ระดับ 31) ใช้รายการนี้ร่วมกับตัวเลือกสำหรับนักพัฒนาแอปและคำสั่ง ADB เพื่อทดสอบและแก้ไขข้อบกพร่องของแอปขณะเตรียมรองรับและกำหนดเป้าหมาย Android 12

ตัวอย่างสิ่งที่คุณทําได้โดยใช้เครื่องมือเฟรมเวิร์กความเข้ากันได้มีดังนี้

  • ทดสอบการเปลี่ยนแปลงที่กำหนดเป้าหมายโดยไม่เปลี่ยนtargetSdkVersion ของแอปจริงๆ คุณใช้ปุ่มสลับเพื่อบังคับให้เปิดใช้การเปลี่ยนแปลงลักษณะการทำงานที่กำหนดเป้าหมายที่เจาะจงเพื่อประเมินผลกระทบต่อแอปที่มีอยู่ได้
  • ทดสอบเฉพาะการเปลี่ยนแปลงที่เฉพาะเจาะจงเท่านั้น แทนที่จะต้องจัดการการเปลี่ยนแปลงที่กำหนดเป้าหมายทั้งหมดพร้อมกัน การสลับจะช่วยให้คุณปิดใช้การเปลี่ยนแปลงที่กำหนดเป้าหมายทั้งหมด ยกเว้นการเปลี่ยนแปลงที่คุณต้องการทดสอบ
  • จัดการการเปิด/ปิดผ่าน adb คุณสามารถใช้คําสั่ง adb เพื่อเปิดและปิดใช้การเปลี่ยนแปลงที่เปิด/ปิดได้ในสภาพแวดล้อมการทดสอบอัตโนมัติ
  • แก้ไขข้อบกพร่องได้เร็วขึ้นโดยใช้รหัสการเปลี่ยนแปลงมาตรฐาน การเปลี่ยนแปลงที่เปิด/ปิดได้แต่ละรายการจะมีรหัสและชื่อที่ไม่ซ้ำกัน ซึ่งคุณใช้แก้ไขข้อบกพร่องของสาเหตุรากในเอาต์พุตบันทึกได้อย่างรวดเร็ว

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

การเปลี่ยนแปลงลักษณะการทำงานที่รวมอยู่ในเฟรมเวิร์กความเข้ากันได้

รายการในส่วนนี้จะอธิบายการเปลี่ยนแปลงลักษณะการทำงานแต่ละรายการที่รวมอยู่ในเฟรมเวิร์กความเข้ากันได้ใน Android 12

คุณกรองรายการการเปลี่ยนแปลงตามสถานะเริ่มต้นได้

การเปลี่ยนแปลงลักษณะการทำงานที่เพิ่มลงในเฟรมเวิร์กความเข้ากันได้ใน Android 12

ALWAYS_SANDBOX_DISPLAY_APIS

รหัสการเปลี่ยนแปลง: 185004937
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ที่ส่วนในหน้าการเปลี่ยนแปลงลักษณะการทำงานของ Android 12 ที่เกี่ยวกับ วิธีแสดงผลที่เลิกใช้งานแล้ว

AUTOFILL_NON_TEXT_REQUIRES_ON_RECEIVE_CONTENT_LISTENER

รหัสการเปลี่ยนแปลง: 163400105
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 32) ขึ้นไป

ตั้งแต่ Android 12 เป็นต้นไป แพลตฟอร์มจะแสดงคำแนะนำที่ไม่ใช่ข้อความ (เช่น รูปภาพ) ได้โดยใช้เฟรมเวิร์กการป้อนข้อความอัตโนมัติที่ปรับปรุงแล้ว (ดูบริการป้อนข้อความอัตโนมัติ) แอปต้องใช้งาน OnReceiveContentListener API ตามปกติจึงจะจัดการคำแนะนำเหล่านี้ได้

เพื่อให้การนำ API นี้ไปใช้ราบรื่นขึ้นสำหรับแอปที่เคยติดตั้งใช้งาน InputConnection.commitContent(InputContentInfo, int, Bundle) API ไว้ก่อนหน้านี้ เราจะนำ API นั้นมาใช้เป็นทางเลือกสำรองหากแอปยังไม่ได้ติดตั้งใช้งาน OnReceiveContentListener ตัวเลือกสำรองนี้จะเปิดใช้งานใน Android 12 (API ระดับ 31) เท่านั้น รหัสการเปลี่ยนแปลงนี้จะปิดใช้โฆษณาสำรองเพื่อให้แอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 32) ขึ้นไปต้องใช้ API ของ OnReceiveContentListener เพื่อยอมรับคำแนะนำที่ไม่ใช่ข้อความ

BLOCK_FLAG_SLIPPERY

รหัสการเปลี่ยนแปลง: 157929241
สถานะเริ่มต้น: เปิดใช้สำหรับแอปทั้งหมด

สำหรับแอปที่ทำงานใน Android 12 (API ระดับ 31) ให้ตรวจสอบว่ามีการใช้ FLAG_SLIPPERY กับหน้าต่างใดๆ ในแอปหรือไม่ เราคาดว่า Flag นี้น่าจะใช้โดยคอมโพเนนต์ของระบบเท่านั้นเนื่องจากเป็นช่องที่ไม่รองรับ หากเป็นเช่นนั้น ระบบจะจำกัดเนื้อหา

BLOCK_GPS_STATUS_USAGE

รหัสการเปลี่ยนแปลง: 144027538
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป การใช้งาน GpsStatus API ทั้งหมดต้องแทนที่ด้วย GnssStatus API

BLOCK_IMMUTABLE_PENDING_INTENTS

รหัสการเปลี่ยนแปลง: 171317480
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป PendingIntent ออบเจ็กต์ที่เปลี่ยนแปลงไม่ได้ซึ่งส่งผ่านไปยัง API ตำแหน่งจะสร้าง IllegalArgumentException.

BLOCK_PENDING_INTENT_SYSTEM_API_USAGE

รหัสการเปลี่ยนแปลง: 169887240
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป LocationRequestระบบ API จะใช้กับPendingIntentคำขอตำแหน่งไม่ได้

BLOCK_UNTRUSTED_TOUCHES

เปลี่ยนรหัส: 158002302
สถานะเริ่มต้น: เปิดใช้สําหรับแอปทั้งหมด

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ที่ระบบบล็อกกิจกรรมการแตะที่ไม่น่าเชื่อถือ

CALL_ACTIVITY_RESULT_BEFORE_RESUME

รหัสการเปลี่ยนแปลง: 78294732
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 32) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 32) ขึ้นไป ให้แก้ไขวงจรของผลลัพธ์กิจกรรมเพื่อรับประกันว่ากิจกรรมจะได้รับผลลัพธ์กิจกรรมก่อนที่จะกลับมาดำเนินการต่อ

CAMERA_MIC_INDICATORS_NOT_PRESENT

รหัสการเปลี่ยนแปลง: 162547999
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

บ่งบอกว่าอุปกรณ์นี้รองรับไฟบอกสถานะกล้องและไมโครโฟน จะเท่ากับ false หากมี เนื่องจากเมธอด CompatChanges#isChangeEnabled จะแสดงผลเป็น true หากไม่มีรหัสการเปลี่ยนแปลง

CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS

รหัสการเปลี่ยนแปลง: 146211400
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 32) ขึ้นไป

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

CHANGE_ID_AUTH_STATE_DENIED

รหัสการเปลี่ยนแปลง: 181350407
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปไคลเอ็นต์ที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป จะมีการส่ง SecurityException เมื่อแอปอยู่ในสถานะการให้สิทธิ์ถูกปฏิเสธและพยายามส่งข้อความไปยัง nanoapp

CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION

รหัสการเปลี่ยนแปลง: 136069189
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ระบบจะแสดงข้อผิดพลาด SecurityException เมื่อแอปไม่มีสิทธิ์ HIGH_SAMPLING_RATE_SENSORS ทำงานในโหมดแก้ไขข้อบกพร่อง และขออัตราการสุ่มตัวอย่างที่เร็วกว่า 200 Hz

DELIVER_HISTORICAL_LOCATIONS

รหัสการเปลี่ยนแปลง: 73144566
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป โปรแกรมรับส่งตำแหน่งอาจได้รับตำแหน่งที่ผ่านมา (จากก่อนถึงปัจจุบัน) ในบางกรณี

DISPLAY_INFO_NR_ADVANCED_SUPPORTED

รหัสการเปลี่ยนแปลง: 181658987
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป จะช่วยให้การเปลี่ยนแปลงใน TelephonyDisplayInfo ใช้งานได้แบบย้อนหลัง

DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE

รหัสการเปลี่ยนแปลง: 170503758
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป แพลตฟอร์มอาจลดอัตราเฟรมของแอปให้เท่ากับตัวหารของอัตรารีเฟรชหากเหมาะสมกว่า (เช่น หากแอปเรียกใช้ Surface.setFrameRate(float, int)) แอปจะพบกับ Choreographer.postFrameCallback(Choreographer.FrameCallback) callbacks และ Backpressure ที่อัตราเฟรมที่ควบคุม แอปใช้ Display.getRefreshRate() และ Display.Mode.getRefreshRate() เพื่อให้ทราบอัตราการรีเฟรชจอแสดงผล Display.getRefreshRate() จะแสดงผลอัตราเฟรมของแอปพลิเคชันเสมอ ไม่ใช่อัตราการรีเฟรชจอแสดงผลจริงเพื่อให้แอป กำหนดอัตราเฟรมได้อย่างถูกต้อง Display.Mode.getRefreshRate() จะแสดงผลอัตราเฟรมของแอปหากคอมไพล์ไปยังรุ่นก่อนหน้า และตั้งแต่ Android 12 (API ระดับ 31) เป็นต้นไป ระบบจะแสดงอัตราการรีเฟรชจอแสดงผลจริง

DOWNSCALED

รหัสการเปลี่ยนแปลง: 168419799
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

การเปลี่ยนแปลงนี้เป็นตัวควบคุมการเปลี่ยนแปลงทั้งหมดเกี่ยวกับการลดขนาดบัฟเฟอร์ต่อแอป การเปิดใช้การเปลี่ยนแปลงนี้จะช่วยให้ใช้ปัจจัยการปรับขนาดต่อไปนี้ได้

เมื่อเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจแอป ระบบจะบังคับปรับขนาดแอปให้เป็นค่าตัวคูณมาตราส่วนที่เปิดใช้สูงสุด เช่น ระบบจะใช้ 80% หากเปิดใช้ทั้ง 80% และ 70% (DOWNSCALE_80 และ DOWNSCALE_70)

DOWNSCALE_30

รหัสการเปลี่ยนแปลง: 189970040
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 30% ของจอแสดงผลจริง

DOWNSCALE_35

รหัสการเปลี่ยนแปลง: 189969749
สถานะเริ่มต้น: ปิดใช้สำหรับทุกแอป

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 35% ของจอแสดงผลจริง

DOWNSCALE_40

รหัสการเปลี่ยนแปลง: 189970038
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปถือว่าแอปกำลังทำงานบนจอแสดงผลที่มีความละเอียด 40% ของความละเอียดในแนวตั้งและแนวนอนของจอแสดงผลจริง

DOWNSCALE_45

รหัสการเปลี่ยนแปลง: 189969782
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 45% ของจอแสดงผลจริง

DOWNSCALE_50

รหัสการเปลี่ยนแปลง: 176926741
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 50% ของจอแสดงผลจริง

DOWNSCALE_55

รหัสการเปลี่ยนแปลง: 189970036
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 55% ของจอแสดงผลจริง

DOWNSCALE_60

รหัสการเปลี่ยนแปลง: 176926771
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 60% ของจอแสดงผลจริง

DOWNSCALE_65

รหัสการเปลี่ยนแปลง: 189969744
สถานะเริ่มต้น: ปิดใช้สำหรับทุกแอป

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 65% ของจอแสดงผลจริง

DOWNSCALE_70

รหัสการเปลี่ยนแปลง: 176926829
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 70% ของจอแสดงผลจริง

DOWNSCALE_75

รหัสการเปลี่ยนแปลง: 189969779
สถานะเริ่มต้น: ปิดใช้สำหรับทุกแอป

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 75% ของจอแสดงผลจริง

DOWNSCALE_80

เปลี่ยนรหัส: 176926753
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 80% ของจอแสดงผลจริง

DOWNSCALE_85

รหัสการเปลี่ยนแปลง: 189969734
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 85% ของจอแสดงผลจริง

DOWNSCALE_90

เปลี่ยนรหัส: 182811243
สถานะเริ่มต้น: ปิดใช้สำหรับทุกแอป

เมื่อเปิดใช้ DOWNSCALED ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะบังคับให้แอปคิดว่ากำลังทำงานบนจอแสดงผลที่มีความละเอียดแนวตั้งและแนวนอน 90% ของจอแสดงผลจริง

DO_NOT_DOWNSCALE_TO_1080P_ON_TV

รหัสการเปลี่ยนแปลง: 157629738
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

แอป Android TV ที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปควรรองรับขนาดหน้าต่างทุกขนาด รวมถึงขนาดหน้าต่างที่มากกว่า 1080p แอปที่กำหนดเป้าหมายเป็น Android เวอร์ชันเก่าจะไม่ได้รับการแสดงผลขนาดเกิน 1080p ระบบจึงจะลดขนาดการแสดงผลของแอปเหล่านี้เป็น 1080p เมื่อจำเป็น

DROP_CLOSE_SYSTEM_DIALOGS

เปลี่ยนรหัส: 174664120
สถานะเริ่มต้น: เปิดใช้สําหรับแอปทั้งหมด

เราเลิกใช้งานการดำเนินการของ Intent ACTION_CLOSE_SYSTEM_DIALOGS ใน Android 12 เพื่อปรับปรุงการควบคุมของผู้ใช้เมื่อโต้ตอบกับแอปและระบบ

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ที่แอปปิดกล่องโต้ตอบของระบบไม่ได้

ENABLE_CHECKS_FOR_PRIVATE_FILES

รหัสการเปลี่ยนแปลง: 172100307
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

แอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปจะแทรกหรืออัปเดตไฟล์ส่วนตัวโดยใช้ผู้ให้บริการสื่อไม่ได้

ENABLE_DEFERRED_SCAN

รหัสการเปลี่ยนแปลง: 180326732
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

เปิดใช้ตัวเลือกนี้เพื่อเลื่อนการสแกนที่ทริกเกอร์เป็นส่วนหนึ่งของ MediaProvider#update()

ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION

รหัสการเปลี่ยนแปลง: 157233955
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ให้เปิดใช้READ_PHONE_STATEการปกป้องใน API ที่ค้นหาและแจ้งสถานะการโทร เช่น TelecomManager#getCallState, TelephonyManager.getCallStateForSubscription() และ TelephonyCallback.CallStateListener

ENABLE_GET_PHONE_ACCOUNT_PERMISSION_PROTECTION

รหัสการเปลี่ยนแปลง: 183407956
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ให้เปิดใช้การป้องกัน READ_PHONE_NUMBERS หรือ READ_PRIVILEGED_PHONE_STATE ใน getPhoneAccount(PhoneAccountHandle)

ENABLE_INCLUDE_ALL_VOLUMES

รหัสการเปลี่ยนแปลง: 182734110
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

เปิดใช้ตัวเลือกนี้เพื่อรวมแถวฐานข้อมูลของไฟล์จากวอลุ่มที่ยกเลิกการต่อเชื่อมไปเมื่อเร็วๆ นี้ใน MediaProvider#query

ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS

รหัสการเปลี่ยนแปลง: 178209446
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

เปิดใช้ตัวเลือกนี้เพื่ออนุญาตให้แอปที่มีสิทธิ์ Manifest.permission.MANAGE_EXTERNAL_STORAGE ส่งคำขอเข้าถึงพื้นที่เก็บข้อมูลภายนอกแบบข้อมูลดิบ

ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS

รหัสการเปลี่ยนแปลง: 185199076
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป การแจ้งเตือนที่ไม่แน่นอนทั้งหมดต้องมีกรอบเวลาขั้นต่ำ ซึ่งคาดว่าจะอยู่ที่ประมาณ 2-3 นาที ในทางปฏิบัติ การปลุกที่ต้องใช้หน้าต่างขนาดเล็กจะเหมือนกับการปลุกในเวลาที่แน่นอน และควรใช้ API ที่เกี่ยวข้องซึ่งมีให้ เช่น setExact(int, long, PendingIntent) การปลุกในเวลาที่ไม่แน่นอนที่มีระยะเวลาสั้นๆ ที่ระบุไว้จะทำให้หน้าต่างแสดงยาวขึ้น

ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES

รหัสการเปลี่ยนแปลง: 142191088
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

แอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปต้องประกาศการพึ่งพาไลบรารีแบบเนทีฟที่แชร์แบบสาธารณะซึ่งผู้ผลิตอุปกรณ์กำหนดโดยใช้แท็ก uses-native-library ใน AndroidManifest.xml หากไม่สามารถตอบสนองทรัพยากร Dependency ได้ เช่น ไม่มีทรัพยากร Dependency อยู่ ตัวจัดการแพ็กเกจจะไม่ติดตั้งแอปดังกล่าว คุณสามารถระบุการขึ้นต่อกันเป็นแบบไม่บังคับได้โดยใช้แอตทริบิวต์ android:required ในแท็ก ซึ่งในกรณีนี้การตอบสนองต่อทรัพยากรไม่ได้จะไม่หยุดการติดตั้ง

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

ENFORCE_STRICT_QUERY_BUILDER

รหัสการเปลี่ยนแปลง: 143231523
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ SQLiteQueryBuilder จะตรวจสอบการเลือกการค้นหา CalendarProvider2 ทั้งหมดเทียบกับอาร์กิวเมนต์ที่เป็นอันตราย

FGS_BG_START_RESTRICTION_CHANGE_ID

รหัสการเปลี่ยนแปลง: 170668199
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ข้อจำกัดนี้กำหนดเวลาที่แอปสามารถเริ่มบริการที่ทำงานอยู่เบื้องหน้าขณะทำงานอยู่เบื้องหลัง

FGS_START_EXCEPTION_CHANGE_ID

รหัสการเปลี่ยนแปลง: 174041399
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ระบบจะแสดง IllegalStateException หากแอปพยายามเริ่มบริการที่ทำงานอยู่เบื้องหน้าขณะทำงานอยู่เบื้องหลัง

FINISH_INPUT_NO_FALLBACK_CONNECTION

รหัสการเปลี่ยนแปลง: 156215187
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ให้ทํา InputConnection เมื่ออุปกรณ์กลายเป็น non-interactive ให้เสร็จสมบูรณ์

หาก input method ปัจจุบันเปิดใช้อยู่ การเชื่อมต่ออินพุตปัจจุบันจะกลายเป็นfinishedเมื่อใดก็ตามที่อุปกรณ์ไม่โต้ตอบ

หากไม่ได้เปิดใช้ ระบบจะปิดใช้งานการเชื่อมต่ออินพุตปัจจุบันโดยอัตโนมัติเมื่ออุปกรณ์ไม่โต้ตอบ และระบบจะส่งคู่ onFinishInput() และ onStartInput() เมื่ออุปกรณ์โต้ตอบอีกครั้ง

FORCE_DISABLE_HEVC_SUPPORT

รหัสการเปลี่ยนแปลง: 174227820
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

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

FORCE_ENABLE_HEVC_SUPPORT

รหัสการเปลี่ยนแปลง: 174228127
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

บังคับให้แอปรองรับความสามารถของสื่อ HEVC แอปควรประกาศความสามารถของสื่อที่รองรับในไฟล์ Manifest แต่ Flag นี้สามารถใช้เพื่อบังคับให้แอปรองรับ HEVC ซึ่งจะหลีกเลี่ยงการเปลี่ยนรูปแบบขณะเข้าถึงสื่อที่เข้ารหัสใน HEVC การตั้งค่า Flag นี้จะลบล้างค่าเริ่มต้นระดับระบบปฏิบัติการสำหรับแอป ระบบจะปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้น ซึ่งหมายความว่าค่าเริ่มต้นของระบบปฏิบัติการจะมีความสำคัญเหนือกว่า หากเปิดใช้ทั้ง Flag นี้และ FORCE_DISABLE_HEVC_SUPPORT ระบบปฏิบัติการจะไม่สนใจทั้ง 2 Flag

FORCE_NON_RESIZE_APP

รหัสการเปลี่ยนแปลง: 181136395
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

บังคับให้แพ็กเกจที่ใช้ไม่สามารถปรับขนาดได้

FORCE_RESIZE_APP

รหัสการเปลี่ยนแปลง: 174042936
สถานะเริ่มต้น: ปิดใช้สำหรับทุกแอป

บังคับให้แพ็กเกจที่ใช้ปรับขนาดได้ เราอนุญาตให้ปรับขนาดเฉพาะในโหมดหน้าต่างแบบเต็มหน้าจอ แต่ไม่บังคับให้แอปอยู่ในโหมดหลายหน้าต่างที่ปรับขนาดได้

HIDE_PROP_ICUBINARY_DATA_PATH

รหัสการเปลี่ยนแปลง: 171979766
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ระบบจะนำสิทธิ์เข้าถึงพร็อพเพอร์ตี้ android.icu.impl.ICUBinary.dataPath ออก

IGNORE_ALLOW_BACKUP_IN_D2D

รหัสการเปลี่ยนแปลง: 183147249
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ระบบจะไม่สนใจ android:allowBackup สําหรับแอปในระหว่างการย้ายข้อมูลแบบอุปกรณ์ต่ออุปกรณ์ (D2D)

IGNORE_FULL_BACKUP_CONTENT_IN_D2D

รหัสการเปลี่ยนแปลง: 180523564
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ระบบจะไม่สนใจกฎรวมและยกเว้นที่ระบุโดยใช้ android:fullBackupContent ในระหว่างการโอนจากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่ง (D2D)

IME_AUTOFILL_DEFAULT_SUPPORTED_LOCALES_IS_EMPTY

รหัสการเปลี่ยนแปลง: 169273070
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ตอนนี้ getSupportedLocales() จะแสดงรายการภาษาว่างเมื่อไม่ได้ตั้งค่าแทนที่จะแสดงภาษาของระบบเริ่มต้น

IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE

รหัสการเปลี่ยนแปลง: 158482162
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ระบบจะบังคับใช้สิทธิ์ BACKUP ที่จำเป็นสำหรับ isBackupServiceActive() ที่ฝั่งบริการ ไม่ใช่ฝั่งไคลเอ็นต์ใน BackupManager

KEYSTORE_OPERATION_CREATION_MAY_FAIL

รหัสการเปลี่ยนแปลง: 169897160
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ การสร้างการดำเนินการของคีย์สโตร์อาจไม่สำเร็จตามกลยุทธ์การตัดใหม่ คีย์สโตร์เคยทำงานภายใต้สมมติฐานที่ว่าการสร้างการดำเนินการเข้ารหัสจะประสบความสำเร็จเสมอ อย่างไรก็ตาม แบ็กเอนด์ของ KeyMint มีช่องการดำเนินการจํากัดเท่านั้น

เพื่อรักษาลักษณะของช่องการดำเนินการ "ไม่จำกัด" ไว้ โปรแกรมเดรัม Keystore จะตัดการดำเนินการที่ใช้ล่าสุดน้อยที่สุดออกหากไม่มีช่องการดำเนินการที่พร้อมใช้งาน การดำเนินการที่ดีจึงอาจสิ้นสุดลงก่อนเวลาอันควร ซึ่งทำให้ AndroidKeystore ไปจนถึงการปฏิเสธการให้บริการ (DoS) และการล็อกสตรีมแบบสดโดยไม่ได้ตั้งใจ ตัวอย่างเช่น หากแอปหลายแอปตื่นขึ้นพร้อมกันเนื่องจากการเพิ่มประสิทธิภาพการจัดการพลังงานและพยายามดำเนินการเกี่ยวกับคริปโต แอปเหล่านั้นจะเริ่มหยุดการดำเนินการของกันและกันโดยไม่คืบหน้าใดๆ

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

กลยุทธ์การตัดแต่ง: เราจะคำนวณค่าลบสำหรับผู้เรียกและการดำเนินการที่มีอยู่แต่ละรายการเพื่อค้นหาผู้สมัครที่เหมาะสม Malus จะเป็นค่าผกผันกับกำลังการตัด (ผู้เรียกใช้) หรือความต้านทานการตัด (การดำเนินการที่มีอยู่) ในการที่จะตัดการดำเนินการได้ ผู้เรียกต้องพบการดำเนินการที่มี Malus สูงกว่าการดำเนินการของตนเอง ดูรายละเอียดเพิ่มเติมเกี่ยวกับกลยุทธ์การตัดให้สั้นลงได้ที่การใช้งาน operation.rs ใน Android 11 (API ระดับ 30) และต่ำกว่า KeyStore2 จะสำรวจ Daemon ของคีย์สโตร์สำหรับสล็อตการดำเนินการฟรี สําหรับแอปที่กําหนดเป้าหมายเป็น Android 11 (API ระดับ 30) หรือต่ำกว่า การดำเนินการนี้จะยังคงดูเหมือนว่าการเข้ารหัสและการจัดเตรียมออบเจ็กต์ลายเซ็นสําเร็จเสมอ แต่อาจใช้เวลานานกว่าในการดําเนินการ Android ทุกเวอร์ชันจะได้รับประโยชน์จากการกําหนดเวลาช่วงเวลาการดําเนินการที่ยุติธรรมยิ่งขึ้นและมีโอกาสที่จะดําเนินการจนเสร็จสมบูรณ์ได้มากขึ้น

LOCK_DOWN_CLOSE_SYSTEM_DIALOGS

รหัสการเปลี่ยนแปลง: 174664365
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ระบบจะไม่ส่ง Intent.ACTION_CLOSE_SYSTEM_DIALOGS เว้นแต่แอปจะมีสิทธิ์ android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS ด้วย โปรดทราบว่านี่เป็น #DROP_CLOSE_SYSTEM_DIALOGS ที่มีข้อจำกัดมากกว่า ซึ่งคาดหวังว่าแอปจะหยุดส่ง Intent Intent.ACTION_CLOSE_SYSTEM_DIALOGS เมื่อแอปเริ่มกำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

LOCK_DOWN_COLLAPSE_STATUS_BAR

รหัสการเปลี่ยนแปลง: 173031413
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป จะต้องมีสิทธิ์ Manifest.permission.STATUS_BAR เพื่อยุบแผงแถบสถานะเนื่องด้วยเหตุผลด้านความปลอดภัย มัลแวร์ใช้ประโยชน์จากช่องโหว่นี้เพื่อไม่ให้ผู้ใช้เข้าถึงการแจ้งเตือนที่สำคัญได้

LOW_POWER_EXCEPTIONS

รหัสการเปลี่ยนแปลง: 168936375
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ออบเจ็กต์ LocationRequest ทั้งหมดที่ทำเครื่องหมายเป็นโหมดพลังงานต่ำจะแสดงข้อยกเว้นหากผู้เรียกใช้ไม่มีสิทธิ์ LOCATION_HARDWARE แทนที่จะยกเลิกส่วนโหมดพลังงานต่ำของคําขอโดยอัตโนมัติ

MISSING_EXPORTED_FLAG

รหัสการเปลี่ยนแปลง: 150232615
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป คุณต้องระบุค่าที่ชัดเจนสําหรับแอตทริบิวต์ android:exported ทุกครั้งที่กําหนดตัวกรอง Intent

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ที่การส่งออกคอมโพเนนต์ที่ปลอดภัยยิ่งขึ้น

NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE

รหัสการเปลี่ยนแปลง: 207557677
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 32) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 32) ขึ้นไป การจัดสรรฮีปแบบเนทีฟในกระบวนการ AppZygote และแอปสืบทอดจะใช้แท็กที่ไม่ใช่ 0 ในไบต์ที่สำคัญที่สุด

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ที่เคอร์เซอร์ที่ติดแท็ก

NATIVE_HEAP_ZERO_INIT

รหัสการเปลี่ยนแปลง: 178038272
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เปิดใช้การจัดสรรหน่วยความจําฮีปเนทีฟแบบเริ่มต้นที่ 0 โดยอัตโนมัติ

NATIVE_MEMTAG_ASYNC

รหัสการเปลี่ยนแปลง: 135772972
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เปิดใช้การตรวจสอบแท็กหน่วยความจำแบบอะซิงโครนัส (ASYNC) ในขั้นตอนนี้ Flag นี้จะมีผลกับฮาร์ดแวร์ที่รองรับ Memory Tagging Extension (MTE) ของ ARM เท่านั้น

NATIVE_MEMTAG_SYNC

เปลี่ยนรหัส: 177438394
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เปิดใช้การตรวจสอบแท็กหน่วยความจําแบบซิงค์ (SYNC) ในกระบวนการนี้ Flag นี้จะมีผลกับฮาร์ดแวร์ที่รองรับ Memory Tagging Extension (MTE) ของ ARM เท่านั้น หากเปิดใช้ทั้ง NATIVE_MEMTAG_ASYNC และตัวเลือกนี้ไว้ ตัวเลือกนี้จะมีความสำคัญเหนือกว่าและจะเปิดใช้ MTE ในโหมดซิงค์

NEVER_SANDBOX_DISPLAY_APIS

รหัสการเปลี่ยนแปลง: 184838306
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ แซนด์บ็อกซ์ของ Display API จะไม่มีผลกับกิจกรรมแถบดำด้านบน-ล่างของภาพหรือ SCM Display API จะยังคงระบุขอบเขต DisplayArea ต่อไป

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ในส่วนหน้าการเปลี่ยนแปลงลักษณะการทํางาน 12 รายการของ Android เกี่ยวกับ วิธีแสดงที่เลิกใช้งานแล้ว

NOTIFICATION_CANCELLATION_REASONS

รหัสการเปลี่ยนแปลง: 175319604
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

ช่วยให้ผู้ฟังการแจ้งเตือนเข้าใจเหตุผลการยกเลิกใหม่ที่มีความเฉพาะเจาะจงมากขึ้น

NOTIFICATION_TRAMPOLINE_BLOCK

รหัสการเปลี่ยนแปลง: 167676448
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

แอปที่กำหนดเป้าหมายเป็น Android 12 จะใช้บริการหรือ Broadcast Receiver เป็นแทรมโพลีนการแจ้งเตือนไม่ได้เพื่อปรับปรุงประสิทธิภาพของแอปและ UX

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ที่สร้าง Trampoline การแจ้งเตือนจากบริการหรือตัวรับการออกอากาศไม่ได้

NULL_TELEPHONY_THROW_NO_CB

รหัสการเปลี่ยนแปลง: 182185642
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

ใช้สำหรับตรวจสอบว่าเวอร์ชัน SDK เป้าหมายสำหรับกระบวนการปัจจุบันคือ Android 12 (API ระดับ 31) ขึ้นไปหรือไม่

ใช้กับวิธีการต่อไปนี้

OVERRIDE_MIN_ASPECT_RATIO

รหัสการเปลี่ยนแปลง: 174042980
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

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

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

OVERRIDE_MIN_ASPECT_RATIO_LARGE

รหัสการเปลี่ยนแปลง: 180326787
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ OVERRIDE_MIN_ASPECT_RATIO ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะตั้งค่าสัดส่วนภาพขั้นต่ำของกิจกรรมเป็นค่าขนาดใหญ่ตามที่ OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE กำหนด

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

รหัสการเปลี่ยนแปลง: 180326845
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

เมื่อเปิดใช้ OVERRIDE_MIN_ASPECT_RATIO ด้วย การเปิดใช้การเปลี่ยนแปลงนี้สำหรับแพ็กเกจจะตั้งค่าสัดส่วนภาพขั้นต่ำของกิจกรรมเป็นค่ากลางตามที่ OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE กำหนด

PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED

รหัสการเปลี่ยนแปลง: 160794467
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป คุณต้องระบุการเปลี่ยนแปลงของออบเจ็กต์ PendingIntent แต่ละรายการที่แอปของคุณสร้าง ข้อกำหนดเพิ่มเติมนี้จะช่วยปรับปรุงความปลอดภัยของแอป

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ที่ Intent ที่รอดำเนินการต้องประกาศการเปลี่ยนแปลง

PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT

รหัสการเปลี่ยนแปลง: 165573442
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

แอปผู้ดูแลระบบที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปจะใช้ DevicePolicyManager.setPasswordQuality(ComponentName, int) เพื่อตั้งค่าคุณภาพรหัสผ่านในอินสแตนซ์ DevicePolicyManager ที่ได้รับจากการเรียกใช้ DevicePolicyManager.getParentProfileInstance(ComponentName) ไม่ได้ แต่ควรใช้ DevicePolicyManager.setRequiredPasswordComplexity(int) เพื่อกำหนดข้อกำหนดของรหัสผ่านแบบหยาบทั่วทั้งอุปกรณ์แทน

RATE_LIMIT_TOASTS

รหัสการเปลี่ยนแปลง: 174840628
สถานะเริ่มต้น: เปลี่ยนการเปลี่ยนแปลงนี้ไม่ได้ ระบบจะบันทึกโดยเฟรมเวิร์กความเข้ากันได้เท่านั้น

เปิดใช้การจำกัดอัตราในการเรียกใช้ Toast.show() เพื่อไม่ให้ผู้ใช้ต้องรับข้อความแจ้งมากเกินไปในช่วงเวลาที่จำกัด การพยายามแสดงข้อความแจ้งมากกว่าที่อนุญาตในกรอบเวลาหนึ่งๆ จะส่งผลให้ระบบทิ้งข้อความแจ้งนั้น

REQUIRE_EXACT_ALARM_PERMISSION

รหัสการเปลี่ยนแปลง: 171306433
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป แอปต้องมีสิทธิ์ Manifest.permission.SCHEDULE_EXACT_ALARM จึงจะใช้ API ใดก็ตามในการตั้งปลุกในเวลาที่แน่นอนได้ เช่น setExactAndAllowWhileIdle(int, long, PendingIntent) และ setAlarmClock(AlarmClockInfo, PendingIntent)

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID

รหัสการเปลี่ยนแปลง: 182478738
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป แอปต้องมีสิทธิ์ Manifest.permission.READ_PHONE_STATE จึงจะเรียกใช้ TelephonyCallback.ActiveDataSubscriptionIdListener ได้

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_CELL_INFO

รหัสการเปลี่ยนแปลง: 184323934
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป แอปต้องมีสิทธิ์ Manifest.permission.READ_PHONE_STATE จึงจะเรียกใช้ TelephonyCallback.CellInfoListener ได้

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_DISPLAY_INFO

รหัสการเปลี่ยนแปลง: 183164979
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป แอปต้องมีสิทธิ์ Manifest.permission.READ_PHONE_STATE จึงจะเรียกใช้ TelephonyCallback.DisplayInfoListener ได้

RESTRICT_ADB_BACKUP

รหัสการเปลี่ยนแปลง: 171032338
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ระบบจะเปิด adb backup โดยอัตโนมัติสําหรับแอปที่ทํางานแบบแก้ไขข้อบกพร่องได้ (ตั้งค่า android:debuggable เป็น true) และจะไม่พร้อมใช้งานสําหรับแอปอื่นๆ

RESTRICT_DOMAINS

รหัสการเปลี่ยนแปลง: 175408749
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป คุณต้องใช้ App Links Verification API เวอร์ชันอัปเดต ข้อกำหนดนี้หมายความว่าแอปต้องประกาศโดเมนภายในตัวกรอง Intent ซึ่งมีข้อมูลต่อไปนี้ทั้งหมด

  • android:autoVerify="true"
  • Intent.ACTION_VIEW
  • Intent.CATEGORY_BROWSABLE
  • Intet.CATEGORY_DEFAULT
  • เฉพาะ IntentFilter.SCHEME_HTTP และ/หรือ IntentFilter.SCHEME_HTTPS โดยไม่มีแผนอื่นๆ

ใน Android เวอร์ชันก่อนหน้า Intent.CATEGORY_BROWSABLE ไม่ได้เป็นข้อกำหนด ระบบอนุญาตให้ใช้รูปแบบอื่นๆ และการตั้งค่า autoVerify เป็น true ในตัวกรอง Intent ใดๆ จะถือว่าได้ตั้งค่าตัวกรอง Intent ทั้งหมดเป็น autoVerify="true" โดยปริยาย

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

รหัสการเปลี่ยนแปลง: 151105954
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป บังคับให้กำหนด attributionTags ทั้งหมดที่ส่งไปยัง noteOp(String, int, String), noteProxyOp(String, String) และ startOp(String, int, String) ไว้ในไฟล์ Manifest ของแพ็กเกจซึ่งระบุเป็นพารามิเตอร์ของเมธอด

หากต้องการเปิดใช้การเปลี่ยนแปลงนี้ ทั้งแพ็กเกจที่เรียกใช้ noteOp(String, int, String) และแพ็กเกจที่ระบุเป็นพารามิเตอร์ของเมธอดจะต้องเปิดใช้การเปลี่ยนแปลงนี้

SELINUX_LATEST_CHANGES

รหัสการเปลี่ยนแปลง: 143539591
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ให้เลือกรับการเปลี่ยนแปลง SELinux ล่าสุด การปิดใช้การเปลี่ยนแปลงนี้สําหรับแอปที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปจะไม่มีผลใดๆ กับแอปที่ใช้รหัสผู้ใช้ที่แชร์

SETTINGS_API_V2

รหัสการเปลี่ยนแปลง: 178111421
สถานะเริ่มต้น: เปิดใช้สำหรับแอปทั้งหมด

ยังไม่ได้ใช้งาน API ค่ากำหนดของผู้ใช้ใหม่สำหรับการยืนยันโดเมนที่มีเครื่องหมาย autoVerify=true ในตัวกรอง Intent ของ AndroidManifest.xml ในตัวอย่างแพลตฟอร์มปัจจุบัน สำหรับตอนนี้ คุณจะดูตัวอย่างการเปลี่ยนแปลงค่ากำหนดของผู้ใช้ใหม่ได้โดยการเปิดใช้ ChangeId นี้ และใช้คำสั่ง adb shell pm set-app-links-user-selection และคำสั่งที่คล้ายกัน

USE_SHORT_FGS_USAGE_INTERACTION_TIME

รหัสการเปลี่ยนแปลง: 183972877
สถานะเริ่มต้น: เปิดใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป

สำหรับแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไป ให้กำหนดว่าจะใช้ระยะหมดเวลาที่สั้นลงหรือไม่ก่อนที่จะยกระดับที่เก็บข้อมูลสแตนด์บายเป็น ACTIVE เมื่อแอปเริ่มบริการที่ทำงานอยู่เบื้องหน้า