การอัปเดตข้อจำกัดของอินเทอร์เฟซที่ไม่ใช่ SDK ใน Android 13

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

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

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

แสดงรายการการเปลี่ยนแปลงสำหรับ Android 13

การเปลี่ยนแปลงรายการใน Android 13 แบ่งออกเป็นหมวดหมู่ต่อไปนี้

ดูรายการอินเทอร์เฟซทั้งหมดที่ไม่ใช่ SDK สำหรับ Android 13 ได้โดยดาวน์โหลด ไฟล์ต่อไปนี้:

ไฟล์: hiddenapi-flags.csv

ผลรวมตรวจสอบ SHA-256: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3

อินเทอร์เฟซที่ไม่ใช่ SDK ซึ่งตอนนี้ถูกบล็อกใน Android 13

ช่องโค้ดต่อไปนี้แสดงอินเทอร์เฟซที่ไม่ใช่ SDK ทั้งหมดที่ไม่รองรับ ใน Android 12 (API ระดับ 31) ที่ถูกบล็อกใน Android 13 (API ระดับ 33) นั่น อินเทอร์เฟซเหล่านี้อยู่ในรายการ max-target-s ดังนั้นแอปของคุณจะใช้ได้เฉพาะ อินเทอร์เฟซเหล่านี้หากกำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) หรือต่ำกว่า

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

Landroid/app/Activity;->setDisablePreviewScreenshots(Z)V # Use setRecentsScreenshotEnabled() instead.
Landroid/os/PowerManager;->isLightDeviceIdleMode()Z # Use isDeviceLightIdleMode() instead.
Landroid/os/Process;->setArgV0(Ljava/lang/String;)V # In general, do not try to change the process name. If you must change the process name (for instance, for debugging), you can use pthread_setname_np() instead, though be aware that doing this might confuse the system.
Landroid/view/accessibility/AccessibilityInteractionClient;->clearCache(I)V # Use android.accessibilityservice.AccessibilityService#clearCache() instead.