Android 8.0-এ মাইগ্রেট করা হচ্ছে

Android 8.0 (API লেভেল ২৬) আচরণগত পরিবর্তন এবং নতুন ফিচার ও API নিয়ে এসেছে, যেগুলি আপনি নিজের অ্যাপে ব্যবহার করতে পারবেন। এই ডকুমেন্ট থেকে আপনি দুটি মূল ফেজ জুড়ে Android 8.0-এ আপনার অ্যাপ মাইগ্রেট করার ধাপগুলির একটি ওভারভিউ পাবেন:

  1. Android 8.0-এর সাথে মানানসই কিনা তা নিশ্চিত করুন

    প্ল্যাটফর্মের নতুন ভার্সনে আপনার অ্যাপ সম্পূর্ণভাবে কাজ করছে কিনা তা যাচাই করুন। এই পর্যায়ে, আপনি নতুন API ব্যবহার করেন না বা আপনার অ্যাপের targetSdkVersion পরিবর্তন করেন না, তবে ছোটখাটো পরিবর্তন প্রয়োজন হতে পারে।

  2. আপনার টার্গেট ভার্সন আপডেট করুন এবং Android 8.0 ফিচার ব্যবহার করুন

    আপনি যখন প্ল্যাটফর্মের নতুন ফিচারের সুবিধা নিতে প্রস্তুত হবেন, তখন আপনার targetSdkVersion-কে ২৬-এ আপডেট করুন, অ্যাপটি প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা যাচাই করুন এবং তারপরে নতুন API ব্যবহার করা শুরু করুন।

Android 8.0-এর সাথে মানানসই কিনা তা নিশ্চিত করুন

এখানে উদ্দেশ্য হল আপনার বর্তমান অ্যাপ Android 8.0 (API লেভেল ২৬)-এ ঠিকঠাক কাজ করছে কিনা তা নিশ্চিত করা। কিছু প্ল্যাটফর্ম পরিবর্তন আপনার অ্যাপের আচরণকে প্রভাবিত করতে পারে, তাই কিছু অ্যাডজাস্টমেন্টের প্রয়োজন হতে পারে, তবে আপনাকে নতুন API ব্যবহার করতে হবে না বা আপনার targetSdkVersion পরিবর্তন করতে হবে না।

Android 8.0-এর সাথে মানানসই কিনা তা ধাপে ধাপে নিশ্চিত করুন

Android 8.0 ভার্সনে চলে এমন ডিভাইস প্রস্তুত করা

  • আপনার কাছে মানানসই ডিভাইস (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P বা Nexus Player) থাকলে, আপনার ডিভাইস ফ্ল্যাশ করার নির্দেশাবলী অনুসরণ করুন।
  • অথবা Android এমুলেটরের জন্য Android 8.0 সিস্টেম ইমেজ ডাউনলোড করুন। এটি SDK Manager-এ Android 8.0-এর অধীনে Google APIs Intel x86 Atom System Image হিসেবে তালিকাভুক্ত করা আছে।

    মনে রাখবেন: Android 8.0 সিস্টেম ইমেজ Android Studio 3.0 এবং তার পরবর্তী ভার্সন থেকে ডাউনলোড করার জন্য উপলভ্য। আরও তথ্যের জন্য, Android 8.0 SDK পেতে নিচের বিভাগটি দেখুন।

কম্প্যাটিবিলিটি টেস্টিং পারফর্ম করা

বেশিরভাগ ক্ষেত্রে, Android 8.0 (API লেভেল ২৬)-এর সাথে কম্প্যাটিবিলিটি টেস্ট করার অর্থ হল, আপনার অ্যাপ রিলিজ করার জন্য প্রস্তুত করার সময় আপনি যে ধরনের টেস্ট করেন, এটিও ঠিক সেই ধরনের টেস্ট। কোর অ্যাপ কোয়ালিটি নির্দেশিকা এবং টেস্ট করার পেশাদার পদ্ধতি পর্যালোচনা করার জন্য এটি একটি ভালো সময়।

তবে, পরীক্ষার আরেকটি দিক আছে: Android 8.0, Android প্ল্যাটফর্মে এমন পরিবর্তন নিয়ে আসে যা আপনার অ্যাপের আচরণকে প্রভাবিত করতে পারে বা অ্যাপটিকে সম্পূর্ণভাবে ভেঙে দিতে পারে, এমনকি আপনি নিজের targetSdkVersion পরিবর্তন না করলেও। এই কারণে, সারণী ১-এ উল্লেখ করা মূল পরিবর্তনগুলি পর্যালোচনা করা এবং পরিবর্তনগুলি মানিয়ে নেওয়ার জন্য আপনি যে সমাধানগুলি প্রয়োগ করেন তা পরীক্ষা করা গুরুত্বপূর্ণ।

