انتقال برنامه‌ها به Android 9

Android 9 (سطح میانای برنامه‌سازی کاربردی ۲۸) ویژگی‌ها و میاناهای برنامه‌سازی کاربردی جدیدی را معرفی می‌کند که می‌توانید در برنامه‌هایتان از آن‌ها بهره ببرید، و همچنین تغییرات رفتاری جدیدی را معرفی می‌کند. این سند نمای کلی‌ای از مراحل انتقال برنامه‌هایتان به Android 9 در دو مرحله کلیدی ارائه می‌دهد:

  1. اطمینان از سازگاری پایه با Android 9

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

  2. پلاتفرم جدید را هدف قرار دهید، با کیت توسعه نرم‌افزار Android 9 کامپایل کنید، و با ویژگی‌های Android 9 بسازید

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

آماده کردن دستگاه دارای Android 9

اگر دستگاه سازگاری دارید، تصویر سیستم Android 9 را برای دستگاهتان از سازنده دریافت کنید؛ برای تصاویر تنظیمات کارخانه برای دستگاه‌های Pixel، اینجا کلیک کنید. دستورالعمل‌های کلی برای فلش کردن ایمیج سیستم در اینجا قرار دارد.

همچنین می‌توانید تصویر سیستم Android 9 را برای «شبیه‌ساز Android» بارگیری کنید. این ابزار در مدیر SDK تحت Android API 28 به‌عنوان Google APIs Intel x86 Atom System Image فهرست شده است.

توجه: تصویر سیستم شبیه‌ساز Android 9 برای بارگیری در Android Studio 3.1 و بالاتر دردسترس است؛ Android Studio 3.2 حداکثر سازگاری را ارائه می‌دهد. برای اطلاعات بیشتر، دریافت کیت توسعه نرم‌افزار Android 9 را ببینید.

اطمینان از سازگاری با Android 9

هدف در اینجا این است که مطمئن شوید برنامه موجودتان همان‌طور که هست در Android 9 کار می‌کند. چون برخی‌از تغییرات پلاتفرم ممکن است بر نحوه رفتار برنامه‌تان تأثیر بگذارد، ممکن است لازم باشد برخی‌از تنظیمات را تغییر دهید، اما نیازی نیست از میاناهای برنامه‌سازی کاربردی جدید استفاده کنید یا targetSdkVersion خود را تغییر دهید.

اطمینان از سازگاری با Android 9 به‌صورت گام‌به‌گام

انجام آزمایش سازگاری

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

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

جدول ۱. تغییرات کلیدی که بر همه برنامه‌های در حال اجرا در دستگاه‌های Android 9 تأثیر می‌گذارد.

تغییر خلاصه
محدودیت‌های واسط‌های غیرکیت توسعه نرم‌افزار دسترسی به میاناهای غیرکیت توسعه نرم‌افزار خاص اکنون مسدود شده است، چه دسترسی مستقیم باشد، چه ازطریق JNI، یا ازطریق بازتاب. تلاش برای دسترسی به میاناهای محدودشده خطاهایی مثل NoSuchFieldException و NoSuchMethodException ایجاد می‌کند. برای جزئیات، محدودیت‌های میاناهای غیرکیت توسعه نرم‌افزار را ببینید.
برداشتن ارائه‌دهنده رمزارز از Android 9، ارائه‌دهنده Crypto JCA برداشته شده است. تماس‌ها با SecureRandom.getInstance("SHA1PRNG", "Crypto") NoSuchProviderException را برمی‌گرداند.
رمزگشای UTF-8 سخت‌گیرانه‌تر در Android 9، رمزگشای UTF-8 برای زبان Java سخت‌گیرانه‌تر است و از استاندارد Unicode پیروی می‌کند.
دسترسی به دوربین، میکروفون، و حسگرها برای برنامه‌های غیرفعال مسدود شد وقتی برنامه‌ها غیرفعال هستند، دیگر نمی‌توانند به دوربین، میکروفون، یا حسگرهای SensorManager دسترسی داشته باشند.

برای فهرست گسترده‌تری از تغییرات رفتاری برای همه برنامه‌هایی که در Android 9 اجرا می‌شوند، سند تغییرات رفتاری را ببینید.

نسخه هدف را به‌روز کنید و از ویژگی‌های Android P استفاده کنید

این بخش توضیح می‌دهد که چگونه با به‌روزرسانی targetSdkVersion به ۲۸ و افزودن ویژگی‌های جدید موجود در Android 9، پشتیبانی کامل از Android 9 را فعال کنید.

علاوه‌بر ارائه میاناهای برنامه‌سازی کاربردی جدید، Android 9 برخی تغییرات رفتاری را نیز معرفی می‌کند وقتی targetSdkVersion خود را به ۲۸ به‌روزرسانی می‌کنید. چون برخی‌از تغییرات رفتاری ممکن است برای جلوگیری از خرابی به تغییرات کد نیاز داشته باشند، ابتدا باید با مرور همه تغییرات رفتاری برای برنامه‌هایی که Android نسخه ۹ را هدف قرار می‌دهند، متوجه شوید که وقتی targetSdkVersion را تغییر می‌دهید، برنامه‌تان چگونه ممکن است تحت‌تأثیر قرار گیرد.

