স্কোপড স্টোরেজ

স্কোপড স্টোরেজ এক্সটার্নাল স্টোরেজে অ্যাপের অ্যাক্সেস সীমিত করে। Android 11 বা উচ্চতর সংস্করণে, API 30 বা উচ্চতর টার্গেট করা অ্যাপগুলিকে অবশ্যই স্কোপড স্টোরেজ ব্যবহার করতে হবে। পূর্বে অ্যান্ড্রয়েড 10-এ, অ্যাপগুলি স্কোপড স্টোরেজ থেকে অপ্ট আউট করতে পারত।

অ্যাপ অ্যাক্সেস সীমাবদ্ধতা

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

স্কোপড স্টোরেজ ব্যবহার করা অ্যাপগুলির অ্যাক্সেসের নিম্নলিখিত স্তর থাকতে পারে (প্রকৃত অ্যাক্সেস বাস্তবায়ন নির্দিষ্ট)।

  • কোন অনুমতি ছাড়াই তাদের নিজস্ব ফাইলগুলিতে অ্যাক্সেস পড়ুন এবং লিখুন৷
  • READ_EXTERNAL_STORAGE অনুমতি সহ অন্যান্য অ্যাপের মিডিয়া ফাইলগুলিতে অ্যাক্সেস পড়ুন
  • অন্যান্য অ্যাপের মিডিয়া ফাইলগুলিতে লেখার অ্যাক্সেস শুধুমাত্র সরাসরি ব্যবহারকারীর সম্মতিতে অনুমোদিত (ব্যতিক্রম সিস্টেম গ্যালারি এবং সমস্ত ফাইল অ্যাক্সেসের জন্য যোগ্য অ্যাপগুলিকে দেওয়া হয়)
  • অন্য অ্যাপের বাহ্যিক অ্যাপ ডেটা ডিরেক্টরিতে পড়ার বা লেখার অ্যাক্সেস নেই

FUSE এর সাথে স্কোপড স্টোরেজ ব্যবহার করুন

অ্যান্ড্রয়েড 11 বা উচ্চতর ইউজারস্পেসে (FUSE) ফাইলসিস্টেমকে সমর্থন করে, যা মিডিয়াপ্রোভাইডার মডিউলকে ব্যবহারকারীর জায়গায় ফাইলের ক্রিয়াকলাপ পরীক্ষা করতে এবং অ্যাক্সেসের অনুমতি , অস্বীকার বা রিডাক্ট করার নীতির ভিত্তিতে ফাইলগুলিতে গেট অ্যাক্সেস করতে সক্ষম করে। স্কোপড স্টোরেজের অ্যাপগুলি যেগুলি FUSE ব্যবহার করে তারা স্কোপড স্টোরেজের গোপনীয়তা বৈশিষ্ট্যগুলি এবং একটি সরাসরি ফাইল পাথ ব্যবহার করে ফাইলগুলি অ্যাক্সেস করার ক্ষমতা পায় (অ্যাপগুলিতে ফাইল APIগুলিকে রেখে)।

অ্যান্ড্রয়েড 10 মিডিয়াপ্রোভাইডার দ্বারা ফাইল অ্যাক্সেসে স্কোপড স্টোরেজ নিয়মগুলি প্রয়োগ করেছে, তবে কার্নেল কলগুলিকে বাধা দেওয়ার জন্য প্রয়োজনীয় প্রচেষ্টার কারণে সরাসরি ফাইল পাথ অ্যাক্সেসের জন্য নয় (উদাহরণস্বরূপ, ফাইল API এবং NDK API ব্যবহার করে)। ফলস্বরূপ, স্কোপড স্টোরেজের অ্যাপগুলি সরাসরি ফাইল পাথ ব্যবহার করে ফাইলগুলি অ্যাক্সেস করতে পারে না। এই বিধিনিষেধটি অ্যাপ ডেভেলপারদের মানিয়ে নেওয়ার ক্ষমতাকে প্রভাবিত করেছে কারণ এটি মিডিয়াপ্রোভাইডার API-এ ফাইল API অ্যাক্সেস পুনরায় লেখার জন্য যথেষ্ট কোড পরিবর্তনের প্রয়োজন।

FUSE এবং SDCardFS

FUSE-এর জন্য Android 11 সমর্থন SDCardFS-এর অবমূল্যায়নের সাথে সম্পর্কযুক্ত নয়, কিন্তু পূর্বে SDCardFS ব্যবহার করা ডিভাইসগুলির জন্য মিডিয়া স্টোরের বিকল্প প্রদান করে। ডিভাইস:

  • কার্নেল 5.4 বা উচ্চতর ব্যবহার করে Android 11 বা তার বেশির সাথে লঞ্চ করলে SDCardFS ব্যবহার করা যাবে না।
  • অ্যান্ড্রয়েড 11 বা উচ্চতর সংস্করণে আপগ্রেড করলে ফাইলের ক্রিয়াকলাপগুলিকে আটকাতে এবং গোপনীয়তার লক্ষ্যগুলি পূরণ করতে SDCardFS-এর উপরে FUSE হোস্ট করতে পারে।

