وقتی فایل APK بارگذاری میکنید، این فایل باید الزامات سطح میانای برنامهسازی کاربردی هدف Google Play را برآورده کند.
از ۳۱ اوت ۲۰۲۶:
- برنامههای جدید و بهروزرسانیهای برنامه باید Android 16 (سطح میانای برنامهسازی کاربردی ۳۶) یا بالاتر را هدف قرار دهند تا بتوانند به Google Play ارسال شوند؛ بهجز برنامههای Wear OS و «سیستمعامل Android Automotive» که باید Android 15 (سطح میانای برنامهسازی کاربردی ۳۵) یا بالاتر را هدف قرار دهند، و برنامههای Android TV و Android XR که باید Android 14 (سطح میانای برنامهسازی کاربردی ۳۴) یا بالاتر را هدف قرار دهند.
- برنامههای موجود باید Android نسخه ۱۵ (سطح میانای برنامهسازی کاربردی ۳۵) یا بالاتر را هدف قرار دهند تا برای کاربران جدید در دستگاههایی که سیستمعامل Android بالاتر از سطح میانای برنامهسازی کاربردی هدف برنامهتان دارند دردسترس باقی بمانند. برنامههایی که Android 14 (سطح میانای برنامهسازی کاربردی ۳۴) یا پایینتر را هدف قرار میدهند، ازجمله Android 13 (سطح میانای برنامهسازی کاربردی ۳۳) یا پایینتر برای Wear OS، Android TV، و Android XR، و Android 12 (سطح میانای برنامهسازی کاربردی ۳۱) یا پایینتر برای Android Automotive OS، فقط در دستگاههایی که سیستمعامل Android آنها همان سطح میانای برنامهسازی کاربردی هدف برنامه شما یا پایینتر از آن است دردسترس خواهند بود.
اگر برای بهروزرسانی برنامهتان به زمان بیشتری نیاز دارید، میتوانید درخواست کنید مهلت زمانی تا ۱ نوامبر ۲۰۲۶ تمدید شود. اواخر امسال میتوانید به فرمهای تمدید برنامهتان در «کنسول Play» دسترسی پیدا کنید.
استثنائات این الزامات عبارتند از:
- برنامههای خصوصی دائمی که به کاربران سازمان خاصی محدود شدهاند و فقط برای توزیع داخلی درنظر گرفته شدهاند.
چرا کیتهای توسعه نرمافزار جدیدتر را هدف قرار دهیم؟
هر نسخه جدید Android تغییراتی را معرفی میکند که بهبودهایی در امنیت و عملکرد ایجاد میکند و تجربه کاربری Android را ارتقا میدهد. برخیاز این تغییرات فقط
برای برنامههایی اعمال میشود که صراحتاً ازطریق مشخصه مانیفست targetSdkVersion (که بهعنوان سطح میانای برنامهسازی کاربردی هدف نیز شناخته میشود) اعلام پشتیبانی میکنند.
پیکربندی برنامه برای هدف قرار دادن سطح میانای برنامهسازی کاربردی اخیر تضمین میکند که کاربران میتوانند از این بهبودها بهرهمند شوند، درحالیکه برنامه شما همچنان میتواند در نسخههای قدیمیتر Android اجرا شود. هدفیابی سطح میانای برنامهسازی کاربردی اخیر همچنین به برنامه شما امکان میدهد از جدیدترین ویژگیهای پلاتفرم برای جلب رضایت کاربران استفاده کند. علاوهبراین، از Android 10 (سطح میانای برنامهسازی کاربردی ۲۹)، کاربران وقتی برنامهای را برای اولینبار راهاندازی میکنند، اگر برنامه Android 5.1 (سطح میانای برنامهسازی کاربردی ۲۲) یا پایینتر را هدف قرار دهد، هشداری میبینند.
این سند نکات مهمی را که باید برای بهروزرسانی سطح میانای برنامهسازی کاربردی هدف خود بدانید تا با الزامات Google Play مطابقت داشته باشد، برجسته میکند. بسته به نسخهای که به آن مهاجرت میکنید، دستورالعملهای بخشهای زیر را ببینید.
انتقال از Android 12 و بالاتر (سطح میانای برنامهسازی کاربردی ۳۱) به نسخهای جدیدتر
برای بهروزرسانی برنامهتان بهمنظور هدفیابی نسخه جدیدتری از Android، فهرست تغییرات رفتاری مربوطه را دنبال کنید:
- تغییرات رفتار Android 13
- تغییرات رفتاری Android 14
- تغییرات رفتاری Android 15
- تغییرات رفتاری Android 16
انتقال از Android 11 (میانای برنامهسازی کاربردی سطح ۳۰) به Android 12 (میانای برنامهسازی کاربردی سطح ۳۱)
امنیت و اجازهها
- بلوتوث: باید اظهارنامههای اجازههای
BLUETOOTHوBLUETOOTH_ADMINرا با اجازههایBLUETOOTH_SCAN،BLUETOOTH_ADVERTISE، یاBLUETOOTH_CONNECTجایگزین کنید. دیگر نیازی نیست برای عملیات بلوتوث، درخواست اجازه زمان اجرایLOCATIONارسال کنید. - مکان: کاربران میتوانند از برنامهها درخواست کنند که فقط اطلاعات مکان تقریبی را بازیابی کنند. هرزمان که
ACCESS_FINE_LOCATIONرا درخواست میکنید، باید اجازهACCESS_COARSE_LOCATIONرا درخواست کنید.- فیلترهای هدف: اگر برنامهتان حاوی فعالیتها، سرویسها، یا گیرندههای رویداد ثبتشده است که از فیلترهای هدف استفاده میکنند، باید بهطور صریح مشخصه android:exported را برای این مؤلفهها اعلام کنید.
- خواب زمستانی: اگر از برنامهها برای مدتی استفاده نشود، ممکن است در حالت خواب زمستانی قرار بگیرند. در حالت خواب زمستانی، اجازههای زمان اجرای برنامه و حافظه نهان آن بازنشانی میشود و نمیتوانید کارها یا هشدارها را اجرا کنید. میتوانید وضعیت خواب زمستانی برنامهتان را بررسی کنید.
- تغییرپذیری قصد معوق: باید تغییرپذیری هر شیء PendingIntent را که برنامهتان ایجاد میکند مشخص کنید.
تجربه کاربری
- اعلانهای سفارشی: اعلانهای دارای نماهای محتوای سفارشی دیگر از کل فضای اعلان استفاده نخواهند کرد؛ درعوض، سیستم از الگوی استانداردی استفاده میکند. این الگو تضمین میکند که اعلانهای سفارشی در همه حالتها
تزیین یکسانی با سایر اعلانها داشته باشند. این رفتار
تقریباً مشابه رفتار
Notification.DecoratedCustomViewStyleاست. - تغییرات درستیسنجی «پیوندهای برنامه Android»: هنگام استفاده از درستیسنجی «پیوند برنامه Android»، مطمئن شوید فیلترهای قصد شما شامل دسته BROWSABLE باشد و از طرح HTTPS پشتیبانی کند.
عملکرد
محدودیتهای راهاندازی سرویس پیشزمینهای: برای هدفیابی Android 12 یا بالاتر، برنامهتان نمیتواند سرویسهای پیشزمینهای را درحین اجرا در پسزمینه راهاندازی کند، بهجز در چند مورد خاص. اگر برنامهای تلاش کند درحین اجرا در پسزمینه، سرویس پیشزمینهای راهاندازی کند، استثنایی رخ میدهد (بهجز چند مورد خاص).
هنگامی که برنامهتان در پسزمینه اجرا میشود، بهتر است از WorkManager برای زمانبندی و شروع کار تسریعشده استفاده کنید. برای تکمیل کنشهای حساس به زمان که کاربر درخواست میکند، سرویسهای پیشزمینهای را در هشدار دقیق شروع کنید.
محدودیتهای ترامپولین اعلان: وقتی کاربران روی اعلانها تکضرب میزنند، برخیاز برنامهها با راهاندازی مؤلفه برنامهای که فعالیت را شروع میکند پاسخ میدهند که کاربر آن را میبیند و با آن تعامل برقرار میکند. این مؤلفه برنامه بهعنوان ترامپولین اعلان شناخته میشود.
برنامهها نباید فعالیتها را از سرویسها یا گیرندههای رویداد ثبتشدهای که بهعنوان ترامپولین اعلان استفاده میشوند شروع کنند. پساز اینکه کاربر روی اعلان یا دکمه کنش درون اعلان تکضرب میزند، برنامه شما نمیتواند
startActivity()را در سرویس یا گیرنده رویداد ثبتشده فراخوانی کند.
مجموعه کامل تغییراتی را که بر برنامههای هدف Android 12 (سطح میانای برنامهسازی کاربردی ۳۱) تأثیر میگذارد مشاهده کنید.
انتقال از نسخههای پایینتر از Android 11 (سطح میانای برنامهسازی کاربردی ۳۰)
نسخه Android را که میخواهید از آن مهاجرت کنید انتخاب کنید:
انتقال به Android 5 (سطح میانای برنامهسازی کاربردی ۲۱)
برای اطمینان از اینکه برنامهتان تغییرات معرفیشده در این نسخههای پخش را درنظر گرفته است، به صفحه «تغییرات رفتار» مربوط به هریک از نسخههای پخش زیر مراجعه کنید:
- Android 5.0 (سطح میانای برنامهسازی کاربردی ۲۱)
- Android 4.4 (سطح میانای برنامهسازی کاربردی ۱۹).
- Android 4.1.x (سطح میانای برنامهسازی کاربردی ۱۶).
با دنبال کردن دستورالعملهای بخش بعدی ادامه دهید.
انتقال به Android 6 (سطح میانای برنامهسازی کاربردی ۲۳)
ملاحظات زیر برای برنامههایی که Android نسخه ۶.۰ و نسخههای بالاتر پلاتفرم را هدف قرار میدهند اعمال میشود:
-
-
اجازههای خطرناک فقط در زمان اجرا اعطا میشوند. جریانهای واسط کاربر شما باید امکان اعطای این اجازهها را فراهم کند.
-
هرجا ممکن بود، مطمئن شوید برنامهتان برای رسیدگی به رد درخواستهای اجازه آماده است. برای مثال، اگر کاربری درخواست دسترسی به GPS دستگاه را رد کرد، مطمئن شوید برنامهتان روش دیگری برای ادامه دادن دارد.
-
برای مشاهده فهرست کامل تغییرات معرفیشده در Android نسخه ۶.۰ (سطح میانای برنامهسازی کاربردی ۲۳)، به صفحه تغییرات رفتاری برای آن نسخه از پلاتفرم مراجعه کنید.
با دنبال کردن دستورالعملهای بخش بعدی ادامه دهید.
انتقال به Android 7 (سطح میانای برنامهسازی کاربردی ۲۴)
ملاحظات زیر برای برنامههایی که Android نسخه ۷.۰ و نسخههای بالاتر پلاتفرم را هدف قرار میدهند اعمال میشود:
-
Doze و حالت آماده بهکار برنامه
طراحی برای رفتارهای شرحدادهشده در بهینهسازی برای «حالت چرت» و «حالت آمادهبهکار برنامه»، که شامل تغییرات افزایشی معرفیشده در چندین نسخه پلاتفرم است.
وقتی دستگاه در «حالت چرت زدن» و «حالت آمادهبهکار برنامه» باشد، سیستم بهصورت زیر عمل میکند:
- دسترسی به شبکه را محدود میکند
- زنگهای ساعت، همگامسازیها، و کارها را بهتعویق میاندازد
- اسکنهای GPS و Wi-Fi را محدود میکند
- پیامهای با اولویت عادی پیامرسانی ابریِ Firebase را محدود میکند.
-
تغییرات اجازه
- سیستم دسترسی به دایرکتوریهای خصوصی برنامه را محدود میکند.
-
نمایان کردن
file://URI در خارج از برنامه شما باعث راهاندازیFileUriExposedExceptionمیشود. اگر لازم است فایلها را خارج از برنامهتان همرسانی کنید،FileProviderرا پیادهسازی کنید
-
سیستم پیوند دادن به کتابخانههای غیر NDK را ممنوع میکند.
برای مشاهده فهرست کامل تغییرات معرفیشده در Android 7.0 (سطح API ۲۴)، به صفحه تغییرات رفتاری برای آن نسخه از پلاتفرم مراجعه کنید.
با دنبال کردن دستورالعملهای بخش بعدی ادامه دهید.
انتقال به Android 8 (سطح میانای برنامهسازی کاربردی ۲۶)
ملاحظات زیر برای برنامههایی که Android 8.0 و نسخههای بالاتر پلاتفرم را هدف قرار میدهند اعمال میشود:
-
محدودیتهای اجرای پسزمینه
-
سیستم سرویسهای برنامههایی را که در پیشزمینه اجرا نمیشوند محدود میکند.
-
startService()اکنون وقتی برنامهای سعی میکند آن را درحالیکهstartService()ممنوع است فراخوانی کند، استثنا قائل میشود. -
برای شروع سرویسهای پیشزمینهای، برنامه باید از
startForeground()وstartForegroundService()استفاده کند. - تغییرات ایجادشده در JobScheduler API را که در صفحه تغییرات رفتاری Android 8.0 (سطح API ۲۶) مستند شده است بهدقت مرور کنید.
- پیامرسانی ابریِ Firebase به نسخه ۱۰.۲.۱ کیت توسعه نرمافزار خدمات Google Play یا بالاتر نیاز دارد.
- هنگام استفاده از پیامرسانی ابری Firebase، تحویل پیام مشمول محدودیتهای اجرای پسزمینه است. وقتی کار پسزمینه پساز دریافت پیام ضروری است، مثلاً برای انجام همگامسازی دادههای پسزمینه، برنامهتان باید بهجای آن بااستفاده از Firebase Job Dispatcher یا JobIntentService کارها را زمانبندی کند. برای اطلاعات بیشتر، به اسناد پیامرسانی ابری Firebase مراجعه کنید.
-
-
همهفرستیهای غیرصریح
-
همهفرستیهای غیرصریح محدود شدهاند. برای کسب اطلاعات درباره مدیریت رویدادهای پسزمینه، به مستندات مربوط به میانای برنامهسازی کاربردی
JobSchedulerمراجعه کنید.
-
همهفرستیهای غیرصریح محدود شدهاند. برای کسب اطلاعات درباره مدیریت رویدادهای پسزمینه، به مستندات مربوط به میانای برنامهسازی کاربردی
-
محدودیتهای مکان پسزمینهای
-
برنامههایی که در پسزمینه اجرا میشوند دسترسی محدودی به دادههای مکان دارند.
- در دستگاههای دارای خدمات Google Play، از ارائهدهنده مکان تلفیقی برای دریافت بهروزرسانیهای دورهای مکان استفاده کنید.
-
برنامههایی که در پسزمینه اجرا میشوند دسترسی محدودی به دادههای مکان دارند.
-
سیستم سرویسهای برنامههایی را که در پیشزمینه اجرا نمیشوند محدود میکند.
-
کانالهای اعلان
- باید ویژگیهای وقفه اعلان را بهصورت کانالبهکانال تعریف کنید.
- برای اینکه اعلانها نشان داده شوند، باید آنها را به کانالی اختصاص دهید.
-
این نسخه از پلاتفرم از
NotificationCompat.Builderپشتیبانی میکند.
-
حریم خصوصی
- ANDROID_ID برای هر کلید امضای برنامه محدود شده است.
برای مشاهده فهرست کامل تغییرات معرفیشده در Android 8.0 (میانای برنامهسازی کاربردی سطح ۲۶)، به صفحه تغییرات رفتاری برای آن نسخه از پلاتفرم مراجعه کنید.
انتقال از Android 8 (میانای برنامهسازی کاربردی ۲۶) به Android 9 (میانای برنامهسازی کاربردی ۲۸)
-
مدیریت مصرف برق
- دستههای «برنامه آمادهبهکار» محدودیتهای پسزمینه جدیدی را براساس تعامل برنامه ارائه میدهند، مانند کارهای بهتعویقافتاده، هشدارها، و سهمیههای پیامهای با اولویت بالا
- بهبودهای «بهینهسازی باتری» محدودیتهای برنامههای آمادهبهکار را افزایش میدهد
-
اجازه سرویس پیشزمینهای
- باید اجازه معمول
FOREGROUND_SERVICE(نه اجازه زمان اجرا) را درخواست کند
- باید اجازه معمول
-
تغییرات حریم خصوصی
- دسترسی محدود به حسگرهای پسزمینه
- دسترسی محدود به گزارشهای تماس، اکنون در گروه اجازه
CALL_LOG - دسترسی به شماره تلفنها را محدود کردیم، که به اجازه
READ_CALL_LOGنیاز دارد - دسترسی محدود به اطلاعات Wi-Fi
برای مشاهده فهرست کامل تغییرات معرفیشده در Android 9.0 (سطح میانای برنامهسازی کاربردی ۲۸)، به تغییرات رفتاری مراجعه کنید.
انتقال از Android 9 (سطح میانای برنامهسازی کاربردی ۲۸) به Android 10 (سطح میانای برنامهسازی کاربردی ۲۹)
-
اعلانهای
دارای هدف تمامصفحه
-
باید اجازه معمول
USE_FULL_SCREEN_INTENT(نه اجازه زمان اجرا) را درخواست کند.
-
باید اجازه معمول
-
پشتیبانی از دستگاههای تاشو و دستگاههای
با صفحهنمایش بزرگ
-
اکنون چندین فعالیت میتوانند بهطور همزمان در وضعیت «ازسرگرفتهشده» باشند، اما فقط یکی از آنها واقعاً در کانون توجه است.
-
این تغییر بر رفتار
onResume()وonPause()تأثیر میگذارد. -
مفهوم چرخه حیات جدید «بالاترین ازسرگرفتهشده» که با مشترک شدن در
onTopResumedActivityChanged()قابلشناسایی است.- فقط یک فعالیت میتواند «ازسرگرفتهشده در بالاترین سطح» باشد.
-
این تغییر بر رفتار
-
وقتی
resizeableActivityرویfalseتنظیم شده باشد، برنامهها میتوانند علاوهبراینminAspectRatioرا مشخص کنند که بهطور خودکار برنامه را در نسبتهای ابعادی باریکتر بهصورت جعبهای نمایش میدهد.
-
اکنون چندین فعالیت میتوانند بهطور همزمان در وضعیت «ازسرگرفتهشده» باشند، اما فقط یکی از آنها واقعاً در کانون توجه است.
-
تغییرات حریم خصوصی
-
فضای ذخیرهسازی محدود
- دسترسی به فضای ذخیرهسازی خارجی فقط به دایرکتوری مختص برنامه و انواع خاصی از رسانههایی که برنامه ایجاد کرده است محدود میشود.
-
دسترسی به مکان را وقتی برنامه در پسزمینه است محدود میکند،
و به اجازه
ACCESS_BACKGROUND_LOCATIONنیاز دارد. - دسترسی به شناسههای بازنشانینشدنی مثل IMEI و شماره سریال محدود شده است.
-
دسترسی محدود به اطلاعات فعالیت فیزیکی مانند
تعداد قدمهای کاربر، که به اجازه
ACTIVITY_RECOGNITIONنیاز دارد. -
دسترسی به
برخی
میاناهای برنامهسازی کاربردی تلفن، بلوتوث، و Wi-Fi محدود شده است و به
ACCESS_FINE_LOCATIONاجازه نیاز دارد. -
دسترسی به تنظیمات Wi-Fi محدود شده است
- برنامهها دیگر نمیتوانند مستقیماً Wi-Fi را فعال یا غیرفعال کنند و باید این کار را بااستفاده از پانلهای تنظیمات انجام دهند.
-
محدودیتهای مربوط به شروع اتصال به شبکه Wi-Fi،
که مستلزم استفاده از
WifiNetworkSpecifierیاWifiNetworkSuggestionاست.
-
فضای ذخیرهسازی محدود
انتقال از Android 10 (میانای برنامهسازی کاربردی سطح ۲۹) به Android 11 (میانای برنامهسازی کاربردی سطح ۳۰)
-
حریم خصوصی
- اجرای فضای ذخیرهسازی محدود : برنامهها باید مدل فضای ذخیرهسازی محدود را اتخاذ کنند که در آن انواع فایلهای مختص برنامه، رسانه، و سایر فایلها بااستفاده از مکانهای اختصاصی ذخیره و دردسترس قرار میگیرند.
- بازنشانی خودکار اجازهها: اگر کاربران چند ماه با برنامهای تعامل نداشته باشند، سیستم اجازههای حساس برنامه را بهطور خودکار بازنشانی میکند. این موضوع نباید بر اکثر برنامهها تأثیر بگذارد. اگر برنامهتان عمدتاً در پسزمینه و بدون تعامل کاربر کار میکند، میتوانید از کاربران بخواهید بازنشانی خودکار را غیرفعال کنند.
- دسترسی به مکان در پسزمینه: برنامهها باید اجازه مکان در پیشنما و پسزمینه را جداگانه درخواست کنند. اعطای دسترسی به اجازه مکان در پسزمینه فقط در تنظیمات برنامه بهجای کادرهای گفتگوی اجازه زمان اجرا امکانپذیر است.
-
رؤیتپذیری بسته: وقتی برنامهای برای دریافت فهرست برنامهها و سرویسهای نصبشده در دستگاه پُرسمان میکند، فهرست برگرداندهشده فیلتر میشود.
- اگر از سرویسهای نوشتار به گفتار یا تشخیص گفتار استفاده میکنید، باید عناصر پُرسمان را برای سرویسها به فایل مانیفست اضافه کنید.
-
امنیت
- فایلهای فشردهشده `resource.arsc` دیگر پشتیبانی نمیشوند
- اکنون «طرح امضای APK نسخه ۲» الزامی است. بهدلیل سازگاری با نسخههای قدیمی، توسعهدهندگان باید همچنان با «طرح امضای APK نسخه ۱» امضا کنند.
- محدودیت میانای غیر کیت توسعه نرمافزار. استفاده از میاناهای غیر کیت توسعه نرمافزار برای برنامههایی که سطح میانای برنامهسازی کاربردی ۳۰ را هدف قرار میدهند توصیه نمیشود، زیرا برخیاز این میاناهای غیر کیت توسعه نرمافزار اکنون مسدود شدهاند. برای مشاهده فهرست جامعی از میاناهای غیرکیت توسعه نرمافزار مسدودشده، به میاناهای غیرکیت توسعه نرمافزار که اکنون در Android 11 مسدود شدهاند مراجعه کنید.
برای مشاهده فهرست کامل تغییرات معرفیشده در Android 11 (میانای برنامهسازی کاربردی سطح ۳۰)، به صفحه تغییرات رفتاری مراجعه کنید.
با دنبال کردن دستورالعملهای بخش قبلی، به بهروزرسانی به API 31 ادامه دهید.
برنامههایتان را مدرن کنید
وقتی سطح میانای برنامهسازی کاربردی هدف را برای برنامههایتان بهروز میکنید، ویژگیهای اخیر پلاتفرم را برای مدرنسازی برنامههایتان و جلب رضایت کاربران درنظر بگیرید.
- برای استفاده بهینه از دوربین، استفاده از CameraX را که در نسخه بتا است درنظر بگیرید.
- از مؤلفههای Jetpack استفاده کنید تا به شما کمک کند روالهای مطلوب را دنبال کنید، شما را از نوشتن کد متن استاندارد رها کند، و کارهای پیچیده را ساده کند تا بتوانید روی کدی که برایتان مهم است تمرکز کنید.
- از Kotlin برای نوشتن سریعتر برنامههای بهتر و با کد کمتر استفاده کنید.
- مطمئن شوید که الزامات و روالهای مطلوب حریم خصوصی را رعایت میکنید.
- پشتیبانی از زمینه تیره را به برنامههایتان اضافه کنید.
- پشتیبانی از پیمایش اشارهای را به برنامههایتان اضافه کنید.
- برنامهتان را از Google Cloud Messaging (GCM) به جدیدترین نسخه Firebase Cloud Messaging انتقال دهید.
- از مدیریت پیشرفته پنجره بهره ببرید.
- از نسبتهای ابعادی بزرگتر (بیشتر از ۱۶:۹) پشتیبانی کنید تا از پیشرفتهای اخیر در سختافزار بهره ببرید. مطمئن شوید که اندازه برنامهتان برای پر کردن فضای صفحهنمایش دردسترس تغییر میکند. فقط بهعنوان آخرین راه چاره، حداکثر نسبت ابعادی را اعلام کنید. برای اطلاعات بیشتر درباره حداکثر نسبت ابعادی، به اعلام پشتیبانی محدودشده از صفحهنمایش مراجعه کنید.
- پشتیبانی از چندپنجرهای را اضافه کنید تا به برنامهتان کمک کنید بهرهوری را افزایش دهد، و چند نمایشگر را مدیریت کند.
- اگر تجربه عالی برنامه کوچکشده تجربه کاربری را بهبود میبخشد،
پشتیبانی از تصویردرتصویر را اضافه کنید.
- برای دستگاههای دارای برش نمایشگر بهینهسازی کنید.
- ارتفاع نوار وضعیت را فرض نکنید. درعوض، از
WindowInsetsوView.OnApplyWindowInsetsListenerاستفاده کنید. برای کسب اطلاعات بیشتر، ویدیو droidcon NYC 2017 را ببینید. برای توضیح. - فرض نکنید که برنامه کل پنجره را دراختیار دارد. درعوض، مکان آن را بااستفاده از
View.getLocationInWindow()تأیید کنید، نهView.getLocationOnScreen(). * هنگام کار باMotionEvent، ازMotionEvent.getX()وMotionEvent.getY()استفاده کنید، نهMotionEvent.getRawX()،MotionEvent.getRawY().
کیتهای توسعه نرمافزار و کتابخانههایتان را بررسی و بهروز کنید
مطمئن شوید که وابستگیهای کیت توسعه نرمافزار شخص ثالث شما از API 31 پشتیبانی میکنند: برخی از ارائهدهندگان کیت توسعه نرمافزار آن را در مانیفست خود منتشر میکنند؛ دیگران نیاز به بررسی بیشتری خواهند داشت. اگر از کیت توسعه نرمافزاری استفاده میکنید که از API 31 پشتیبانی نمیکند، همکاری با ارائهدهنده کیت توسعه نرمافزار را برای حل مشکل در اولویت قرار دهید.
علاوهبراین، توجه داشته باشید که targetSdkVersion برنامه یا بازیتان ممکن است دسترسی به کتابخانههای خصوصی پلاتفرم Android را محدود کند؛ برای جزئیات، به پیوند دادن برنامههای NDK به کتابخانههای پلاتفرم مراجعه کنید.
همچنین باید هرگونه محدودیتی را که ممکن است در نسخه
«کتابخانه پشتیبانی Android» که استفاده میکنید وجود داشته باشد درستیسنجی کنید. مثل همیشه، باید از سازگاری بین نسخه اصلی «کتابخانه پشتیبانی Android» و compileSdkVersion برنامهتان مطمئن شوید.
توصیه میکنیم targetSdkVersion را کوچکتر یا مساوی با نسخه اصلی «کتابخانه پشتیبانی» انتخاب کنید. توصیه میکنیم برای بهرهمندی از جدیدترین ویژگیهای سازگاری و رفع اشکالها، به «کتابخانه پشتیبانی» سازگار اخیر بهروزرسانی کنید.
آزمایش برنامه
پساز بهروزرسانی سطح میانای برنامهسازی کاربردی و ویژگیهای برنامهتان بهصورت مناسب، باید برخیاز موارد استفاده اصلی را آزمایش کنید. پیشنهادهای زیر جامع نیستند، اما هدفشان راهنمایی شما در فرایند آزمایش است. پیشنهاد میکنیم این موارد را آزمایش کنید:
- برنامه شما بدون خطا یا هشدار در API 29 کامپایل میشود.
برنامه شما برای مواردی که کاربر درخواستهای اجازه را رد میکند و از کاربر درخواست اجازه میکند، استراتژی داشته باشد. برای انجام این کار:
- به صفحه «اطلاعات برنامه» بروید و هرکدام از اجازهها را غیرفعال کنید.
- برنامه را باز کنید و مطمئن شوید ازکار نمیافتد.
- آزمایشهای مورد استفاده اصلی را انجام دهید و مطمئن شوید اجازههای لازم دوباره درخواست میشود.
Doze را با نتایج موردانتظار و بدون خطا مدیریت میکند.
- بااستفاده از adb، دستگاه آزمایشیتان را درحالیکه برنامهتان درحال اجرا است در حالت «چرت زدن» قرار دهید.
- هر مورد استفادهای را که پیامهای «پیامرسانی ابری Firebase» را راهاندازی میکند آزمایش کنید.
- هرگونه مورد استفادهای را که از «هشدارها» یا «کارها» استفاده میکند آزمایش کنید.
- هرگونه وابستگی به سرویسهای پسزمینهای را حذف کنید.
- تنظیم کردن برنامه در «حالت آمادهبهکار برنامه»
- هر مورد استفادهای را که پیامهای «پیامرسانی ابری Firebase» را راهاندازی میکند آزمایش کنید.
- هر مورد استفادهای را که از «هشدارها» استفاده میکند آزمایش کنید.
- بااستفاده از adb، دستگاه آزمایشیتان را درحالیکه برنامهتان درحال اجرا است در حالت «چرت زدن» قرار دهید.
عکسها / ویدیوهای جدیدی را که گرفته میشود مدیریت میکند
- بررسی کنید که برنامهتان همهفرستیهای محدودشده
ACTION_NEW_PICTUREوACTION_NEW_VIDEOرا بهدرستی مدیریت میکند (یعنی به کارهای JobScheduler منتقل شدهاند). - مطمئن شوید که هر مورد استفاده حیاتی که به این رویدادها وابسته است همچنان کار میکند.
- بررسی کنید که برنامهتان همهفرستیهای محدودشده
همرسانی فایلها با برنامههای دیگر را مدیریت میکند - هر مورد استفادهای را که دادههای فایل را با هر برنامه دیگری (حتی برنامه دیگری از همان توسعهدهنده) همرسانی میکند آزمایش کنید
- آزمایش کنید که محتوا در برنامه دیگر قابلمشاهده باشد و باعث ازکارافتادن نشود.
اطلاعات بیشتر
در «کنسول Google Play» با دریافت ایمیل موافقت کنید تا بتوانیم بهروزرسانیها و اعلامیههای مهم Android و Google Play را برایتان ارسال کنیم، ازجمله خبرنامه ماهانه شریک.