نیاز سطح API هدف Google Play را برآورده کنید

وقتی یک APK آپلود می‌کنید، باید الزامات سطح API هدف گوگل پلی را برآورده کند.

از ۳۱ آگوست ۲۰۲۵:

  • برنامه‌های جدید و به‌روزرسانی‌های آن‌ها برای ارسال به گوگل پلی باید اندروید ۱۵ (سطح API 35) یا بالاتر را هدف قرار دهند؛ به جز برنامه‌های Wear OS، Android Automotive OS و Android TV که باید اندروید ۱۴ (سطح API 34) یا بالاتر را هدف قرار دهند.
  • برنامه‌های موجود باید اندروید ۱۴ (سطح API ۳۴) یا بالاتر را هدف قرار دهند تا در دستگاه‌هایی که سیستم عامل اندروید آنها بالاتر از سطح API هدف برنامه شماست، برای کاربران جدید در دسترس باشند. برنامه‌هایی که اندروید ۱۳ (سطح API ۳۳) یا پایین‌تر را هدف قرار می‌دهند، از جمله اندروید ۱۲ (سطح API ۳۱) یا پایین‌تر برای Wear OS و Android TV، فقط در دستگاه‌هایی با سیستم عامل اندروید که مشابه یا پایین‌تر از سطح API هدف برنامه شما هستند، در دسترس خواهند بود.

اگر برای به‌روزرسانی برنامه خود به زمان بیشتری نیاز دارید، می‌توانید درخواست تمدید تا ۱ نوامبر ۲۰۲۵ را بدهید. در اواخر امسال می‌توانید به فرم‌های تمدید برنامه خود در کنسول Play دسترسی داشته باشید.

استثنائات این الزامات عبارتند از:

  • برنامه‌های خصوصی دائمی که محدود به کاربران یک سازمان خاص هستند و فقط برای توزیع داخلی در نظر گرفته شده‌اند.

چرا SDK های جدیدتر را هدف قرار دهیم؟

هر نسخه جدید اندروید تغییراتی را معرفی می‌کند که باعث بهبود امنیت و عملکرد و بهبود تجربه کاربری اندروید می‌شود. برخی از این تغییرات فقط در مورد برنامه‌هایی اعمال می‌شود که صریحاً از طریق ویژگی manifest در targetSdkVersion (که به عنوان سطح API هدف نیز شناخته می‌شود) پشتیبانی خود را اعلام می‌کنند.

پیکربندی برنامه شما برای هدف قرار دادن یک سطح API جدید تضمین می‌کند که کاربران می‌توانند از این پیشرفت‌ها بهره‌مند شوند، در حالی که برنامه شما همچنان می‌تواند روی نسخه‌های قدیمی‌تر اندروید اجرا شود. هدف قرار دادن یک سطح API جدید همچنین به برنامه شما اجازه می‌دهد تا از جدیدترین ویژگی‌های پلتفرم برای لذت بردن کاربران خود استفاده کند. علاوه بر این، از اندروید 10 (سطح API 29)، کاربران هنگام اجرای برنامه برای اولین بار، اگر برنامه اندروید 5.1 (سطح API 22) یا پایین‌تر را هدف قرار دهد، هشداری مشاهده می‌کنند.

این سند نکات مهمی را که باید در به‌روزرسانی سطح API هدف خود برای برآورده کردن الزامات Google Play بدانید، برجسته می‌کند. بسته به نسخه‌ای که به آن مهاجرت می‌کنید، دستورالعمل‌های بخش‌های بعدی را مشاهده کنید.

مهاجرت از اندروید ۱۲ و بالاتر (سطح API ۳۱) به نسخه جدیدتر

برای به‌روزرسانی برنامه خود برای نسخه‌های جدیدتر اندروید، فهرست تغییرات رفتاری مربوطه را دنبال کنید:

مهاجرت از اندروید ۱۱ (سطح API 30) به اندروید ۱۲ (سطح API 31)

