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

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

شروع از 31 آگوست 2024:

  • برنامه‌ها و به‌روزرسانی‌های برنامه جدید باید Android 14 (سطح API 34) یا بالاتر را هدف قرار دهند تا به Google Play ارسال شوند. به جز برنامه‌های Wear OS و Android TV که باید Android 13 (سطح API 33) یا بالاتر را هدف قرار دهند.
  • برنامه‌های موجود باید Android 13 (سطح API 33) یا بالاتر را هدف قرار دهند تا در دستگاه‌های دارای سیستم عامل Android بالاتر از سطح API هدف برنامه شما در دسترس کاربران جدید باقی بمانند. برنامه‌هایی که Android 12 (سطح API 31) یا پایین‌تر (Android 10 (سطح API 29) یا پایین‌تر برای Wear OS و Android 11 (سطح API 30) یا پایین‌تر برای Android TV را هدف قرار می‌دهند، فقط در دستگاه‌های دارای سیستم‌عامل Android در دسترس خواهند بود. یکسان یا کمتر از سطح API هدف برنامه شما هستند.

اگر به زمان بیشتری برای به‌روزرسانی برنامه خود نیاز دارید، می‌توانید درخواست تمدید تا 1 نوامبر 2024 کنید. اواخر سال جاری می‌توانید به فرم‌های برنامه افزودنی در Play Console دسترسی پیدا کنید.

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

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

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

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

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

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

از Android 12 و بالاتر (سطح API 31) به نسخه جدیدتر مهاجرت کنید

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

انتقال از Android 11 (سطح API 30) به Android 12 (سطح API 31)

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

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

تجربه کاربری

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

عملکرد

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

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

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

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

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

مهاجرت از پایین‌تر از Android 11 (سطح API 30)

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

انتقال به Android 5 (سطح API 21)

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

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

انتقال به Android 6 (سطح API 23)

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

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

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

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

برای فهرست جامعی از تغییرات ارائه شده در Android 6.0 (سطح API 23)، به صفحه تغییرات رفتار مربوط به آن نسخه از پلتفرم مراجعه کنید.

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

انتقال به Android 7 (سطح API 24)

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

  • Doze و App Standby

    طراحی برای رفتارهایی که در Optimizing for Doze و App Standby توضیح داده شده است، که شامل تغییرات افزایشی است که در چندین نسخه پلتفرم ارائه شده است.

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

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

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

برای فهرست جامعی از تغییرات ارائه شده در Android 7.0 (سطح API 24)، به صفحه تغییرات رفتار مربوط به آن نسخه از پلتفرم مراجعه کنید.

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

انتقال به Android 8 (سطح API 26)

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

  • محدودیت های اجرای پس زمینه
    • این سیستم خدمات را برای برنامه هایی که در پیش زمینه اجرا نمی شوند محدود می کند.
      • startService() اکنون زمانی که یک برنامه سعی می کند آن را فراخوانی کند در حالی که startService() ممنوع است، یک استثنا ایجاد می کند.
      • برای شروع خدمات پیش زمینه، یک برنامه باید از startForeground() و startForegroundService() استفاده کند.
      • همانطور که در صفحه تغییرات رفتار Android 8.0 (سطح API 26) مستند شده است، تغییرات ایجاد شده در JobScheduler API را به دقت بررسی کنید.
      • Firebase Cloud Messaging به نسخه 10.2.1 SDK خدمات Google Play یا بالاتر نیاز دارد.
      • هنگام استفاده از Firebase Cloud Messaging ، تحویل پیام مشمول محدودیت‌های اجرای پس‌زمینه است. هنگامی که کار پس‌زمینه پس از دریافت پیام ضروری است، مانند انجام همگام‌سازی داده‌های پس‌زمینه، برنامه شما باید به جای آن، کارها را با استفاده از Firebase Job Dispatcher یا JobIntentService زمان‌بندی کند. برای اطلاعات بیشتر، به مستندات Firebase Cloud Messaging مراجعه کنید.
    • پخش های ضمنی
      • پخش ضمنی محدود شده است. برای اطلاعات در مورد مدیریت رویدادهای پس‌زمینه، به اسناد مربوط به JobScheduler API مراجعه کنید.
    • محدودیت های موقعیت مکانی پس زمینه
      • برنامه‌هایی که در پس‌زمینه اجرا می‌شوند، دسترسی محدودی به داده‌های مکان دارند.
  • کانال های اطلاع رسانی
    • شما باید ویژگی های وقفه اعلان را بر اساس هر کانال تعریف کنید.
    • باید اعلان‌ها را به یک کانال اختصاص دهید تا اعلان‌ها ظاهر شوند.
    • این نسخه از پلتفرم از NotificationCompat.Builder پشتیبانی می کند.
  • حریم خصوصی
    • ANDROID_ID بر اساس کلید امضای برنامه مشخص می‌شود.

برای فهرست کاملی از تغییرات ارائه شده در Android 8.0 (سطح API 26)، به صفحه تغییرات رفتار مربوط به آن نسخه از پلتفرم مراجعه کنید.

انتقال از Android 8 (API 26) به Android 9 (API 28)

برای فهرست جامعی از تغییرات ارائه شده در Android 9.0 (سطح API 28)، به تغییرات رفتار مراجعه کنید.

انتقال از Android 9 (سطح API 28) به Android 10 (سطح API 29)

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

انتقال از Android 10 (سطح API 29) به Android 11 (سطح API 30)

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

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

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

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

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

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

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

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

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

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

اپلیکیشن خود را تست کنید

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

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

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

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

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

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

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

ایمیل‌های موجود در کنسول Google Play را انتخاب کنید تا بتوانیم به‌روزرسانی‌ها و اعلان‌های مهم را از Android و Google Play، از جمله خبرنامه شریک ماهانه‌مان، برای شما ارسال کنیم.