FUSE পারফরম্যান্স টিউনিং

Android পূর্বে Android 7 বা তার নিচের সংস্করণে FUSE সমর্থিত ছিল, যেখানে বাহ্যিক স্টোরেজ FUSE হিসাবে মাউন্ট করা হয়েছিল। সেই FUSE বাস্তবায়নের সাথে কর্মক্ষমতা এবং অচলাবস্থার সমস্যার কারণে, Android 8 SDCardFS চালু করেছে। অ্যান্ড্রয়েড 11 libfuse এর একটি উন্নত, ভাল-পরীক্ষিত বাস্তবায়ন ব্যবহার করে FUSE-এর জন্য সমর্থন পুনঃপ্রবর্তন করে যা Android 7 বা তার কম সময়ে পারফরম্যান্স সমস্যা সমাধানের জন্য টিউন করা যেতে পারে।

FUSE টিউনিংয়ে নিম্নলিখিত পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:

  • এই ডিরেক্টরিগুলির উপর নির্ভর করে এমন গেম অ্যাপগুলির কার্যক্ষমতা উন্নত করতে Android/data এবং Android/obb ডিরেক্টরিগুলির জন্য FUSE বাইপাস করা।
  • রিড পারফরম্যান্ট এবং মিডিয়া প্লেব্যাক মসৃণ রাখতে অপ্টিমাইজেশান (যেমন FUSE ফাইল সিস্টেমের রিড-এ্যাড এবং নোংরা অনুপাত টিউন করা)।
  • FUSE রাইট-ব্যাক ক্যাশে ব্যবহার করে।
  • সিস্টেম সার্ভারে আইপিসি কমাতে ক্যাশিং অনুমতি।
  • বাল্ক ক্রিয়াকলাপ দ্রুত করতে সমস্ত ফাইল অ্যাক্সেস সহ অ্যাপগুলির জন্য অপ্টিমাইজেশন।

উপরের টিউনিং টুইকগুলি FUSE এবং নন-FUSE ডিভাইসগুলির মধ্যে তুলনামূলক কর্মক্ষমতা তৈরি করতে পারে। উদাহরণস্বরূপ, FUSE ব্যবহার করে একটি টিউন করা Pixel 2 এবং Media Store ব্যবহার করে একটি Pixel 2 পরীক্ষা করলে ফাইল পাথ অ্যাক্সেস এবং মিডিয়া স্টোরের মধ্যে তুলনামূলক অনুক্রমিক পঠন কর্মক্ষমতা (উদাহরণস্বরূপ, ভিডিও প্লেব্যাক) পাওয়া যায়। যাইহোক, FUSE-এর সাথে অনুক্রমিক লেখাগুলি কিছুটা খারাপ ছিল, এবং এলোমেলোভাবে পড়া এবং লেখাগুলি দ্বিগুণ পর্যন্ত ধীর হতে পারে।

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

FUSE কর্মক্ষমতা প্রভাব প্রশমিত করুন

FUSE কর্মক্ষমতা প্রভাব শুধুমাত্র বহিরাগত শেয়ার্ড স্টোরেজে সঞ্চিত ফাইলের ভারী ব্যবহারকারীদের মধ্যে সীমাবদ্ধ। বাহ্যিক ব্যক্তিগত সঞ্চয়স্থান (যার মধ্যে রয়েছে android/data এবং android/obb ডিরেক্টরি রয়েছে) FUSE দ্বারা বাইপাস করা হয়, যখন অভ্যন্তরীণ সঞ্চয়স্থান (যেমন /data/data , যেখানে অনেক অ্যাপ এনক্রিপ্ট করা এবং সুরক্ষিত রাখতে ডেটা সঞ্চয় করে) FUSE মাউন্ট করা হয় না।

  • শেয়ার্ড এক্সটার্নাল স্টোরেজের হালকা ব্যবহারকারী অ্যাপগুলি প্রায়ই সীমিত ফাইলের সাথে ইন্টারঅ্যাক্ট করে (সাধারণত 100টিরও কম ফাইল)। এই অ্যাপগুলি সাধারণ পড়া এবং লেখার ক্রিয়াকলাপগুলির বিদ্যমান অপ্টিমাইজেশন থেকে উপকৃত হয় এবং Android 11-এ কোনও FUSE-সম্পর্কিত পারফরম্যান্স প্রভাব দেখতে পাবে না।

  • যে অ্যাপগুলি শেয়ার্ড এক্সটার্নাল স্টোরেজের ভারী ব্যবহারকারী তারা সাধারণত বাল্ক ফাইল ক্রিয়াকলাপ সম্পাদন করে, যেমন 1000 ফাইলের সাথে একটি ডিরেক্টরি তালিকাবদ্ধ করা বা মুছে ফেলা, বা ফাইল সিস্টেমে এক মিলিয়ন ফাইল সহ একটি ডিরেক্টরি তৈরি করা বা মুছে ফেলা। Android 11-এ FUSE দ্বারা বাল্ক ফাইল অপারেশন প্রভাবিত হতে পারে, কিন্তু যদি এই ধরনের অ্যাপগুলি MANAGE_EXTERNAL_STORAGE অনুমতির জন্য যোগ্য হয়, তাহলে তারা অক্টোবর 2020 আপডেটে অন্তর্ভুক্ত কর্মক্ষমতা অপ্টিমাইজেশন থেকে উপকৃত হবে।