امنیت و مجوزها

  • بلوتوث : شما باید اعلان‌های مربوط به مجوزهای BLUETOOTH و BLUETOOTH_ADMIN را با مجوزهای BLUETOOTH_SCAN ، BLUETOOTH_ADVERTISE یا BLUETOOTH_CONNECT جایگزین کنید. دیگر نیازی به درخواست مجوز LOCATION در زمان اجرا برای عملیات بلوتوث ندارید.
  • موقعیت مکانی: کاربران می‌توانند از برنامه‌ها بخواهند که فقط اطلاعات تقریبی موقعیت مکانی را بازیابی کنند. هر زمان که درخواست ACCESS_FINE_LOCATION می‌کنید، باید مجوز ACCESS_COARSE_LOCATION را درخواست کنید.
  • خواب زمستانی: اگر برنامه‌ها برای مدت زمانی استفاده نشوند، ممکن است در حالت خواب زمستانی قرار گیرند. در حالت خواب زمستانی، مجوزهای زمان اجرا و حافظه پنهان برنامه شما بازنشانی می‌شوند و نمی‌توانید کارها یا هشدارها را اجرا کنید. می‌توانید وضعیت خواب زمستانی برنامه خود را بررسی کنید.
  • قابلیت تغییرپذیری در انتظار هدف : شما باید قابلیت تغییرپذیری هر شیء PendingIntent را که برنامه شما ایجاد می‌کند، مشخص کنید.

تجربه کاربری

  • اعلان‌های سفارشی : اعلان‌هایی که دارای نمای محتوای سفارشی هستند، دیگر از کل ناحیه اعلان استفاده نمی‌کنند؛ در عوض، سیستم یک الگوی استاندارد را اعمال می‌کند. این الگو تضمین می‌کند که اعلان‌های سفارشی در همه حالت‌ها، همان تزئینات سایر اعلان‌ها را داشته باشند. این رفتار تقریباً مشابه رفتار Notification.DecoratedCustomViewStyle است.
  • تغییرات تأیید لینک‌های اپلیکیشن اندروید : هنگام استفاده از تأیید لینک اپلیکیشن اندروید، مطمئن شوید که فیلترهای هدف شما شامل دسته BROWSABLE باشند و از طرح HTTPS پشتیبانی کنند.

عملکرد

  • محدودیت‌های راه‌اندازی سرویس پیش‌زمینه : برای اندروید ۱۲ یا بالاتر، برنامه شما نمی‌تواند سرویس‌های پیش‌زمینه را در حین اجرا در پس‌زمینه شروع کند، به جز چند مورد خاص. اگر برنامه‌ای سعی کند یک سرویس پیش‌زمینه را در حین اجرا در پس‌زمینه شروع کند، یک استثنا رخ می‌دهد (به جز چند مورد خاص).

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

  • محدودیت‌های ترامپولین اعلان : وقتی کاربران روی اعلان‌ها ضربه می‌زنند، برخی از برنامه‌ها با راه‌اندازی یک جزء برنامه که فعالیتی را که کاربر می‌بیند و با آن تعامل دارد، شروع می‌کند، پاسخ می‌دهند. این جزء برنامه به عنوان ترامپولین اعلان شناخته می‌شود.

    برنامه‌ها نباید فعالیت‌ها را از سرویس‌ها یا گیرنده‌های پخش که به عنوان تابلوهای اعلان استفاده می‌شوند، شروع کنند. پس از اینکه کاربر روی یک اعلان یا دکمه عمل در اعلان ضربه می‌زند، برنامه شما نمی‌تواند startActivity() در داخل یک سرویس یا گیرنده پخش فراخوانی کند.

مجموعه کامل تغییراتی که بر برنامه‌های اندروید ۱۲ (سطح API 31) تأثیر می‌گذارند را مشاهده کنید.

مهاجرت از اندروید پایین‌تر از ۱۱ (سطح API 30)

نسخه اندروید مورد نظر خود را برای مهاجرت انتخاب کنید:

مهاجرت به اندروید ۵ (سطح API 21)

برای اطمینان از اینکه برنامه شما تغییرات معرفی شده در این نسخه‌ها را در نظر گرفته است، به صفحه تغییرات رفتاری مربوط به هر یک از نسخه‌های زیر مراجعه کنید:

