অ্যান্ড্রয়েড 6.0 পরিবর্তন

নতুন বৈশিষ্ট্য এবং ক্ষমতার পাশাপাশি, Android 6.0 (API লেভেল 23) বিভিন্ন সিস্টেম পরিবর্তন এবং API আচরণ পরিবর্তনগুলি অন্তর্ভুক্ত করে। এই দস্তাবেজটি কিছু মূল পরিবর্তনগুলিকে হাইলাইট করে যা আপনার বুঝতে হবে এবং আপনার অ্যাপগুলিতে অ্যাকাউন্ট করা উচিত৷

আপনি যদি আগে অ্যান্ড্রয়েডের জন্য একটি অ্যাপ প্রকাশ করে থাকেন, তাহলে জেনে রাখুন যে প্ল্যাটফর্মের এই পরিবর্তনগুলি আপনার অ্যাপকে প্রভাবিত করে৷

রানটাইম অনুমতি

এই রিলিজটি একটি নতুন অনুমতি মডেল প্রবর্তন করে, যেখানে ব্যবহারকারীরা এখন রানটাইমে সরাসরি অ্যাপের অনুমতিগুলি পরিচালনা করতে পারে। অ্যাপ বিকাশকারীদের জন্য ইনস্টলেশন এবং স্বয়ংক্রিয়-আপডেট প্রক্রিয়াগুলিকে স্ট্রিমলাইন করার সময় এই মডেলটি ব্যবহারকারীদের উন্নত দৃশ্যমানতা এবং অনুমতিগুলির উপর নিয়ন্ত্রণ দেয়। ব্যবহারকারীরা ইনস্টল করা অ্যাপগুলির জন্য পৃথকভাবে অনুমতি প্রদান বা প্রত্যাহার করতে পারেন।

আপনার অ্যাপ্লিকেশানগুলিতে যেগুলি Android 6.0 (API স্তর 23) বা উচ্চতরকে লক্ষ্য করে, রানটাইমে পরীক্ষা করে অনুমতির অনুরোধ করা নিশ্চিত করুন৷ আপনার অ্যাপকে অনুমতি দেওয়া হয়েছে কিনা তা নির্ধারণ করতে, নতুন checkSelfPermission() পদ্ধতিতে কল করুন। অনুমতির অনুরোধ করতে, নতুন requestPermissions() পদ্ধতিতে কল করুন। এমনকি যদি আপনার অ্যাপ অ্যান্ড্রয়েড 6.0 (API লেভেল 23) টার্গেট না করে, তাহলেও নতুন অনুমতি মডেলের অধীনে আপনার অ্যাপটি পরীক্ষা করা উচিত।

আপনার অ্যাপে নতুন অনুমতি মডেল সমর্থন করার বিষয়ে বিশদ বিবরণের জন্য, সিস্টেম অনুমতিগুলির সাথে কাজ করা দেখুন। কীভাবে আপনার অ্যাপে প্রভাব মূল্যায়ন করবেন তার টিপসের জন্য, অনুমতি ব্যবহারের নোটগুলি দেখুন।

ডোজ এবং অ্যাপ স্ট্যান্ডবাই

এই রিলিজটি নিষ্ক্রিয় ডিভাইস এবং অ্যাপ্লিকেশানগুলির জন্য নতুন পাওয়ার-সেভিং অপ্টিমাইজেশন প্রবর্তন করে৷ এই বৈশিষ্ট্যগুলি সমস্ত অ্যাপ্লিকেশানগুলিকে প্রভাবিত করে তাই এই নতুন মোডগুলিতে আপনার অ্যাপগুলি পরীক্ষা করা নিশ্চিত করুন৷

  • Doze : যদি একজন ব্যবহারকারী একটি ডিভাইস আনপ্লাগ করে এবং একটি নির্দিষ্ট সময়ের জন্য স্ক্রীন বন্ধ রেখে এটিকে স্থির রাখে, ডিভাইসটি Doze মোডে চলে যায়, যেখানে এটি সিস্টেমটিকে ঘুমের অবস্থায় রাখার চেষ্টা করে। এই মোডে, ডিভাইসগুলি পর্যায়ক্রমে সংক্ষিপ্ত সময়ের জন্য স্বাভাবিক ক্রিয়াকলাপ পুনরায় শুরু করে যাতে অ্যাপ সিঙ্ক হতে পারে এবং সিস্টেম যেকোন মুলতুবি ক্রিয়াকলাপ সম্পাদন করতে পারে।
  • অ্যাপ স্ট্যান্ডবাই : অ্যাপ স্ট্যান্ডবাই সিস্টেমকে একটি অ্যাপ নিষ্ক্রিয় কিনা তা নির্ধারণ করতে দেয় যখন ব্যবহারকারী সক্রিয়ভাবে এটি ব্যবহার করছেন না। ব্যবহারকারী নির্দিষ্ট সময়ের জন্য অ্যাপটিকে স্পর্শ না করলে সিস্টেমটি এই সংকল্প করে। ডিভাইসটি আনপ্লাগ করা থাকলে, সিস্টেমটি নেটওয়ার্ক অ্যাক্সেস অক্ষম করে এবং এটি নিষ্ক্রিয় বলে মনে করা অ্যাপগুলির জন্য সিঙ্ক এবং কাজগুলি স্থগিত করে৷

