انتقال برنامه ها به اندروید 9، انتقال برنامه ها به اندروید 9

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

  1. از سازگاری اولیه با اندروید 9 اطمینان حاصل کنید

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

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

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

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

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

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

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

از سازگاری با اندروید 9 اطمینان حاصل کنید

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

از سازگاری گام به گام با اندروید 9 اطمینان حاصل کنید

انجام تست سازگاری

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

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

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

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

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

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

این بخش نحوه فعال کردن پشتیبانی کامل از اندروید 9 را با به روز رسانی targetSdkVersion خود به 28 و افزودن ویژگی های جدید موجود در اندروید 9 توضیح می دهد.

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

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

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

Android 9 SDK را دریافت کنید

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

برنامه اندروید 9 خود را تست کنید

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

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

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

جدول 2. تغییرات کلیدی که وقتی targetSdkVersion روی 28 تنظیم شده است، بر برنامه ها تأثیر می گذارد.

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

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

برای بررسی ویژگی‌های جدید و APIهای موجود Android 9، به ویژگی‌ها و APIهای Android 9 مراجعه کنید.

،

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

  1. از سازگاری اولیه با اندروید 9 اطمینان حاصل کنید

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

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

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

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

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

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

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

از سازگاری با اندروید 9 اطمینان حاصل کنید

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

از سازگاری گام به گام با اندروید 9 اطمینان حاصل کنید

انجام تست سازگاری

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

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

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

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

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

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

این بخش نحوه فعال کردن پشتیبانی کامل از اندروید 9 را با به روز رسانی targetSdkVersion خود به 28 و افزودن ویژگی های جدید موجود در اندروید 9 توضیح می دهد.

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

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

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

Android 9 SDK را دریافت کنید

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

برنامه اندروید 9 خود را تست کنید

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

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

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

جدول 2. تغییرات کلیدی که وقتی targetSdkVersion روی 28 تنظیم شده است، بر برنامه ها تأثیر می گذارد.

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

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

برای بررسی ویژگی‌های جدید و APIهای موجود Android 9، به ویژگی‌ها و APIهای Android 9 مراجعه کنید.