با دنبال کردن دستورالعمل‌های بخش بعدی، ادامه دهید.

مهاجرت به اندروید ۶ (سطح API ۲۳)

ملاحظات زیر در مورد برنامه‌هایی که اندروید ۶.۰ و نسخه‌های بالاتر این پلتفرم را هدف قرار می‌دهند، اعمال می‌شود:

  • مجوزهای زمان اجرا

    • مجوزهای خطرناک فقط در زمان اجرا اعطا می‌شوند. جریان‌های رابط کاربری شما باید امکان اعطای این مجوزها را فراهم کنند.

    • هر جا که ممکن است، مطمئن شوید که برنامه شما برای مدیریت رد درخواست‌های مجوز آماده است. به عنوان مثال، اگر کاربری درخواست دسترسی به GPS دستگاه را رد کرد، مطمئن شوید که برنامه شما راه دیگری برای ادامه کار دارد.

برای مشاهده فهرست کاملی از تغییرات معرفی شده در اندروید ۶.۰ (سطح API ۲۳)، به صفحه تغییرات رفتاری (Behavior Changes) برای آن نسخه از پلتفرم مراجعه کنید.

با دنبال کردن دستورالعمل‌های بخش بعدی، ادامه دهید.

مهاجرت به اندروید ۷ (سطح API 24)

ملاحظات زیر در مورد برنامه‌هایی که اندروید ۷.۰ و نسخه‌های بالاتر این پلتفرم را هدف قرار می‌دهند، اعمال می‌شود:

  • چرت زدن و آماده به کار برنامه

    طراحی برای رفتارهایی که در «بهینه‌سازی برای Doze و App Standby» شرح داده شده است، که شامل تغییرات تدریجی معرفی شده در چندین نسخه پلتفرم می‌شود.

    وقتی دستگاهی در حالت Doze و App Standby قرار دارد، سیستم به شرح زیر رفتار می‌کند:

    • دسترسی به شبکه را محدود می‌کند
    • هشدارها، همگام‌سازی‌ها و کارها را به تعویق می‌اندازد
    • اسکن‌های GPS و Wi-Fi را محدود می‌کند
    • پیام‌های Firebase Cloud Messaging با اولویت عادی را محدود می‌کند.
  • تغییرات مجوز

    • این سیستم دسترسی به دایرکتوری‌های خصوصی برنامه را محدود می‌کند.
    • قرار دادن یک آدرس فایل به نام file:// در خارج از برنامه شما، باعث ایجاد خطای FileUriExposedException می‌شود. اگر نیاز دارید فایل‌ها را در خارج از برنامه خود به اشتراک بگذارید، FileProvider پیاده‌سازی کنید.
  • این سیستم پیوند دادن به کتابخانه‌های غیر NDK را ممنوع می‌کند .

برای مشاهده فهرست کاملی از تغییرات معرفی‌شده در اندروید ۷.۰ (سطح API ۲۴)، به صفحه تغییرات رفتاری (Behavior Changes) برای آن نسخه از پلتفرم مراجعه کنید.

با دنبال کردن دستورالعمل‌های بخش بعدی، ادامه دهید.

مهاجرت به اندروید ۸ (سطح API 26)

ملاحظات زیر در مورد برنامه‌هایی که برای اندروید ۸.۰ و نسخه‌های بالاتر این پلتفرم طراحی شده‌اند، اعمال می‌شود:

  • محدودیت‌های اجرای پس‌زمینه
    • این سیستم، سرویس‌های مربوط به برنامه‌هایی که در پیش‌زمینه اجرا نمی‌شوند را محدود می‌کند.
    • پخش‌های ضمنی
      • پخش‌های ضمنی محدود شده‌اند. برای اطلاعات بیشتر در مورد مدیریت رویدادهای پس‌زمینه، به مستندات مربوط به API مربوط به JobScheduler مراجعه کنید.
    • محدودیت‌های مکان پس‌زمینه
      • برنامه‌هایی که در پس‌زمینه اجرا می‌شوند، دسترسی محدودی به داده‌های موقعیت مکانی دارند.
  • کانال‌های اعلان
  • حریم خصوصی
    • ANDROID_ID به ازای هر کلید امضای برنامه، محدود شده است.

