Android 9 (API লেভেল ২৮) নতুন ফিচার ও API নিয়ে এসেছে, যার সুবিধা আপনি নিজের অ্যাপে নিতে পারবেন, এর সাথে নতুন আচরণগত পরিবর্তনও করতে পারবেন। এই ডকুমেন্ট থেকে আপনি দুটি মূল পর্যায়ে Android 9-এ আপনার অ্যাপ মাইগ্রেট করার ধাপগুলির একটি ওভারভিউ পাবেন:
- Android 9-এর সাথে প্রাথমিক কম্প্যাটিবিলিটি নিশ্চিত করা
আপনার বর্তমান অ্যাপ প্ল্যাটফর্মের নতুন ভার্সনে সম্পূর্ণভাবে কাজ করছে কিনা তা যাচাই করুন। এই পর্যায়ে, আপনি নতুন API ব্যবহার করেন না বা আপনার অ্যাপের
targetSdkVersionপরিবর্তন করেন না, তবে ছোটখাটো পরিবর্তন করার প্রয়োজন হতে পারে। - নতুন প্ল্যাটফর্ম টার্গেট করুন, Android 9 SDK-এর সাথে কম্পাইল করুন এবং
Android 9 ফিচারের সাথে বিল্ড করুন
আপনি প্ল্যাটফর্মের নতুন ফিচারের সুবিধা নিতে প্রস্তুত হলে, আপনার
targetSdkVersionথেকে28-এ আপডেট করুন, অ্যাপটি প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা যাচাই করুন এবং তারপরে নতুন API ব্যবহার করা শুরু করুন।
Android 9-এ চলে এমন ডিভাইস প্রস্তুত করা
আপনার কাছে মানানসই ডিভাইস থাকলে, প্রস্তুতকারকের থেকে আপনার ডিভাইসের জন্য Android 9 সিস্টেম ইমেজ পান; Pixel ডিভাইসের জন্য ফ্যাক্টরি ইমেজ পেতে এখানে ক্লিক করুন। সিস্টেম ইমেজ ফ্ল্যাশ করার সাধারণ নির্দেশাবলী এখানে দেওয়া আছে।
এছাড়াও, আপনি Android Emulator-এর জন্য Android 9 সিস্টেম ইমেজ ডাউনলোড করতে পারবেন। এটি SDK Manager-এ Android API 28-এর অধীনে Google APIs Intel x86 Atom System Image হিসেবে তালিকাভুক্ত করা আছে।
মনে রাখবেন: Android 9 এমুলেটর সিস্টেম ইমেজ Android Studio 3.1 এবং তার পরবর্তী যেকোনও ভার্সনে ডাউনলোডের জন্য উপলভ্য; Android Studio 3.2 সর্বাধিক সামঞ্জস্য প্রদান করে। আরও তথ্যের জন্য, Android 9 SDK পান দেখুন।
Android 9-এর সাথে মানানসই কিনা তা নিশ্চিত করুন
এখানে উদ্দেশ্য হল আপনার বর্তমান অ্যাপটি Android 9-এ যেমন আছে তেমন কাজ করছে কিনা তা নিশ্চিত করা। প্ল্যাটফর্মে কিছু পরিবর্তন আপনার অ্যাপের আচরণকে প্রভাবিত করতে পারে,
তাই কিছু অ্যাডজাস্টমেন্টের প্রয়োজন হতে পারে, তবে আপনাকে নতুন API ব্যবহার করতে হবে না বা
আপনার targetSdkVersion পরিবর্তন করতে হবে না।
কম্প্যাটিবিলিটি টেস্টিং পারফর্ম করা
বেশিরভাগ ক্ষেত্রে, Android 9-এর সাথে কম্প্যাটিবিলিটি পরীক্ষা করার অর্থ হল আপনার অ্যাপ রিলিজ করার জন্য প্রস্তুত করার সময় আপনি যে ধরনের পরীক্ষা করেন সেই একই ধরনের পরীক্ষা করা। কোর অ্যাপ কোয়ালিটি নির্দেশিকা এবং পরীক্ষার জন্য পেশাদার পদ্ধতি পর্যালোচনা করার জন্য এটি একটি ভাল সময়।
তবে, পরীক্ষার আরেকটি দিক আছে: Android 9, Android প্ল্যাটফর্মে এমন পরিবর্তন নিয়ে আসে যা আপনার অ্যাপের আচরণকে প্রভাবিত করতে পারে বা অ্যাপটিকে পুরোপুরি ভেঙে দিতে পারে, এমনকি আপনি নিজের targetSdkVersion পরিবর্তন না করলেও। এই কারণে, সারণী ১-এ উল্লেখ করা মূল পরিবর্তনগুলি পর্যালোচনা করা
এবং পরিবর্তনগুলি মানিয়ে নেওয়ার জন্য আপনি যে সমাধানগুলি প্রয়োগ করেন সেগুলি পরীক্ষা করা গুরুত্বপূর্ণ।
টেবিল ১. Android 9 ডিভাইসে চলা সব অ্যাপকে প্রভাবিত করে এমন গুরুত্বপূর্ণ পরিবর্তন।
| পরিবর্তন করুন | সারাংশ |
|---|---|
| SDK নয় এমন ইন্টারফেসের উপর বিধিনিষেধ |
নির্দিষ্ট নন-SDK ইন্টারফেসে অ্যাক্সেস এখন ব্লক করা হয়েছে, অ্যাক্সেস সরাসরি, JNI-এর মাধ্যমে বা রিফ্লেকশনের মাধ্যমে হোক না কেন। সীমাবদ্ধ ইন্টারফেস অ্যাক্সেস করার চেষ্টা করলে, NoSuchFieldException এবং NoSuchMethodException-এর মতো
সমস্যা দেখা দেয়।
আরও জানতে SDK নয় এমন ইন্টারফেসের
উপর বিধিনিষেধ দেখুন।
|
| ক্রিপ্টো পরিষেবা প্রদানকারীকে সরিয়ে দেওয়া |
Android 9 থেকে শুরু করে, ক্রিপ্টো JCA প্রোভাইডার সরিয়ে দেওয়া হয়েছে। SecureRandom.getInstance("SHA1PRNG", "Crypto")-এ
কল করলে NoSuchProviderException
থ্রো করবে।
|
| আরও কঠোর UTF-8 ডিকোডার | Android 9-এ, Java ভাষার জন্য UTF-8 ডিকোডার আরও কঠোর এবং ইউনিকোড স্ট্যান্ডার্ড অনুসরণ করে। |
| অ্যাক্টিভ নয় এমন অ্যাপের জন্য ক্যামেরা, মাইক্রোফোন ও সেন্সরের অ্যাক্সেস ব্লক করা হয়েছে | অ্যাপ আইডল থাকলে, সেগুলি আর ক্যামেরা, মাইক্রোফোন বা SensorManager সেন্সর অ্যাক্সেস করতে পারবে না। |
Android 9-এ চলা সব অ্যাপের আচরণে পরিবর্তনের আরও বিস্তারিত তালিকার জন্য, আচরণে পরিবর্তন ডকুমেন্ট দেখুন।
আপনার টার্গেট ভার্সন আপডেট করুন এবং Android P ফিচার ব্যবহার করুন
এই বিভাগে ব্যাখ্যা করা হয়েছে যে কীভাবে আপনার targetSdkVersion-কে 28-এ আপডেট করে
এবং Android 9-এ উপলভ্য নতুন ফিচার যোগ করে
Android 9-এর জন্য সম্পূর্ণ সহায়তা চালু করবেন।
আপনাকে নতুন API অফার করার পাশাপাশি, আপনি targetSdkVersion-কে ২৮-এ আপডেট করলে, Android 9 কিছু আচরণগত পরিবর্তন
প্রবর্তন করে। কিছু আচরণগত পরিবর্তনের জন্য
কোড পরিবর্তন করার প্রয়োজন হতে পারে যাতে কোনও সমস্যা না হয়, তাই targetSdkVersion পরিবর্তন করলে আপনার অ্যাপ কীভাবে প্রভাবিত হতে পারে তা বুঝতে,
Android 9-কে টার্গেট করা অ্যাপের জন্য সব আচরণগত পরিবর্তন পর্যালোচনা করুন।
মনে রাখবেন: Android 9-এ আপনার অ্যাপ টার্গেট করার জন্য প্ল্যাটফর্মের সাথে মানানসই কিনা তা নিশ্চিত করতে উপরে বর্ণিত ধাপগুলি প্রয়োজনীয়, তাই প্রথমে সেই ধাপগুলি সম্পূর্ণ করতে ভুলবেন না।
Android 9 SDK ডাউনলোড করুন
Android Studio 3.1 বা তার পরবর্তী যেকোনও ভার্সন ব্যবহার করে Android 9-এর সাথে আপনার অ্যাপ তৈরি করার জন্য SDK প্যাকেজ পেতে পারেন। Android 9-এর নতুন ফিচারগুলি আপনার এখনও প্রয়োজন না হলে এবং আপনি শুধু প্ল্যাটফর্মের সেই ভার্সনের বিরুদ্ধে কম্পাইল করতে চাইলে, Android Studio 3.1 ব্যবহার করতে পারেন। Android Studio 3.2, Android 9 ফিচারের জন্য সম্পূর্ণ সহায়তা প্রদান করে।
আপনার Android 9 অ্যাপ টেস্ট করুন
উপরের প্রস্তুতি সম্পূর্ণ হলে, আপনি অ্যাপ তৈরি করতে পারবেন এবং তারপর Android 9 (API লেভেল 28) টার্গেট করার সময় এটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে আরও পরীক্ষা করতে পারবেন। কোর অ্যাপ কোয়ালিটি সংক্রান্ত নির্দেশিকা এবং টেস্ট করার পেশাদার পদ্ধতি পর্যালোচনা করার জন্য এটি আরেকটি ভালো সময়।
আপনি যখন targetSdkVersion-এর ভার্সন P-তে সেট করে অ্যাপ তৈরি করেন,
তখন প্ল্যাটফর্মে কিছু নির্দিষ্ট পরিবর্তন হয়, যেগুলি সম্পর্কে আপনার জানা উচিত। Android 9-এ নতুন ফিচার প্রয়োগ না করলেও, এইসব পরিবর্তনের মধ্যে কিছু আপনার অ্যাপের আচরণে উল্লেখযোগ্যভাবে প্রভাব ফেলতে পারে অথবা
এমনকি আপনার অ্যাপকে সম্পূর্ণভাবে ভেঙে দিতে পারে।
সারণী ২-এ এইসব পরিবর্তনের তালিকা দেওয়া আছে এবং আরও তথ্যের জন্য লিঙ্কও দেওয়া আছে।
সারণী ২. targetSdkVersion-এর মান ২৮-এ সেট করা হলে,
অ্যাপকে প্রভাবিত করে এমন মূল পরিবর্তন।
| পরিবর্তন করুন | সারাংশ |
|---|---|
| ফোরগ্রাউন্ড সার্ভিস সংক্রান্ত অনুমতি | যেসব অ্যাপ ফোরগ্রাউন্ড পরিষেবা ব্যবহার করতে চায়, তাদের এখন প্রথমে FOREGROUND_SERVICE অনুমতি অনুরোধ করতে হবে। এটি একটি সাধারণ অনুমতি, তাই সিস্টেম অটোমেটিক অনুরোধকারী অ্যাপকে এটি মঞ্জুর করে। অনুমতি ছাড়া ফোরগ্রাউন্ড পরিষেবা শুরু করলে SecurityException থ্রো করে। |
| Bouncy Castle সাইফারের অবচিতি |
Conscrypt প্রদানকারীর দ্বারা প্রদত্ত সাইফারের পক্ষে Android 9 Bouncy Castle প্রদানকারীর থেকে বেশ কয়েকটি সাইফারকে বাতিল করে। getInstance()-এ করা কল যা
Bouncy Castle প্রোভাইডারকে
অনুরোধ করে, NoSuchAlgorithmExceptionটি সমস্যা তৈরি করে। সমস্যার সমাধান করতে, getInstance()-এ কোনও পরিষেবা প্রদানকারী নির্দিষ্ট করবেন না (অর্থাৎ, ডিফল্ট ইমপ্লিমেন্টেশনের জন্য অনুরোধ করুন)।
|
Build.serial-এ সরাসরি অ্যাক্সেস সরিয়ে দেওয়া
|
Build.serial শনাক্তকারী প্রয়োজন এমন অ্যাপকে এখন অবশ্যই READ_PHONE_STATE
অনুমতির জন্য অনুরোধ করতে হবে এবং তারপর Android 9-এ যোগ করা নতুন Build.getSerial() পদ্ধতি ব্যবহার করতে হবে।
|
| WebView ডেটা ডিরেক্টরি শেয়ার করার অনুমতি নেই | অ্যাপগুলি আর প্রসেস জুড়ে একটি WebView ডেটা ডিরেক্টরি শেয়ার করতে পারবে না। আপনার অ্যাপে একাধিক প্রসেস থাকলে, WebView, CookieManager বা android.webkit প্যাকেজে অন্য কোনও API ব্যবহার করলে, দ্বিতীয় প্রসেস WebView মেথড কল করার সময় আপনার অ্যাপ ক্র্যাশ করবে। |
| SELinux-এর মাধ্যমে অ্যাপের ডেটা ডিরেক্টরি অ্যাক্সেস ব্লক করা হয়েছে | সিস্টেমটি প্রতিটি অ্যাপের ব্যক্তিগত ডেটা ডিরেক্টরিতে প্রতিটি অ্যাপের SELinux বিধিনিষেধ সহ প্রতিটি অ্যাপের SELinux স্যান্ডবক্স প্রয়োগ করে। পাথের মাধ্যমে অন্য অ্যাপের ডেটা ডিরেক্টরি সরাসরি অ্যাক্সেস করার অনুমতি এখন আর দেওয়া হয় না। অ্যাপগুলি IPC মেকানিজম ব্যবহার করে ডেটা শেয়ার করা চালিয়ে যেতে পারে, যার মধ্যে FD পাস করাও অন্তর্ভুক্ত। |
Android 9-কে টার্গেট করা অ্যাপের আচরণে পরিবর্তনের আরও বিস্তারিত তালিকার জন্য, আচরণে পরিবর্তন ডকুমেন্ট দেখুন।
Android 9-এ উপলভ্য নতুন ফিচার ও API এক্সপ্লোর করতে, Android 9 ফিচার ও API দেখুন।