تغییرات رفتار: همه برنامه ها

پلتفرم اندروید 11 شامل تغییرات رفتاری است که ممکن است بر برنامه شما تأثیر بگذارد. تغییرات رفتاری زیر برای همه برنامه‌ها هنگام اجرا بر روی Android 11 اعمال می‌شود، صرف نظر از targetSdkVersion . شما باید برنامه خود را آزمایش کنید و سپس آن را در صورت لزوم تغییر دهید تا در صورت لزوم از این موارد به درستی پشتیبانی شود.

حتماً فهرستی از تغییرات رفتاری را نیز مرور کنید که فقط بر برنامه‌هایی که اندروید 11 را هدف قرار می‌دهند تأثیر می‌گذارد .

حریم خصوصی

اندروید 11 تغییرات و محدودیت هایی را برای افزایش حریم خصوصی کاربر معرفی می کند، از جمله موارد زیر:

  • مجوزهای یکبار مصرف : به کاربران این امکان را می دهد که به موقعیت مکانی، میکروفون و مجوزهای دوربین دسترسی موقت بیشتری بدهند.
  • نمایان بودن گفتگوی مجوز : رد مکرر یک مجوز به معنای "دوباره نپرس" است.
  • حسابرسی دسترسی به داده ها : بینش هایی را در مورد جایی که برنامه شما به داده های خصوصی دسترسی دارد، هم در کد برنامه خود و هم در کد کتابخانه های وابسته به دست آورید.
  • مجوزهای پنجره هشدار سیستم : در صورت درخواست، به کلاس های خاصی از برنامه ها به طور خودکار مجوز SYSTEM_ALERT_WINDOW اعطا می شود. همچنین، اهدافی که شامل کنش قصد ACTION_MANAGE_OVERLAY_PERMISSION هستند، همیشه کاربران را در تنظیمات سیستم به یک صفحه نمایش می‌آورند.
  • شناسه های سیم کارت دائمی : در اندروید 11 و بالاتر، دسترسی به ICCIDهای غیر قابل تنظیم مجدد از طریق روش getIccId() محدود شده است. متد یک رشته خالی و غیر تهی را برمی گرداند. برای شناسایی منحصر به فرد یک سیم کارت نصب شده روی دستگاه، به جای آن از متد getSubscriptionId() استفاده کنید. شناسه اشتراک یک مقدار شاخص (با شروع از 1) برای شناسایی منحصر به فرد سیم‌کارت‌های نصب شده، از جمله فیزیکی و الکترونیکی ارائه می‌کند. مقدار این شناسه برای سیم کارت معین ثابت است مگر اینکه دستگاه به حالت کارخانه بازنشانی شود.

برای کسب اطلاعات بیشتر به صفحه حریم خصوصی مراجعه کنید.

اعلان های مواجهه

اندروید 11 پلتفرم را با در نظر گرفتن سیستم اعلان مواجهه به روز می کند. کاربران اکنون می‌توانند بدون نیاز به روشن کردن تنظیمات مکان دستگاه، برنامه‌های اعلان‌های مواجهه را در اندروید 11 اجرا کنند. این یک استثنا فقط برای سیستم اعلان های مواجهه است، زیرا به گونه ای طراحی شده است که برنامه هایی که از آن استفاده می کنند نمی توانند مکان دستگاه را از طریق اسکن بلوتوث استنتاج کنند.

برای محافظت از حریم خصوصی کاربر، همه برنامه‌های دیگر همچنان از انجام اسکن بلوتوث منع می‌شوند، مگر اینکه تنظیمات مکان دستگاه روشن باشد و کاربر به آنها اجازه مکان اعطا کرده باشد. می‌توانید در پست به‌روزرسانی ما درباره اعلان‌های مواجهه بیشتر بخوانید.

امنیت

سوکت های SSL به طور پیش فرض از موتور Conscrypt SSL استفاده می کنند

پیاده سازی پیش فرض SSLSocket اندروید بر اساس Conscrypt است. از اندروید 11، این پیاده سازی به صورت داخلی بر روی SSLEngine Conscrypt ساخته شده است.

Scudo Hardened Allocator

اندروید 11 از Scudo Hardened Allocator به صورت داخلی برای سرویس دهی تخصیص پشته استفاده می کند. Scudo قادر به شناسایی و کاهش برخی از انواع نقض ایمنی حافظه است. اگر خرابی های مربوط به Scudo (به عنوان مثال، Scudo ERROR: ) را در گزارش های خرابی اصلی مشاهده می کنید، به مستندات عیب یابی Scudo مراجعه کنید.

آمار استفاده از برنامه

برای محافظت بهتر از کاربران، Android 11 آمار استفاده از برنامه هر کاربر را در حافظه رمزگذاری شده اعتبارنامه ذخیره می‌کند. بنابراین، نه سیستم و نه هیچ برنامه‌ای نمی‌توانند به آن داده‌ها دسترسی داشته باشند، مگر اینکه isUserUnlocked() true برگرداند که پس از انجام یکی از موارد زیر رخ می‌دهد:

  • کاربر برای اولین بار پس از راه اندازی سیستم، قفل دستگاه خود را باز می کند.
  • کاربر به حساب خود در دستگاه سوئیچ می کند.