برای مشاهده فهرست کاملی از تغییرات معرفی‌شده در اندروید ۸.۰ (سطح API ۲۶)، به صفحه تغییرات رفتاری (Behavior Changes) برای آن نسخه از پلتفرم مراجعه کنید.

مهاجرت از اندروید ۸ (API 26) به اندروید ۹ (API 28)

برای فهرست جامعی از تغییرات معرفی‌شده در اندروید ۹.۰ (سطح API ۲۸)، به تغییرات رفتاری مراجعه کنید.

مهاجرت از اندروید ۹ (سطح API 28) به اندروید ۱۰ (سطح API 29)

  • اعلان‌ها با هدف نمایش تمام صفحه
    • نیاز به درخواست مجوز عادی USE_FULL_SCREEN_INTENT (نه مجوز زمان اجرا) دارید.
  • پشتیبانی از دستگاه‌های تاشو و صفحه نمایش بزرگ
    • اکنون چندین فعالیت می‌توانند همزمان در حالت «از سر گرفته شده» باشند، اما فقط یکی از آنها در واقع تمرکز دارد.
      • این تغییر بر رفتار onResume() و onPause() تأثیر می‌گذارد.
      • مفهوم جدید چرخه حیات "بالاترین از سر گرفته شده" که با اشتراک در onTopResumedActivityChanged() قابل شناسایی است.
        • فقط یک فعالیت می‌تواند «از سر گرفته شود».
    • وقتی resizeableActivity روی false تنظیم شده باشد، برنامه‌ها می‌توانند علاوه بر این، یک minAspectRatio مشخص کنند که به طور خودکار برنامه را در نسبت‌های ابعاد باریک‌تر، letterbox می‌کند.
  • تغییرات حریم خصوصی
    • ذخیره‌سازی محدود
      • دسترسی به حافظه خارجی فقط به یک دایرکتوری خاص برنامه و انواع خاصی از رسانه‌هایی که برنامه ایجاد کرده است محدود می‌شود.
    • دسترسی محدود به موقعیت مکانی در حالی که برنامه در پس‌زمینه است و به مجوز ACCESS_BACKGROUND_LOCATION نیاز دارد.
    • دسترسی محدود به شناسه‌های غیرقابل تنظیم مجدد مانند IMEI و شماره سریال.
    • دسترسی محدود به اطلاعات فعالیت بدنی مانند تعداد گام‌های کاربر، که نیاز به مجوز ACTIVITY_RECOGNITION دارد.
    • دسترسی محدود به برخی از APIهای تلفن، بلوتوث و وای‌فای ، که نیاز به مجوز ACCESS_FINE_LOCATION دارد.
    • دسترسی محدود به تنظیمات وای‌فای

مهاجرت از اندروید ۱۰ (سطح API ۲۹) به اندروید ۱۱ (سطح API ۳۰)

برای مشاهده فهرست کاملی از تغییرات معرفی‌شده در اندروید ۱۱ (سطح API 30)، به صفحه تغییرات رفتاری مراجعه کنید.

با دنبال کردن دستورالعمل‌های بخش قبلی، به‌روزرسانی به API 31 را ادامه دهید.

برنامه‌های خود را مدرن کنید

همزمان با به‌روزرسانی سطح API هدف برای برنامه‌هایتان، استفاده از ویژگی‌های جدید پلتفرم را برای مدرن‌سازی برنامه‌هایتان و راضی نگه‌داشتن کاربرانتان در نظر بگیرید.

  • برای استفاده‌ی حداکثری از دوربین، استفاده از CameraX که در مرحله‌ی بتا است را در نظر بگیرید.
  • از کامپوننت‌های Jetpack استفاده کنید تا به شما در پیروی از بهترین شیوه‌ها کمک کنند، شما را از نوشتن کد تکراری رها کنند و کارهای پیچیده را ساده کنند تا بتوانید روی کدی که برایتان مهم است تمرکز کنید.
  • از کاتلین برای نوشتن برنامه‌های بهتر، سریع‌تر و با کد کمتر استفاده کنید.
  • مطمئن شوید که الزامات حریم خصوصی و بهترین شیوه‌ها را رعایت می‌کنید.
  • پشتیبانی از تم تیره را به برنامه‌های خود اضافه کنید.
  • پشتیبانی از ناوبری حرکتی را به برنامه‌های خود اضافه کنید.
  • برنامه خود را از Google Cloud Messaging (GCM) به آخرین نسخه Firebase Cloud Messaging منتقل کنید .
  • از مدیریت پیشرفته پنجره‌ها بهره ببرید.