توجه: مراحل شرح‌داده‌شده در بالا برای اطمینان از سازگاری پلاتفرم پیش‌نیاز هدف‌یابی برنامه‌تان برای Android 9 است، بنابراین حتماً ابتدا آن مراحل را تکمیل کنید.

به‌روزرسانی نسخه هدف و استفاده گام‌به‌گام از ویژگی‌های Android 9

دریافت کیت توسعه نرم‌افزار Android 9

می‌توانید بسته‌های کیت توسعه نرم‌افزار را برای ساختن برنامه‌تان با Android 9 بااستفاده از Android Studio 3.1 یا بالاتر دریافت کنید. اگر هنوز به ویژگی‌های جدید Android 9 نیاز ندارید و فقط می‌خواهید با آن نسخه از پلاتفرم کامپایل کنید، می‌توانید از Android Studio 3.1 استفاده کنید. Android Studio 3.2 پشتیبانی کاملی از ویژگی‌های Android 9 ارائه می‌دهد.

آزمایش کردن برنامه Android 9

با تکمیل آماده‌سازی‌های بالا، می‌توانید برنامه‌تان را بسازید و سپس آن را بیشتر آزمایش کنید تا مطمئن شوید هنگام هدف‌یابی Android نسخه ۹ (سطح میانای برنامه‌سازی کاربردی ۲۸) به‌درستی کار می‌کند. این زمان مناسب دیگری برای مرور دستورالعمل‌های کیفیت برنامه اصلی و روال‌های مطلوب برای آزمایش است.

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

جدول ۲ فهرستی از این تغییرات را به‌همراه پیوندهایی برای اطلاعات بیشتر ارائه می‌دهد.

جدول ۲. تغییرات کلیدی که بر برنامه‌ها تأثیر می‌گذارد وقتی targetSdkVersion روی ۲۸ تنظیم شده باشد.

تغییر خلاصه
اجازه سرویس پیش‌زمینه‌ای برنامه‌هایی که می‌خواهند از سرویس‌های پیش‌زمینه‌ای استفاده کنند اکنون باید ابتدا اجازه FOREGROUND_SERVICE را درخواست کنند. این یک اجازه معمول است، بنابراین سیستم به‌طور خودکار آن را به برنامه درخواست‌کننده اعطا می‌کند. شروع سرویس پیش‌زمینه‌ای بدون این اجازه باعث ایجاد SecurityException می‌شود.
منسوخ شدن رمزهای Bouncy Castle Android 9 چندین رمز را از ارائه‌دهنده Bouncy Castle به‌نفع رمزهای ارائه‌شده توسط ارائه‌دهنده Conscrypt منسوخ می‌کند. فراخوانی‌های getInstance() که درخواست می‌کنند ارائه‌دهنده Bouncy Castle خطاهای NoSuchAlgorithmException را تولید کند. برای برطرف کردن خطاها، ارائه‌دهنده‌ای را در getInstance()‎ مشخص نکنید (یعنی پیاده‌سازی پیش‌فرض را درخواست کنید).
برداشتن دسترسی مستقیم به Build.serial برنامه‌هایی که به شناسه Build.serial نیاز دارند اکنون باید اجازه READ_PHONE_STATE را درخواست کنند و سپس از روش جدید Build.getSerial() که در Android 9 اضافه شده است استفاده کنند.
هم‌رسانی غیرمجاز فهرست راهنمای داده‌های WebView برنامه‌ها دیگر نمی‌توانند یک فهرست راهنمای داده WebView را در بین فرایندها هم‌رسانی کنند. اگر برنامه‌تان بیش‌از یک فرایند دارد که از WebView،‏ CookieManager، یا هر میانای برنامه‌سازی کاربردی دیگری در بسته android.webkit استفاده می‌کند، وقتی فرایند دوم متد WebView را فراخوانی کند، برنامه‌تان ازکار خواهد افتاد.
دسترسی به فهرست راهنمای داده‌های برنامه توسط SELinux مسدود شده است سیستم جعبه‌های امن SELinux را برای هر برنامه با محدودیت‌های SELinux برای هر برنامه در دایرکتوری داده‌های خصوصی هر برنامه اعمال می‌کند. دسترسی مستقیم به فهرست راهنمای داده‌های برنامه دیگر ازطریق مسیر اکنون غیرمجاز است. برنامه‌ها ممکن است همچنان بااستفاده از سازوکارهای IPC، ازجمله با ارسال FD، داده هم‌رسانی کنند.

برای فهرست گسترده‌تری از تغییرات رفتاری برای برنامه‌هایی که Android 9 را هدف قرار می‌دهند، سند تغییرات رفتاری را ببینید.

برای کاوش ویژگی‌ها و میاناهای برنامه‌سازی کاربردی جدید دردسترس در Android 9، ویژگی‌ها و میاناهای برنامه‌سازی کاربردی Android 9 را ببینید.