اگر برنامه شما قبلاً به نمونه‌ای از UsageStatsManager متصل شده است، بررسی کنید که پس از باز کردن قفل دستگاه توسط کاربر، روش‌هایی را روی این شیء فراخوانی کنید. در غیر این صورت، API اکنون مقادیر null یا خالی را برمی گرداند.

پشتیبانی از شبیه ساز برای 5G

Android 11 API های 5G را اضافه می کند تا برنامه های شما را قادر می سازد ویژگی های پیشرفته را اضافه کنند. برای آزمایش ویژگی‌ها در حین افزودن آن‌ها، می‌توانید از قابلیت‌های جدید شبیه‌ساز Android SDK استفاده کنید. قابلیت جدید در Emulator نسخه 30.0.22 اضافه شد. انتخاب تنظیم شبکه 5G TelephonyDisplayInfo را روی OVERRIDE_NETWORK_TYPE_NR_NSA تنظیم می کند، پهنای باند تخمینی را تغییر می دهد و به شما امکان می دهد اندازه گیری را تنظیم کنید تا تأیید کنید که برنامه شما به تغییرات وضعیت NET_CAPABILITY_TEMPORARILY_NOT_METERED پاسخ مناسب می دهد.

عملکرد و اشکال زدایی

تماس JobScheduler API اشکال زدایی را محدود می کند

Android 11 پشتیبانی اشکال‌زدایی از برنامه‌ها را برای شناسایی فراخوان‌های بالقوه JobScheduler API ارائه می‌دهد که از محدودیت‌های نرخ معینی فراتر رفته‌اند. توسعه دهندگان می توانند از این تسهیلات برای شناسایی مشکلات بالقوه عملکرد استفاده کنند. برای برنامه‌هایی که ویژگی مانیفست debuggable را روی true تنظیم کرده‌اند، فراخوان‌های JobScheduler API فراتر از محدودیت‌های نرخ، RESULT_FAILURE برمی‌گردانند. محدودیت ها به گونه ای تنظیم شده اند که موارد استفاده مشروع نباید تحت تأثیر قرار گیرد.

ضدعفونی کننده توصیف کننده فایل (fdsan)

اندروید 10 fdsan (عفونی کننده توصیفگر فایل) را معرفی کرد. fdsan سوء استفاده از مالکیت توصیفگر فایل مانند استفاده پس از بسته شدن و دوبار بستن را تشخیص می دهد. حالت پیش‌فرض fdsan در اندروید 11 در حال تغییر است. fdsan اکنون با تشخیص خطا متوقف می‌شود. رفتار قبلی ثبت یک هشدار و ادامه دادن بود. اگر خرابی های ناشی از fdsan را در برنامه خود مشاهده می کنید، به fdsan documentation مراجعه کنید.

محدودیت های رابط غیر SDK

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

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

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

برای کسب اطلاعات بیشتر در مورد تغییرات این نسخه از اندروید، به‌روزرسانی‌های محدودیت‌های رابط غیر SDK در Android 11 را ببینید. برای کسب اطلاعات بیشتر در مورد رابط های غیر SDK به طور کلی، به محدودیت ها در رابط های غیر SDK مراجعه کنید.

کتابخانه مشترک Maps v1 حذف شد

نسخه 1 کتابخانه مشترک Maps در Android 11 کاملاً حذف شده است. این کتابخانه قبلاً منسوخ شده بود و برای برنامه‌های Android 10 کار نمی‌کرد. برنامه‌هایی که قبلاً به این کتابخانه مشترک برای دستگاه‌های دارای Android 9 (سطح API 28) یا پایین‌تر متکی بودند، باید استفاده کنند. در عوض Maps SDK برای اندروید .

تعامل با سایر برنامه ها

URI های محتوا را به اشتراک بگذارید

اگر برنامه شما یک URI محتوا را با برنامه دیگری به اشتراک می‌گذارد، هدف باید با تنظیم حداقل یکی از پرچم‌های هدف زیر، مجوزهای دسترسی به URI را اعطا کند : FLAG_GRANT_READ_URI_PERMISSION و FLAG_GRANT_WRITE_URI_PERMISSION . به این ترتیب، اگر برنامه دیگر اندروید 11 را هدف قرار دهد، همچنان می‌تواند به URI محتوا دسترسی داشته باشد. حتی زمانی که URI محتوا با ارائه‌دهنده محتوایی مرتبط است که برنامه شما متعلق به آن نیست، برنامه شما باید حاوی پرچم‌های هدف باشد.

اگر برنامه شما مالک ارائه‌دهنده محتوایی است که با URI محتوا مرتبط است، بررسی کنید که ارائه‌دهنده محتوا صادر نشده باشد . ما قبلاً این بهترین روش امنیتی را توصیه می کنیم.

بارگذاری کتابخانه

بارگیری کتابخانه مشترک ICU با مسیر مطلق

برنامه‌هایی که API 28 و پایین‌تر را هدف قرار می‌دهند، نمی‌توانند dlopen(3) برای بارگیری libicuuc با مسیر مطلق "/system/lib/libicuuc.so" استفاده کنند. برای آن برنامه‌ها، dlopen("/system/lib/libicuuc.so", ...) یک دسته تهی برمی‌گرداند.

در عوض، برای بارگیری کتابخانه، لطفاً از نام کتابخانه به عنوان نام فایل استفاده کنید، به عنوان مثال dlopen("libicuuc.so", ...) .