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

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

BLOCK_GPS_STATUS_USAGE

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

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

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) การเรียกกลับและแรงดันย้อนกลับที่อัตราเฟรมที่ถูกจำกั�� แอปใช้ 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 นี้จะลบล้างค่าเริ่มต้นระดับระบบปฏิบัติการ สำหรับแอป โดยค่าเริ่มต้น ระบบจะปิดใช้การตั้งค่านี้ ซึ่งหมายความว่าค่าเริ่มต้นของระบบปฏิบัติการ จะมีลำดับความสำคัญสูงกว่า หากเปิดใช้ทั้งแฟล็กนี้และ FORCE_ENABLE_HEVC_SUPPORT ระบบปฏิบัติการจะไม่สนใจ ทั้ง 2 แฟล็ก

FORCE_ENABLE_HEVC_SUPPORT

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

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

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
สถานะเริ่มต้น: ปิดใช้สำหรับแอปทั้งหมด

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

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

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

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

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

NATIVE_HEAP_ZERO_INIT

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

เปิดใช้การเริ่มต้นเป็น 0 โดยอัตโนมัติสำหรับการจัดสรรหน่วยความจำฮีปดั้งเดิม

NATIVE_MEMTAG_ASYNC

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

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

NATIVE_MEMTAG_SYNC

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

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

NEVER_SANDBOX_DISPLAY_APIS

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

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

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

NOTIFICATION_CANCELLATION_REASONS

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

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

NOTIFICATION_TRAMPOLINE_BLOCK

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

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

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

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 แต่ละรายการที่แอปสร้างขึ้น ข้อกำหนดเพิ่มเติมนี้จะช่วยปรับปรุงการรักษาความปลอดภัยของแอป

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

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