การเปลี่ยนแปลงเฟรมเวิร์กความเข้ากันได้ (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 เมื่อแอปเริ่มบริการที่ทำงานอยู่เบื้องหน้าหรือไม่