اندروید ۱۳ شامل فهرستهای بهروز شدهای از رابطهای کاربری محدود شده غیر SDK بر اساس همکاری با توسعهدهندگان اندروید و آخرین آزمایشهای داخلی است. در صورت امکان، قبل از محدود کردن رابطهای کاربری غیر SDK، مطمئن میشویم که جایگزینهای عمومی در دسترس هستند.
اگر برنامه شما اندروید ۱۳ را هدف قرار نمیدهد، ممکن است برخی از این تغییرات بلافاصله شما را تحت تأثیر قرار ندهند. با این حال، اگرچه در حال حاضر میتوانید از برخی رابطهای غیر SDK ( بسته به سطح API هدف برنامه خود ) استفاده کنید، استفاده از هر روش یا فیلد غیر SDK همیشه خطر بالای خرابی برنامه شما را به همراه دارد.
اگر مطمئن نیستید که برنامه شما از رابطهای غیر SDK استفاده میکند، میتوانید برنامه خود را آزمایش کنید تا متوجه شوید. اگر برنامه شما به رابطهای غیر SDK متکی است، باید برنامهریزی برای مهاجرت به جایگزینهای SDK را آغاز کنید. با این وجود، ما درک میکنیم که برخی از برنامهها موارد استفاده معتبری برای استفاده از رابطهای غیر SDK دارند. اگر نمیتوانید جایگزینی برای استفاده از رابط غیر SDK برای یک ویژگی در برنامه خود پیدا کنید، باید یک API عمومی جدید درخواست کنید .
فهرست تغییرات برای اندروید ۱۳
تغییرات لیست در اندروید ۱۳ در دسته بندی زیر قرار میگیرند:
- رابطهای غیر SDK که در اندروید ۱۲ (سطح API ۳۱) پشتیبانی نمیشدند و در اندروید ۱۳ مسدود شدهاند .
برای مشاهده لیست کاملی از تمام رابطهای غیر SDK برای اندروید ۱۳، فایل زیر را دانلود کنید:
فایل: hiddenapi-flags.csv
SHA-256 checksum: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3
رابطهای غیر SDK که اکنون در اندروید ۱۳ مسدود شدهاند
کد زیر تمام رابطهای غیر SDK که در اندروید ۱۲ (سطح API ۳۱) پشتیبانی نمیشدند و در اندروید ۱۳ (سطح API ۳۳) مسدود شدهاند را فهرست میکند. یعنی این رابطها متعلق به لیست max-target-s هستند، بنابراین برنامه شما فقط در صورتی میتواند از این رابطها استفاده کند که اندروید ۱۲ (سطح API ۳۱) یا پایینتر را هدف قرار دهد.
هدف ما این است که قبل از محدود کردن رابطهای غیر SDK، مطمئن شویم که جایگزینهای عمومی در دسترس هستند و درک میکنیم که برنامه شما ممکن است یک مورد استفاده معتبر برای استفاده از این رابطها داشته باشد. اگر رابطی که برنامه شما در نسخه قبلی از آن استفاده میکرد، اکنون در اندروید ۱۳ مسدود شده است، باید یک 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.