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

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

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

حریم خصوصی

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

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

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

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

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

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

امنیت

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

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

تخصیص‌دهنده‌ی مقاوم‌سازی‌شده‌ی اسکودو

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

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

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

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

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

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

اندروید ۱۱ رابط‌های برنامه‌نویسی کاربردی (API) 5G را اضافه می‌کند تا به برنامه‌های شما امکان افزودن ویژگی‌های پیشرفته را بدهد. برای آزمایش ویژگی‌ها هنگام افزودن آنها، می‌توانید از قابلیت‌های جدید شبیه‌ساز SDK اندروید استفاده کنید. این قابلیت جدید در نسخه ۳۰.۰.۲۲ شبیه‌ساز اضافه شده است. انتخاب تنظیمات شبکه ۵G، TelephonyDisplayInfo را روی OVERRIDE_NETWORK_TYPE_NR_NSA تنظیم می‌کند، پهنای باند تخمینی را تغییر می‌دهد و به شما امکان می‌دهد meteredness را تنظیم کنید تا تأیید کنید که برنامه شما به طور مناسب به تغییرات در وضعیت NET_CAPABILITY_TEMPORARILY_NOT_METERED پاسخ می‌دهد.

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

اشکال‌زدایی محدودیت‌های فراخوانی API برنامه‌ریز شغلی

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

پاک‌کننده‌ی توصیف‌گر فایل (fdsan)

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

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

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

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

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

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

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

نسخه ۱ کتابخانه مشترک Maps در اندروید ۱۱ به طور کامل حذف شده است. این کتابخانه قبلاً منسوخ شده بود و عملکرد آن برای برنامه‌ها در اندروید ۱۰ متوقف شده بود. برنامه‌هایی که قبلاً برای دستگاه‌های دارای اندروید ۹ (سطح API ۲۸) یا پایین‌تر به این کتابخانه مشترک متکی بودند، باید به جای آن از Maps SDK برای اندروید استفاده کنند.

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

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

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

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

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

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

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

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