টেবিল ১. Android 8.0 ডিভাইসে চলা সব অ্যাপকে প্রভাবিত করে এমন গুরুত্বপূর্ণ পরিবর্তন।

পরিবর্তন করুন সারাংশ আরও রেফারেন্স
ব্যাকগ্রাউন্ড লোকেশন আপডেট কম ঘন ঘন করা হয় আপনার অ্যাপ ব্যাকগ্রাউন্ড পরিষেবা থেকে লোকেশন আপডেট পেলে, Android 8.0 (API লেভেল ২৬) ভার্সনে Android-এর পুরনো ভার্সনের তুলনায় কম ঘন ঘন আপডেট পায়। বিশেষ করে, ব্যাকগ্রাউন্ড পরিষেবা প্রতি ঘণ্টায় কয়েকবারের বেশি লোকেশন আপডেট পেতে পারে না। তবে, আপনার অ্যাপ ফোরগ্রাউন্ডে থাকলে, লোকেশন আপডেট করার হার অপরিবর্তিত থাকে। ব্যাকগ্রাউন্ড লোকেশন সংক্রান্ত সীমা
net.hostname আর কাজ করে না net.hostname সিস্টেম প্রপার্টি কোয়েরি করলে ফলাফল শূন্য হয়। কোনওটিই নয়
send(DatagramPacket) থেকে নতুন ব্যতিক্রম আগে কার্যকর করা connect(InetAddress, int) পদ্ধতি ব্যর্থ হলে send(DatagramPacket) পদ্ধতি SocketException থ্রো করে। আচরণগত পরিবর্তন: নেটওয়ার্ক ও HTTP(S) কানেক্টিভিটি
AbstractCollection পদ্ধতি থেকে NullPointerException-এর সঠিক মান AbstractCollection.removeAll(null) এবং AbstractCollection.retainAll(null) এখন সবসময় একটি NullPointerException থ্রো করে; আগে, কালেকশন খালি থাকলে NullPointerException থ্রো করা হত না। এই পরিবর্তনের ফলে ডকুমেন্টেশনের সাথে সামঞ্জস্যপূর্ণ আচরণ করা হয়। আচরণে পরিবর্তন: কালেকশন ম্যানেজ করা
Currency.getDisplayName(null) থেকে NullPointerException-এর সঠিক ফর্ম Currency.getDisplayName(null) কল করলে NullPointerException থ্রো করে। আচরণগত পরিবর্তন: লোকেল ও আন্তর্জাতিকীকরণ

Android 8.0 (API লেভেল ২৬)-এ আচরণগত পরিবর্তনের আরও বিস্তারিত তালিকার জন্য, Android 8.0-এ আচরণগত পরিবর্তন দেখুন।

আপনার টার্গেট ভার্সন আপডেট করুন এবং Android 8.0 ফিচার ব্যবহার করুন

এই বিভাগে ব্যাখ্যা করা হয়েছে যে কীভাবে আপনার targetSdkVersion ২৬-এ আপডেট করে এবং Android 8.0-এ উপলভ্য নতুন ফিচার যোগ করে Android 8.0 (API লেভেল ২৬)-এর জন্য সম্পূর্ণ সহায়তা চালু করবেন।

আপনাকে নতুন API অফার করার পাশাপাশি, আপনি targetSdkVersion-কে ২৬-এ আপডেট করলে, Android 8.0 কিছু আচরণগত পরিবর্তন নিয়ে আসে। কিছু আচরণগত পরিবর্তন কোড পরিবর্তন করার প্রয়োজন হতে পারে যাতে কোনও সমস্যা না হয়, তাই targetSdkVersion পরিবর্তন করার সময় আপনার অ্যাপ কীভাবে প্রভাবিত হতে পারে তা বুঝতে, Android 8.0-কে টার্গেট করা অ্যাপের জন্য সব আচরণগত পরিবর্তন পর্যালোচনা করুন।

মনে রাখবেন: Android 8.0-এ আপনার অ্যাপ টার্গেট করার জন্য প্ল্যাটফর্মের সাথে মানানসই হওয়া নিশ্চিত করতে উপরে বর্ণিত ধাপগুলি প্রয়োজনীয়, তাই প্রথমে সেই ধাপগুলি সম্পূর্ণ করতে ভুলবেন না।

টার্গেট ভার্সন আপডেট করুন এবং Android 8.0-এর ফিচার ধাপে ধাপে ব্যবহার করুন