এই শক্তি-সাশ্রয়ী পরিবর্তনগুলি সম্পর্কে আরও জানতে, ডোজ এবং অ্যাপ স্ট্যান্ডবাই এর জন্য অপ্টিমাইজ করা দেখুন।

Apache HTTP ক্লায়েন্ট অপসারণ

Android 6.0 রিলিজ Apache HTTP ক্লায়েন্টের জন্য সমর্থন সরিয়ে দেয়। যদি আপনার অ্যাপটি এই ক্লায়েন্টটি ব্যবহার করে এবং Android 2.3 (API লেভেল 9) বা উচ্চতরকে লক্ষ্য করে, তাহলে পরিবর্তে HttpURLConnection ক্লাস ব্যবহার করুন। এই APIটি আরও দক্ষ কারণ এটি স্বচ্ছ কম্প্রেশন এবং প্রতিক্রিয়া ক্যাশিংয়ের মাধ্যমে নেটওয়ার্ক ব্যবহার হ্রাস করে এবং শক্তি খরচ কম করে। Apache HTTP API ব্যবহার চালিয়ে যেতে, আপনাকে প্রথমে আপনার build.gradle ফাইলে নিম্নলিখিত কম্পাইল-টাইম নির্ভরতা ঘোষণা করতে হবে:

android {
    useLibrary 'org.apache.http.legacy'
}

বিরক্তিকর এসএসএল

অ্যান্ড্রয়েড ওপেনএসএসএল থেকে বোরিংএসএসএল লাইব্রেরিতে চলে যাচ্ছে। আপনি যদি আপনার অ্যাপে Android NDK ব্যবহার করেন, তাহলে ক্রিপ্টোগ্রাফিক লাইব্রেরির সাথে লিঙ্ক করবেন না যেগুলি NDK API-এর অংশ নয়, যেমন libcrypto.so এবং libssl.so । এই লাইব্রেরিগুলি সর্বজনীন API নয়, এবং রিলিজ এবং ডিভাইস জুড়ে বিজ্ঞপ্তি ছাড়াই পরিবর্তন বা ভাঙতে পারে। উপরন্তু, আপনি নিজেকে নিরাপত্তা দুর্বলতা প্রকাশ করতে পারেন. পরিবর্তে, JNI-এর মাধ্যমে Java ক্রিপ্টোগ্রাফি API-কে কল করতে বা আপনার পছন্দের ক্রিপ্টোগ্রাফি লাইব্রেরির সাথে স্ট্যাটিকভাবে লিঙ্ক করতে আপনার নেটিভ কোড পরিবর্তন করুন।

হার্ডওয়্যার শনাক্তকারীর অ্যাক্সেস

ব্যবহারকারীদের আরও বেশি ডেটা সুরক্ষা প্রদান করতে, এই রিলিজ থেকে শুরু করে, Android Wi-Fi এবং Bluetooth API ব্যবহার করে অ্যাপগুলির জন্য ডিভাইসের স্থানীয় হার্ডওয়্যার শনাক্তকারীতে প্রোগ্রাম্যাটিক অ্যাক্সেস সরিয়ে দেয়৷ WifiInfo.getMacAddress() এবং BluetoothAdapter.getAddress() পদ্ধতিগুলি এখন 02:00:00:00:00:00 একটি ধ্রুবক মান প্রদান করে।

ব্লুটুথ এবং ওয়াই-ফাই স্ক্যানের মাধ্যমে কাছাকাছি বাহ্যিক ডিভাইসগুলির হার্ডওয়্যার শনাক্তকারী অ্যাক্সেস করতে, আপনার অ্যাপের এখন ACCESS_FINE_LOCATION বা ACCESS_COARSE_LOCATION অনুমতি থাকতে হবে:

