به‌روزرسانی‌های محدودیت‌های رابط غیر SDK در Android 13

Android 13 شامل لیست های به روز شده از رابط های غیر SDK محدود شده بر اساس همکاری با توسعه دهندگان اندروید و آخرین آزمایش داخلی است. در صورت امکان، قبل از اینکه رابط‌های غیر SDK را محدود کنیم، مطمئن می‌شویم که جایگزین‌های عمومی در دسترس هستند.

اگر برنامه شما اندروید 13 را هدف قرار نمی دهد، ممکن است برخی از این تغییرات فوراً روی شما تأثیر نگذارند. با این حال، در حالی که در حال حاضر می‌توانید از برخی رابط‌های غیر SDK ( بسته به سطح API هدف برنامه‌تان ) استفاده کنید، استفاده از هر روش یا فیلد غیر SDK همیشه خطر شکستن برنامه شما را بالا می‌برد.

اگر مطمئن نیستید که برنامه شما از رابط های غیر SDK استفاده می کند، می توانید برنامه خود را آزمایش کنید تا متوجه شوید. اگر برنامه شما به رابط‌های غیر SDK متکی است، باید برنامه‌ریزی برای انتقال به جایگزین‌های SDK را شروع کنید. با این وجود، می‌دانیم که برخی از برنامه‌ها دارای موارد استفاده معتبر برای استفاده از رابط‌های غیر SDK هستند. اگر نمی توانید جایگزینی برای استفاده از یک رابط غیر SDK برای یک ویژگی در برنامه خود پیدا کنید، باید یک API عمومی جدید درخواست کنید .

لیست تغییرات برای اندروید 13

تغییرات لیست در اندروید 13 در دسته بندی زیر قرار می گیرد:

برای لیست کامل تمام رابط های غیر SDK برای اندروید 13، فایل زیر را دانلود کنید:

فایل: hiddenapi-flags.csv

SHA-256 checksum: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3

رابط های غیر SDK که اکنون در Android 13 مسدود شده اند

جعبه کد زیر تمام رابط‌های غیر SDK را که در Android 12 (سطح API 31) پشتیبانی نمی‌شوند و در Android 13 (سطح API 33) مسدود شده‌اند، فهرست می‌کند. یعنی این رابط‌ها به فهرست max-target-s تعلق دارند، بنابراین برنامه شما تنها در صورتی می‌تواند از این رابط‌ها استفاده کند که اندروید 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.