SDKها و کتابخانه‌های خود را بررسی و به‌روزرسانی کنید

مطمئن شوید که وابستگی‌های SDK شخص ثالث شما از API 31 پشتیبانی می‌کنند: برخی از ارائه‌دهندگان SDK این موضوع را در مانیفست خود منتشر می‌کنند؛ برخی دیگر نیاز به بررسی بیشتر دارند. اگر از SDK استفاده می‌کنید که از API 31 پشتیبانی نمی‌کند، همکاری با ارائه‌دهنده SDK را برای حل مشکل در اولویت قرار دهید.

علاوه بر این، توجه داشته باشید که targetSdkVersion برنامه یا بازی شما ممکن است دسترسی به کتابخانه‌های خصوصی پلتفرم اندروید را محدود کند؛ برای جزئیات بیشتر به بخش «پیوند برنامه‌های NDK به کتابخانه‌های پلتفرم» مراجعه کنید.

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

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

برنامه خود را آزمایش کنید

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

  • اینکه برنامه شما بدون خطا یا هشدار به API 29 کامپایل شود.
  • اینکه برنامه شما برای مواردی که کاربر درخواست‌های مجوز را رد می‌کند، استراتژی داشته باشد و از کاربر درخواست مجوز کند. برای انجام این کار:

    • به صفحه اطلاعات برنامه خود بروید و هر مجوز را غیرفعال کنید.
    • برنامه را باز کنید و مطمئن شوید که هیچ مشکلی وجود ندارد.
      • تست‌های مورد استفاده اصلی را انجام دهید و مطمئن شوید که مجوزهای مورد نیاز دوباره درخواست می‌شوند.
  • Doze را با نتایج مورد انتظار و بدون خطا مدیریت می‌کند.

    • با استفاده از adb، دستگاه آزمایشی خود را در حالی که برنامه در حال اجرا است، در حالت Doze قرار دهید.
      • هر مورد استفاده‌ای که پیام‌های Firebase Cloud Messaging را فعال می‌کند، آزمایش کنید.
      • هر مورد استفاده‌ای که از هشدارها یا کارها استفاده می‌کند را آزمایش کنید.
      • هرگونه وابستگی به سرویس‌های پس‌زمینه را حذف کنید.
    • برنامه خود را در حالت آماده به کار برنامه قرار دهید
      • هر مورد استفاده‌ای که پیام‌های Firebase Cloud Messaging را فعال می‌کند، آزمایش کنید.
      • هر مورد استفاده‌ای که از هشدارها استفاده می‌کند را آزمایش کنید.
  • عکس‌ها/فیلم‌های جدید گرفته شده را مدیریت می‌کند

    • بررسی کنید که برنامه شما پخش‌های محدود ACTION_NEW_PICTURE و ACTION_NEW_VIDEO را به درستی مدیریت می‌کند (یعنی به کارهای JobScheduler منتقل شده است).
    • اطمینان حاصل کنید که هرگونه مورد استفاده حیاتی که به این رویدادها وابسته است، همچنان کار می‌کند.
  • مدیریت اشتراک‌گذاری فایل‌ها با برنامه‌های دیگر - هر مورد استفاده‌ای را که داده‌های فایل را با هر برنامه دیگری (حتی برنامه دیگری از همان توسعه‌دهنده) به اشتراک می‌گذارد، آزمایش کنید.

    • بررسی کنید که آیا محتوا در برنامه‌ی دیگر قابل مشاهده است و باعث خرابی نمی‌شود.

اطلاعات بیشتر

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