দ্রষ্টব্য : যখন Android 6.0 (API স্তর 23) চালিত একটি ডিভাইস একটি ব্যাকগ্রাউন্ড ওয়াই-ফাই বা ব্লুটুথ স্ক্যান শুরু করে, তখন অপারেশনটি র্যান্ডমাইজড MAC ঠিকানা থেকে উদ্ভূত হিসাবে বহিরাগত ডিভাইসগুলিতে দৃশ্যমান হয়৷

বিজ্ঞপ্তি

এই রিলিজ Notification.setLatestEventInfo() পদ্ধতিটি সরিয়ে দেয়। বিজ্ঞপ্তি তৈরি করতে পরিবর্তে Notification.Builder ক্লাস ব্যবহার করুন। একটি বিজ্ঞপ্তি বারবার আপডেট করতে, Notification.Builder উদাহরণটি পুনরায় ব্যবহার করুন। আপডেট Notification দৃষ্টান্ত পেতে build() পদ্ধতিতে কল করুন।

adb shell dumpsys notification কমান্ড আর আপনার বিজ্ঞপ্তি পাঠ্য প্রিন্ট করে না। একটি নোটিফিকেশন অবজেক্টে টেক্সট প্রিন্ট করতে পরিবর্তে adb shell dumpsys notification --noredact কমান্ড ব্যবহার করুন।

অডিও ম্যানেজার পরিবর্তন

সরাসরি ভলিউম সেট করা বা AudioManager ক্লাসের মাধ্যমে নির্দিষ্ট স্ট্রীম মিউট করা আর সমর্থিত নয়। setStreamSolo() পদ্ধতি অবহেলিত হয়েছে, এবং আপনার পরিবর্তে requestAudioFocus() পদ্ধতিতে কল করা উচিত। একইভাবে, setStreamMute() পদ্ধতিটি অবহেলিত; পরিবর্তে, adjustStreamVolume() পদ্ধতিতে কল করুন এবং দিক মান ADJUST_MUTE বা ADJUST_UNMUTE পাস করুন।

পাঠ্য নির্বাচন

স্ক্রীন একটি ভাসমান টুলবারের মধ্যে নতুন পাঠ্য নির্বাচন বৈশিষ্ট্য দেখাচ্ছে

যখন ব্যবহারকারীরা আপনার অ্যাপে পাঠ্য নির্বাচন করেন, আপনি এখন একটি ভাসমান টুলবারে পাঠ্য নির্বাচনের ক্রিয়া যেমন কাট , অনুলিপি এবং পেস্ট প্রদর্শন করতে পারেন। ব্যবহারকারীর ইন্টারঅ্যাকশন বাস্তবায়ন প্রাসঙ্গিক অ্যাকশন বারের মতোই, যেমনটি পৃথক ভিউয়ের জন্য প্রাসঙ্গিক অ্যাকশন মোড সক্ষম করাতে বর্ণিত হয়েছে।

পাঠ্য নির্বাচনের জন্য একটি ভাসমান টুলবার প্রয়োগ করতে, আপনার বিদ্যমান অ্যাপগুলিতে নিম্নলিখিত পরিবর্তনগুলি করুন:

  1. আপনার View বা Activity অবজেক্টে, আপনার ActionMode কলগুলি startActionMode(Callback) থেকে startActionMode(Callback, ActionMode.TYPE_FLOATING) এ পরিবর্তন করুন।
  2. ActionMode.Callback এর আপনার বিদ্যমান বাস্তবায়ন নিন এবং এর পরিবর্তে এটিকে ActionMode.Callback2 প্রসারিত করুন।
  3. ভিউতে বিষয়বস্তু Rect অবজেক্টের (যেমন একটি পাঠ্য নির্বাচন আয়তক্ষেত্র) স্থানাঙ্ক প্রদান করতে onGetContentRect() পদ্ধতিটি ওভাররাইড করুন।
  4. যদি আয়তক্ষেত্র পজিশনিং আর বৈধ না হয়, এবং এটিই একমাত্র উপাদান যা অবৈধ করা হবে, invalidateContentRect() পদ্ধতিতে কল করুন।