Android 8.0 SDK পান

আপনি Android 8.0 (API লেভেল ২৬) সহ আপনার অ্যাপ তৈরি করার জন্য SDK প্যাকেজ পেতে পারেন Android Studio-এর লেটেস্ট ভার্সন ব্যবহার করে (Android Studio 3.0+ সাজেস্ট করা হয়)। Android Studio 3.0+ ভার্সনে এমন টুল আছে যা আপনাকে Android 8.0-এর ফিচার ব্যবহার করতে সাহায্য করে যেমন অ্যাডাপ্টিভ আইকন এবং ডাউনলোড করা যাবে এমন ফন্ট। আপনার যদি এখনও সেইসব ফিচারের প্রয়োজন না হয়, তাহলে আপনি Android Studio 2.3.3-এর স্টেবল ভার্সন ব্যবহার করে Android 8.0-এর সাথে আপনার অ্যাপ তৈরি করতে এবং নতুন API ব্যবহার করতে পারেন।

Android Studio-এর যেকোনও ভার্সন সেট-আপ করতে, এইসব ধাপ অনুসরণ করুন:

  1. Android Studio চালু করুন এবং টুল > SDK ম্যানেজার বিকল্পে ক্লিক করে SDK ম্যানেজার খুলুন।
  2. SDK প্ল্যাটফর্ম ট্যাবে, প্যাকেজের বিবরণ দেখুন বিকল্পে টিকচিহ্ন দিন। Android 8.0 প্রিভিউ-এর নিচে, নিম্নলিখিত বিষয়গুলি চেক করুন:
    • Android SDK Platform 26
    • Google APIs Intel x86 Atom সিস্টেম ইমেজ (শুধুমাত্র এমুলেটরের জন্য প্রয়োজন)
  3. SDK টুল ট্যাবে যান এবং আপডেট উপলভ্য আছে এমন সব আইটেম চেক করুন (ড্যাশ দেখানো প্রতিটি চেকবক্সে ক্লিক করুন)। এর মধ্যে নিম্নলিখিত আইটেমের লেটেস্ট ভার্সন অন্তর্ভুক্ত থাকতে হবে যা প্রয়োজন:
    • Android SDK Build-Tools 26.0.0
    • Android SDK Platform-Tools 26.0.0
    • Android Emulator 26.0.0
  4. বেছে নেওয়া সব SDK প্যাকেজ ইনস্টল করতে ঠিক আছে বিকল্পে ক্লিক করুন।

এখন আপনি Android 8.0-এর মাধ্যমে তৈরি করা শুরু করার জন্য রেডি।

আপনার বিল্ড কনফিগারেশন আপডেট করুন

compileSdkVersion, targetSdkVersion এবং সাপোর্ট লাইব্রেরি ভার্সন লেটেস্ট উপলভ্য রিভিশনে আপডেট করুন, যেমন:

android {
  compileSdkVersion 26

  defaultConfig {
    targetSdkVersion 26
  }
  ...
}

dependencies {
  compile 'com.android.support:appcompat-v7:26.0.0'
}

// REQUIRED: Google's new Maven repo is required for the latest
// support library that is compatible with Android 8.0
repositories {
    google()

    // If you're using a version of Gradle lower than 4.1, you must instead use:
    // maven {
    //     url 'https://maven.google.com'
    // }
}

আপনার ম্যানিফেস্ট ফাইল থেকে ব্রডকাস্ট রিসিভার সরিয়ে দিন

Android 8.0 (API লেভেল ২৬) ভার্সনে সম্প্রচার রিসিভারের জন্য নতুন সীমাবদ্ধতা চালু করা হয়েছে, তাই ইমপ্লিসিট সম্প্রচার ইনটেন্টের জন্য রেজিস্টার করা যেকোনও সম্প্রচার রিসিভার আপনাকে সরিয়ে দিতে হবে। এগুলি রেখে দিলে বিল্ড-টাইম বা রানটাইমে আপনার অ্যাপে কোনও সমস্যা হয় না, তবে Android 8.0-তে আপনার অ্যাপ রান করার সময় এগুলির কোনও প্রভাব থাকে না।

শুধুমাত্র আপনার অ্যাপ উত্তর দিতে পারে এমন ব্রডকাস্ট—এক্সপ্লিসিট ব্রডকাস্ট ইনটেন্ট এবং আপনার অ্যাপের প্যাকেজের নামে বিশেষভাবে পাঠানো ব্রডকাস্ট—Android 8.0-তে একইভাবে কাজ করা চালিয়ে যায়।