FUSE পারফরম্যান্স ওভারহেড এড়াতে, অ্যাপগুলি বাহ্যিক ব্যক্তিগত স্টোরেজে ডেটা সঞ্চয় করতে পারে বা FUSE বাইপাস করতে এবং একটি পারফরম্যান্স-অপ্টিমাইজড পাথ পেতে ContentProvider ক্লাসে বাল্ক API ব্যবহার করতে পারে। এছাড়াও, মিডিয়াপ্রোভাইডার সিস্টেম কম্পোনেন্টের অক্টোবর 2020 আপডেটে ফাইল ম্যানেজার এবং অনুরূপ অ্যাপগুলির (যেমন ব্যাকআপ/রিস্টোর, অ্যান্টিভাইরাস) জন্য পারফরম্যান্স অপ্টিমাইজেশন অন্তর্ভুক্ত রয়েছে যা MANAGE_EXTERNAL_STORAGE অনুমতি ধারণ করে।

কর্মক্ষমতা উপর গোপনীয়তা

FUSE-এর জন্য টিউন করা ডিভাইসগুলিতে, বেশিরভাগ গুরুত্বপূর্ণ ব্যবহারকারীর যাত্রা Android 10 এবং Android 11-এর মধ্যে সমানভাবে কার্যকর। যাইহোক, ফাইল অপারেশনগুলির একটি সেটের উপর বেঞ্চমার্ক পরীক্ষা করার সময়, Android 11 Android 10-এর চেয়ে খারাপ পারফর্ম করতে পারে। ফাইল অ্যাক্সেস প্যাটার্নগুলির জন্য যা সম্পাদন করে অ্যান্ড্রয়েড 11-এ আরও খারাপ (উদাহরণস্বরূপ, এলোমেলোভাবে পড়া বা লেখা), আমরা অ্যাপগুলিকে একটি নন-ফিউজ অ্যাক্সেস মোড দেওয়ার জন্য মিডিয়াপ্রোভাইডার API ব্যবহার করার পরামর্শ দিই, যা সেরা এবং ধারাবাহিকভাবে কার্যকরী বিকল্প।

MediaProvider এবং FUSE আপডেট

মিডিয়াপ্রোভাইডার সিস্টেম কম্পোনেন্ট আচরণ অ্যান্ড্রয়েড রিলিজের মধ্যে আলাদা।

  • অ্যান্ড্রয়েড 10 এবং তার নিচের সংস্করণে, SDCardFS ছিল ফাইল সিস্টেম এবং মিডিয়াপ্রোভাইডার ফাইলের সংগ্রহের জন্য একটি ইন্টারফেস প্রদান করে (উদাহরণস্বরূপ, ছবি, ভিডিও, সঙ্গীত ফাইল ইত্যাদি)। যখন একটি অ্যাপ ফাইল এপিআই ব্যবহার করে একটি ফাইল তৈরি করে, তখন এটি মিডিয়াপ্রোভাইডারকে ফাইলটি স্ক্যান করতে এবং ডেটাবেসে রেকর্ড করতে বলতে পারে।

  • Android 11 বা উচ্চতর সংস্করণে, SDCardFS বাতিল করা হয়েছে এবং MediaProvider বহিরাগত স্টোরেজের জন্য ফাইল সিস্টেম হ্যান্ডলার (FUSE-এর জন্য) হয়ে ওঠে, যা বহিরাগত সঞ্চয়স্থানে ফাইল সিস্টেম এবং MediaProvider ডাটাবেসকে সামঞ্জস্যপূর্ণ করে। FUSE ফাইল সিস্টেমের ইউজারস্পেস হ্যান্ডলার হিসাবে, মিডিয়াপ্রোভাইডার কার্নেল কলগুলিকে আটকাতে পারে এবং ফাইল অপারেশনগুলি গোপনীয়তা নিরাপদ তা নিশ্চিত করতে পারে।

Android 11 এবং উচ্চতর সংস্করণে, MediaProvider হল একটি মডুলার সিস্টেম উপাদান (একটি মেইনলাইন মডিউল) যা Android রিলিজের বাইরেও আপডেট করা যেতে পারে। এর মানে হল যে MediaProvider-এ পাওয়া পারফরম্যান্স, গোপনীয়তা বা নিরাপত্তা সংক্রান্ত সমস্যাগুলি Google Play Store বা অন্যান্য অংশীদার-প্রদত্ত ব্যবস্থা থেকে এয়ার ওভার দ্য এয়ারে স্থির করা যেতে পারে। FUSE হ্যান্ডলারের কাছ থেকে যা আশা করা যায় তার সুযোগের মধ্যে যেকোন কিছু আপডেটযোগ্য, FUSE পারফরম্যান্স রিগ্রেশন এবং বাগগুলি ঠিক করতে আপডেটগুলি সক্ষম করে৷