আপনি যদি অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরি রিভিশন 22.2 ব্যবহার করেন, তাহলে সচেতন থাকুন যে ফ্লোটিং টুলবারগুলি পশ্চাদমুখী-সামঞ্জস্যপূর্ণ নয় এবং অ্যাপকমপ্যাট ডিফল্টরূপে ActionMode অবজেক্টের উপর নিয়ন্ত্রণ নেয়। এটি ভাসমান টুলবারগুলিকে প্রদর্শিত হতে বাধা দেয়। একটি AppCompatActivityActionMode সমর্থন সক্ষম করতে, getDelegate() কল করুন, তারপরে প্রত্যাবর্তিত AppCompatDelegate অবজেক্টে setHandleNativeActionModesEnabled() কল করুন এবং ইনপুট প্যারামিটারটিকে false সেট করুন। এই কল ফ্রেমওয়ার্কে ActionMode অবজেক্টের নিয়ন্ত্রণ ফিরিয়ে দেয়। Android 6.0 (API লেভেল 23) চালিত ডিভাইসগুলিতে, যা ফ্রেমওয়ার্ককে ActionBar বা ফ্লোটিং টুলবার মোডগুলিকে সমর্থন করার অনুমতি দেয়, যখন Android 5.1 (API স্তর 22) বা তার নীচে চালিত ডিভাইসগুলিতে শুধুমাত্র ActionBar মোডগুলি সমর্থিত।

ব্রাউজার বুকমার্ক পরিবর্তন

এই প্রকাশ গ্লোবাল বুকমার্কের জন্য সমর্থন সরিয়ে দেয়। android.provider.Browser.getAllBookmarks() এবং android.provider.Browser.saveBookmark() পদ্ধতিগুলি এখন সরানো হয়েছে৷ একইভাবে, READ_HISTORY_BOOKMARKS এবং WRITE_HISTORY_BOOKMARKS অনুমতিগুলি সরানো হয়েছে৷ আপনার অ্যাপ যদি Android 6.0 (API লেভেল 23) বা উচ্চতরকে লক্ষ্য করে, তাহলে গ্লোবাল প্রোভাইডার থেকে বুকমার্ক অ্যাক্সেস করবেন না বা বুকমার্ক অনুমতিগুলি ব্যবহার করবেন না। পরিবর্তে, আপনার অ্যাপের বুকমার্ক ডেটা অভ্যন্তরীণভাবে সংরক্ষণ করা উচিত।

অ্যান্ড্রয়েড কীস্টোর পরিবর্তন

এই প্রকাশের সাথে, Android কীস্টোর প্রদানকারী আর DSA সমর্থন করে না। ECDSA এখনও সমর্থিত।

সুরক্ষিত লক স্ক্রীন অক্ষম বা পুনরায় সেট করা হলে (উদাহরণস্বরূপ, ব্যবহারকারী বা ডিভাইস প্রশাসক দ্বারা) যে কীগুলির জন্য বিশ্রামে এনক্রিপশনের প্রয়োজন হয় না সেগুলি আর মুছে ফেলা হবে না৷ এই ইভেন্টগুলির সময় যে কীগুলির জন্য বিশ্রামে এনক্রিপশন প্রয়োজন সেগুলি মুছে ফেলা হবে৷

Wi-Fi এবং নেটওয়ার্কিং পরিবর্তন

এই রিলিজটি Wi-Fi এবং নেটওয়ার্কিং API-এ নিম্নলিখিত আচরণ পরিবর্তনগুলি প্রবর্তন করে৷

  • আপনি যদি এই বস্তুগুলি তৈরি করেন তবেই আপনার অ্যাপগুলি এখন WifiConfiguration অবজেক্টের অবস্থা পরিবর্তন করতে পারে৷ ব্যবহারকারী বা অন্যান্য অ্যাপ দ্বারা তৈরি WifiConfiguration অবজেক্টগুলিকে সংশোধন বা মুছে ফেলার অনুমতি আপনার নেই৷
  • পূর্বে, disableAllOthers=true সেটিং সহ enableNetwork() ব্যবহার করে একটি নির্দিষ্ট Wi-Fi নেটওয়ার্কের সাথে সংযোগ করতে একটি অ্যাপ ডিভাইসটিকে বাধ্য করলে, ডিভাইসটি সেলুলার ডেটার মতো অন্যান্য নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন হয়ে যায়। এই রিলিজে, ডিভাইসটি আর এই ধরনের অন্যান্য নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন করে না। আপনার অ্যাপের targetSdkVersion “20” বা তার কম হলে, এটি নির্বাচিত Wi-Fi নেটওয়ার্কে পিন করা হয়। যদি আপনার অ্যাপের targetSdkVersion “21” বা তার বেশি হয়, তাহলে মাল্টিনেটওয়ার্ক API (যেমন openConnection() , bindSocket() , এবং নতুন bindProcessToNetwork() পদ্ধতি) ব্যবহার করুন যাতে এটির নেটওয়ার্ক ট্র্যাফিক নির্বাচিত নেটওয়ার্কে পাঠানো হয়।

