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

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 เมื่อแอปอยู่ในสถานะการให้สิทธิ์ถูกปฏิเสธและพยายามส่งข้อความไปยังนาโนแอป

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

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

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

กลยุทธ์การตัดแต่ง: เราจะคำนวณค่าลบสำหรับผู้เรียกและการดำเนินการที่มีอยู่แต่ละรายการเพื่อค้นหาผู้สมัครที่เหมาะสม Malus จะเป็นค่าผกผันกับกำลังการตัด (ผู้เรียกใช้) หรือความต้านทานการตัด (การดำเนินการที่มีอยู่) ในการที่จะตัดการดำเนินการได้ ผู้เรียกต้องพบการดำเนินการที่มี Malus สูงกว่าการดำเนินการของตนเอง ดูรายละเอียดเพิ่มเติมเกี่ยวกับกลยุทธ์การตัดแต่งได้ที่การใช้งาน operation.rs ใน Android 11 (API ระดับ 30) และต่ำกว่า KeyStore2 จะตรวจสอบคีย์สโตร์เดรัมเพื่อหาช่องการดำเนินการว่าง สำหรับแอปที่กำหนดเป้าหมายเป็น 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 และกระบวนการที่สืบทอดจาก AppZygote จะใช้แท็กที่ไม่ใช่ศูนย์ในไบต์สําคัญที่สุด

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

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 มีผลกับกิจกรรม Letterbox หรือ 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 เป็น Trampoline ของข้อความแจ้งไม่ได้ เพื่อปรับปรุงประสิทธิภาพของแอปและ 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
สถานะเริ่มต้น: เปิดใช้สำหรับแอปทั้งหมด

ยังไม่มีการใช้ User Preference 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 เมื่อแอปเริ่มบริการที่ทำงานอยู่เบื้องหน้าหรือไม่