এই নতুন বিধিনিষেধের ক্ষেত্রে কিছু ব্যতিক্রম আছে। Android 8.0-কে টার্গেট করা অ্যাপে এখনও কাজ করে এমন ইমপ্লিসিট ব্রডকাস্টের তালিকা দেখতে, ইমপ্লিসিট ব্রডকাস্ট ব্যতিক্রম দেখুন।

আপনার Android 8.0 অ্যাপ টেস্ট করুন

উপরের প্রস্তুতি সম্পূর্ণ হলে, আপনি অ্যাপ তৈরি করতে পারবেন এবং Android 8.0 (API লেভেল ২৬) টার্গেট করার সময় এটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে আরও পরীক্ষা করতে পারবেন। কোর অ্যাপ কোয়ালিটি সংক্রান্ত নির্দেশিকা এবং টেস্ট করার পেশাদার পদ্ধতি পর্যালোচনা করার জন্য এটি আরেকটি ভালো সময়।

আপনি যখন targetSdkVersion ২৬-এ সেট করে আপনার অ্যাপ তৈরি করেন, তখন প্ল্যাটফর্মে কিছু নির্দিষ্ট পরিবর্তন হয় যা আপনার জানা উচিত। এইসব পরিবর্তনের মধ্যে কিছু আপনার অ্যাপের আচরণে উল্লেখযোগ্যভাবে প্রভাব ফেলতে পারে অথবা এমনকি আপনার অ্যাপকে সম্পূর্ণভাবে ভেঙে দিতে পারে, এমনকি আপনি Android 8.0-তে নতুন ফিচার প্রয়োগ না করলেও।

সারণী ২-এ এইসব পরিবর্তনের তালিকা দেওয়া আছে এবং আরও তথ্যের জন্য লিঙ্কও দেওয়া আছে।

সারণী ২. targetSdkVersion-এর মান ২৬-এ সেট করা হলে, অ্যাপকে প্রভাবিত করে এমন মূল পরিবর্তন।

পরিবর্তন করুন সারাংশ আরও রেফারেন্স
গোপনীয়তা Android 8.0 (API লেভেল ২৬) ভার্সনে net.dns1, net.dns2, net.dns3 বা net.dns4 সিস্টেম প্রপার্টি ব্যবহার করা যায় না। ব্যবহার সংক্রান্ত পরিবর্তন: গোপনীয়তা
রাইট ও এক্সিকিউট করা যায় এমন সেগমেন্ট এনফোর্স করা হয়েছে নেটিভ লাইব্রেরির জন্য, Android 8.0 (API লেভেল ২৬) এই নিয়ম প্রয়োগ করে যে ডেটা এক্সিকিউটেবল এবং কোড রাইটেবল হওয়া চলবে না। ব্যবহার সংক্রান্ত পরিবর্তন: নেটিভ লাইব্রেরি
ELF হেডার ও বিভাগ যাচাইকরণ ডায়নামিক লিঙ্কার ELF হেডার ও সেকশন হেডারে আরও ভ্যালু চেক করে এবং সেগুলি ভুল হলে কাজ করে না। ব্যবহার সংক্রান্ত পরিবর্তন: নেটিভ লাইব্রেরি
বিজ্ঞপ্তি Android 8.0 (API লেভেল ২৬) ভার্সনের SDK-কে টার্গেট করা অ্যাপে ব্যবহারকারীদের বিজ্ঞপ্তি পোস্ট করার জন্য এক বা একাধিক বিজ্ঞপ্তি চ্যানেল প্রয়োগ করতে হবে। API ওভারভিউ: বিজ্ঞপ্তি
List.sort() পদ্ধতি এই পদ্ধতির প্রয়োগ আর Collections.sort() কল নাও করতে পারে অথবা স্ট্যাক ওভারফ্লোর কারণে আপনার অ্যাপে ব্যতিক্রম দেখা যাবে। আচরণে পরিবর্তন: কালেকশন ম্যানেজ করা
Collections.sort() পদ্ধতি তালিকা প্রয়োগ করার সময়, Collections.sort() এখন একটি ConcurrentModificationException থ্রো করে। আচরণ পরিবর্তন: সংগ্রহ ম্যানেজ করা

Android 8.0 (API লেভেল ২৬)-এ আচরণগত পরিবর্তনের আরও বিস্তারিত তালিকার জন্য, Android 8.0-এ আচরণগত পরিবর্তন দেখুন।

Android 8.0 (API লেভেল ২৬)-এ উপলভ্য নতুন ফিচার ও API এক্সপ্লোর করতে, Android 8.0 ফিচার ও API দেখুন।