ক্যামেরা পরিষেবা পরিবর্তন

এই রিলিজে, ক্যামেরা পরিষেবাতে শেয়ার্ড রিসোর্স অ্যাক্সেস করার মডেলটি আগের "আগে আসলে, আগে পরিবেশন করুন" অ্যাক্সেস মডেল থেকে এমন একটি অ্যাক্সেস মডেলে পরিবর্তন করা হয়েছে যেখানে উচ্চ-অগ্রাধিকার প্রক্রিয়াগুলি পছন্দ করা হয়। পরিষেবার আচরণের পরিবর্তনগুলির মধ্যে রয়েছে:

  • একটি ক্যামেরা ডিভাইস খোলা এবং কনফিগার করা সহ ক্যামেরা সাবসিস্টেম সংস্থানগুলিতে অ্যাক্সেস ক্লায়েন্ট অ্যাপ্লিকেশন প্রক্রিয়ার "অগ্রাধিকার" এর উপর ভিত্তি করে দেওয়া হয়। ব্যবহারকারী-দৃশ্যমান বা ফোরগ্রাউন্ড ক্রিয়াকলাপ সহ অ্যাপ্লিকেশন প্রক্রিয়াগুলিকে সাধারণত উচ্চ-অগ্রাধিকার দেওয়া হয়, যা ক্যামেরা সংস্থান অর্জন এবং ব্যবহারকে আরও নির্ভরযোগ্য করে তোলে।
  • যখন একটি উচ্চ অগ্রাধিকার অ্যাপ্লিকেশন ক্যামেরা ব্যবহার করার চেষ্টা করে তখন নিম্ন অগ্রাধিকারের অ্যাপ্লিকেশনগুলির জন্য সক্রিয় ক্যামেরা ক্লায়েন্টদের "উচ্ছেদ" করা হতে পারে৷ অপ্রচলিত Camera API-তে, এর ফলে বহিষ্কৃত ক্লায়েন্টের জন্য onError() ডাকা হচ্ছে। Camera2 API-তে, এর ফলে onDisconnected() উচ্ছেদ করা ক্লায়েন্টের জন্য ডাকা হচ্ছে।
  • উপযুক্ত ক্যামেরা হার্ডওয়্যার সহ ডিভাইসগুলিতে, পৃথক অ্যাপ্লিকেশন প্রক্রিয়াগুলি একই সাথে পৃথক ক্যামেরা ডিভাইসগুলি স্বাধীনভাবে খুলতে এবং ব্যবহার করতে সক্ষম হয়। যাইহোক, বহু-প্রক্রিয়া ব্যবহারের ক্ষেত্রে, যেখানে একযোগে অ্যাক্সেসের ফলে যেকোনও খোলা ক্যামেরা ডিভাইসের কর্মক্ষমতা বা ক্ষমতার উল্লেখযোগ্য অবনতি ঘটে, এখন ক্যামেরা পরিষেবা দ্বারা সনাক্ত করা হয়েছে এবং অননুমোদিত করা হয়েছে। এই পরিবর্তনের ফলে নিম্ন অগ্রাধিকারের ক্লায়েন্টদের জন্য "উচ্ছেদ" হতে পারে এমনকি যখন অন্য কোনো অ্যাপ একই ক্যামেরা ডিভাইসে সরাসরি অ্যাক্সেস করার চেষ্টা করছে না।
  • বর্তমান ব্যবহারকারী পরিবর্তন করার ফলে পূর্ববর্তী ব্যবহারকারীর অ্যাকাউন্টের মালিকানাধীন অ্যাপ্লিকেশানগুলিতে সক্রিয় ক্যামেরা ক্লায়েন্টদের উচ্ছেদ করা হয়৷ ক্যামেরায় অ্যাক্সেস বর্তমান ডিভাইস ব্যবহারকারীর মালিকানাধীন ব্যবহারকারী প্রোফাইলে সীমাবদ্ধ। অনুশীলনে, এর অর্থ হল একটি "অতিথি" অ্যাকাউন্ট, উদাহরণস্বরূপ, ব্যবহারকারী যখন অন্য অ্যাকাউন্টে স্যুইচ করে তখন ক্যামেরা সাবসিস্টেম ব্যবহার করে এমন চলমান প্রক্রিয়াগুলি ছেড়ে যেতে সক্ষম হবে না।

রানটাইম

ART রানটাইম এখন সঠিকভাবে newInstance() পদ্ধতির অ্যাক্সেসের নিয়ম প্রয়োগ করে। এই পরিবর্তনটি একটি সমস্যার সমাধান করে যেখানে ডালভিক পূর্ববর্তী সংস্করণগুলিতে অ্যাক্সেসের নিয়মগুলি ভুলভাবে পরীক্ষা করছিল। যদি আপনার অ্যাপ newInstance() পদ্ধতি ব্যবহার করে এবং আপনি অ্যাক্সেস চেকগুলিকে ওভাররাইড করতে চান, তাহলে ইনপুট প্যারামিটারটি true তে সেট করে setAccessible() পদ্ধতিতে কল করুন। যদি আপনার অ্যাপটি v7 অ্যাপকম্প্যাট লাইব্রেরি বা v7 রিসাইক্লারভিউ লাইব্রেরি ব্যবহার করে, তাহলে এই লাইব্রেরির সর্বশেষ সংস্করণে ব্যবহার করার জন্য আপনাকে অবশ্যই আপনার অ্যাপ আপডেট করতে হবে। অন্যথায়, নিশ্চিত করুন যে XML থেকে উল্লেখ করা যেকোনো কাস্টম ক্লাস আপডেট করা হয়েছে যাতে তাদের ক্লাস কনস্ট্রাক্টর অ্যাক্সেসযোগ্য হয়।

এই রিলিজ ডায়নামিক লিঙ্কারের আচরণ আপডেট করে। ডায়নামিক লিঙ্কার এখন একটি লাইব্রেরির soname এবং এর পাথের মধ্যে পার্থক্য বুঝতে পারে ( পাবলিক বাগ 6670 ), এবং soname দ্বারা অনুসন্ধান এখন কার্যকর করা হয়েছে। যে অ্যাপগুলি আগে কাজ করেছিল যেগুলিতে খারাপ DT_NEEDED এন্ট্রি রয়েছে (সাধারণত বিল্ড মেশিনের ফাইল সিস্টেমে পরম পাথ) লোড করার সময় ব্যর্থ হতে পারে৷

dlopen(3) RTLD_LOCAL পতাকা এখন সঠিকভাবে প্রয়োগ করা হয়েছে। মনে রাখবেন যে RTLD_LOCAL ডিফল্ট, তাই dlopen(3) এ যে কলগুলি স্পষ্টভাবে RTLD_LOCAL ব্যবহার করেনি সেগুলি প্রভাবিত হবে (যদি না আপনার অ্যাপটি স্পষ্টভাবে RTLD_GLOBAL ব্যবহার করে)। RTLD_LOCAL এর সাথে, dlopen(3) এ পরবর্তী কলের মাধ্যমে লোড করা লাইব্রেরিগুলিতে প্রতীকগুলি উপলব্ধ করা হবে না ( DT_NEEDED এন্ট্রিগুলির দ্বারা উল্লেখ করার বিপরীতে)।

অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, যদি আপনার অ্যাপটি পাঠ্য স্থানান্তর সহ একটি ভাগ করা লাইব্রেরি লোড করার জন্য সিস্টেমকে অনুরোধ করে, তবে সিস্টেমটি একটি সতর্কতা প্রদর্শন করে তবে লাইব্রেরিটি লোড করার অনুমতি দেয়। এই রিলিজের শুরুতে, আপনার অ্যাপের টার্গেট SDK সংস্করণ 23 বা তার বেশি হলে সিস্টেম এই লাইব্রেরিটিকে প্রত্যাখ্যান করে। একটি লাইব্রেরি লোড হতে ব্যর্থ হয়েছে কিনা তা শনাক্ত করতে আপনাকে সাহায্য করার জন্য, আপনার অ্যাপের dlopen(3) ব্যর্থতা লগ করা উচিত এবং dlerror(3) কল রিটার্ন করে এমন সমস্যার বিবরণ পাঠ্য অন্তর্ভুক্ত করা উচিত। পাঠ্য স্থানান্তর পরিচালনার বিষয়ে আরও জানতে, এই নির্দেশিকাটি দেখুন।

APK বৈধতা

প্ল্যাটফর্মটি এখন APK-এর কঠোর বৈধতা সম্পাদন করে। একটি APK দুর্নীতিগ্রস্ত বলে বিবেচিত হয় যদি একটি ফাইল ম্যানিফেস্টে ঘোষণা করা হয় কিন্তু APK-এ উপস্থিত না থাকে। কোনো বিষয়বস্তু মুছে ফেলা হলে একটি APK পুনরায় স্বাক্ষর করতে হবে।

ইউএসবি সংযোগ

USB পোর্টের মাধ্যমে ডিভাইস সংযোগগুলি এখন ডিফল্টরূপে শুধুমাত্র চার্জ মোডে সেট করা আছে৷ একটি USB সংযোগের মাধ্যমে ডিভাইস এবং এর বিষয়বস্তু অ্যাক্সেস করতে, ব্যবহারকারীদের অবশ্যই এই ধরনের ইন্টারঅ্যাকশনের জন্য স্পষ্টভাবে অনুমতি দিতে হবে। যদি আপনার অ্যাপটি একটি USB পোর্টের মাধ্যমে ডিভাইসের সাথে ব্যবহারকারীর ইন্টারঅ্যাকশন সমর্থন করে, তাহলে বিবেচনা করুন যে ইন্টারঅ্যাকশনটি অবশ্যই স্পষ্টভাবে সক্ষম করা উচিত।

কাজের জন্য অ্যান্ড্রয়েড পরিবর্তন

এই রিলিজে Android for Work এর জন্য নিম্নলিখিত আচরণের পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:

  • ব্যক্তিগত প্রসঙ্গে কাজের পরিচিতি। ব্যবহারকারী যখন অতীতের কলগুলি দেখেন তখন Google ডায়ালার কল লগ এখন কাজের পরিচিতিগুলি প্রদর্শন করে৷ setCrossProfileCallerIdDisabled() কে true সেট করা Google ডায়লার কল লগে কাজের প্রোফাইল পরিচিতিগুলিকে লুকিয়ে রাখে৷ আপনি যদি setBluetoothContactSharingDisabled() false সেট করেন তবেই ব্লুটুথের মাধ্যমে ডিভাইসে ব্যক্তিগত পরিচিতির সাথে কাজের পরিচিতিগুলি প্রদর্শিত হতে পারে। ডিফল্টরূপে, এটি true হিসাবে সেট করা হয়।
  • Wi-Fi কনফিগারেশন অপসারণ: একটি প্রোফাইল মালিকের দ্বারা যোগ করা Wi-Fi কনফিগারেশনগুলি (উদাহরণস্বরূপ, addNetwork() পদ্ধতিতে কলের মাধ্যমে) যদি সেই কাজের প্রোফাইলটি মুছে ফেলা হয় তাহলে এখন সরানো হবে৷
  • Wi-Fi কনফিগারেশন লকডাউন: WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN অ-শূন্য হলে একজন সক্রিয় ডিভাইস মালিকের দ্বারা তৈরি যেকোনো Wi-Fi কনফিগারেশন ব্যবহারকারীর দ্বারা আর সংশোধন বা মুছে ফেলা যাবে না৷ ব্যবহারকারী এখনও তাদের নিজস্ব Wi-Fi কনফিগারেশন তৈরি এবং সংশোধন করতে পারেন। সক্রিয় ডিভাইস মালিকদের তাদের দ্বারা তৈরি না করা সহ যেকোনও ওয়াই-ফাই কনফিগারেশন সম্পাদনা বা অপসারণের বিশেষাধিকার রয়েছে৷
  • Google অ্যাকাউন্ট সংযোজনের মাধ্যমে ডিভাইস পলিসি কন্ট্রোলার ডাউনলোড করুন: যখন একটি Google অ্যাকাউন্ট যার জন্য ডিভাইস পলিসি কন্ট্রোলার (DPC) অ্যাপের মাধ্যমে পরিচালনার প্রয়োজন হয় একটি পরিচালিত প্রেক্ষাপটের বাইরে কোনো ডিভাইসে যোগ করা হয়, তখন অ্যাড অ্যাকাউন্ট ফ্লো ব্যবহারকারীকে উপযুক্ত WPC ইনস্টল করতে অনুরোধ করে। এই আচরণটি সেটিংস > অ্যাকাউন্ট এবং প্রাথমিক ডিভাইস সেটআপ উইজার্ডের মাধ্যমে যোগ করা অ্যাকাউন্টগুলির ক্ষেত্রেও প্রযোজ্য।
  • নির্দিষ্ট DevicePolicyManager API আচরণে পরিবর্তন:
    • setCameraDisabled() পদ্ধতিতে কল করা শুধুমাত্র কলিং ব্যবহারকারীর জন্য ক্যামেরাকে প্রভাবিত করে; পরিচালিত প্রোফাইল থেকে কল করা প্রাথমিক ব্যবহারকারীর উপর চলমান ক্যামেরা অ্যাপগুলিকে প্রভাবিত করে না।
    • উপরন্তু, setKeyguardDisabledFeatures() পদ্ধতিটি এখন প্রোফাইল মালিকদের জন্য, সেইসাথে ডিভাইসের মালিকদের জন্য উপলব্ধ।
    • একজন প্রোফাইল মালিক এই কীগার্ড সীমাবদ্ধতা সেট করতে পারেন:
      • KEYGUARD_DISABLE_TRUST_AGENTS এবং KEYGUARD_DISABLE_FINGERPRINT , যা প্রোফাইলের মূল ব্যবহারকারীর জন্য কীগার্ড সেটিংসকে প্রভাবিত করে৷
      • KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS , যা শুধুমাত্র পরিচালিত প্রোফাইলে অ্যাপ্লিকেশন দ্বারা উত্পন্ন বিজ্ঞপ্তিগুলিকে প্রভাবিত করে৷
    • DevicePolicyManager.createAndInitializeUser() এবং DevicePolicyManager.createUser() পদ্ধতিগুলি বাতিল করা হয়েছে৷
    • setScreenCaptureDisabled() পদ্ধতিটি এখন প্রদত্ত ব্যবহারকারীর একটি অ্যাপ অগ্রভাগে থাকলে সহায়তা কাঠামোকে ব্লক করে।
    • EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM এখন SHA-256-এ ডিফল্ট। SHA-1 এখনও পিছনের সামঞ্জস্যের জন্য সমর্থিত কিন্তু ভবিষ্যতে সরানো হবে। EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM এখন শুধুমাত্র SHA-256 গ্রহণ করে৷
    • Android 6.0 (API স্তর 23) এ বিদ্যমান ডিভাইস ইনিশিয়ালাইজার APIগুলি এখন সরানো হয়েছে৷
    • EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS সরানো হয়েছে তাই NFC বাম্প প্রভিশনিং একটি ফ্যাক্টরি রিসেট সুরক্ষিত ডিভাইসকে প্রোগ্রাম্যাটিকভাবে আনলক করতে পারে না৷
    • পরিচালিত ডিভাইসের NFC প্রভিশনিং চলাকালীন ডিভাইস মালিক অ্যাপে ডেটা পাঠাতে আপনি এখন EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE অতিরিক্ত ব্যবহার করতে পারেন।
    • কাজের প্রোফাইল, অ্যাসিস্ট লেয়ার এবং অন্যান্য সহ M রানটাইম অনুমতিগুলির জন্য Android for Work APIগুলি অপ্টিমাইজ করা হয়েছে৷ নতুন DevicePolicyManager অনুমতি API গুলি প্রি-M অ্যাপগুলিকে প্রভাবিত করে না৷
    • যখন ব্যবহারকারীরা ACTION_PROVISION_MANAGED_PROFILE বা ACTION_PROVISION_MANAGED_DEVICE উদ্দেশ্যের মাধ্যমে শুরু করা সেটআপ প্রবাহের সিঙ্ক্রোনাস অংশ থেকে ফিরে আসে, তখন সিস্টেমটি এখন একটি RESULT_CANCELED ফলাফল কোড প্রদান করে৷
  • অন্যান্য API-তে পরিবর্তন :
    • ডেটা ব্যবহার: android.app.usage.NetworkUsageStats ক্লাসের নাম পরিবর্তন করা হয়েছে NetworkStats
  • বিশ্বব্যাপী সেটিংসে পরিবর্তন :
    • setGlobalSettings() এর মাধ্যমে এই সেটিংস আর সেট করা যাবে না :
      • BLUETOOTH_ON
      • DEVELOPMENT_SETTINGS_ENABLED
      • MODE_RINGER
      • NETWORK_PREFERENCE
      • WIFI_ON
    • এই বিশ্বব্যাপী সেটিংস এখন setGlobalSettings() এর মাধ্যমে সেট করা যেতে পারে: