অ্যান্ড্রয়েড প্রথাগত স্টোরেজ সহ ডিভাইসগুলিকে সমর্থন করে, যা অপরিবর্তনীয় POSIX অনুমতি ক্লাস এবং মোড সহ একটি কেস-সংবেদনশীল ফাইল সিস্টেম হিসাবে সংজ্ঞায়িত করা হয়। ঐতিহ্যবাহী স্টোরেজের ধারণাটি অনুকরণ করা এবং বহনযোগ্য স্টোরেজকে অন্তর্ভুক্ত করে। পোর্টেবল স্টোরেজকে কোনো বাহ্যিক স্টোরেজ হিসাবে সংজ্ঞায়িত করা হয় যা সিস্টেম দ্বারা গৃহীত হয় না এবং সেইজন্য ফর্ম্যাট করা হয় না এবং এনক্রিপ্ট করা হয় না বা একটি নির্দিষ্ট ডিভাইসের সাথে আবদ্ধ হয়। যেহেতু ঐতিহ্যগত বাহ্যিক সঞ্চয়স্থান সংরক্ষিত ডেটার জন্য ন্যূনতম সুরক্ষা প্রদান করে, সিস্টেম কোড বহিরাগত সঞ্চয়স্থানে সংবেদনশীল ডেটা সংরক্ষণ করা উচিত নয়। বিশেষভাবে, কনফিগারেশন এবং লগ ফাইলগুলি শুধুমাত্র অভ্যন্তরীণ স্টোরেজে সংরক্ষণ করা উচিত যেখানে তারা কার্যকরভাবে সুরক্ষিত হতে পারে।
মাল্টি-ইউজার এক্সটার্নাল স্টোরেজ
অ্যান্ড্রয়েড 4.2 থেকে শুরু করে, ডিভাইসগুলি একাধিক ব্যবহারকারীকে সমর্থন করতে পারে এবং বাহ্যিক সঞ্চয়স্থানকে অবশ্যই নিম্নলিখিত সীমাবদ্ধতাগুলি পূরণ করতে হবে:
- প্রতিটি ব্যবহারকারীর নিজস্ব বিচ্ছিন্ন প্রাথমিক বাহ্যিক সঞ্চয়স্থান থাকতে হবে এবং অন্য ব্যবহারকারীদের প্রাথমিক বহিরাগত সঞ্চয়স্থানে অ্যাক্সেস থাকতে হবে না।
-
/sdcard
পাথকে অবশ্যই সঠিক ব্যবহারকারী-নির্দিষ্ট প্রাথমিক বাহ্যিক স্টোরেজের সমাধান করতে হবে যে ব্যবহারকারীর উপর ভিত্তি করে একটি প্রক্রিয়া চলছে। -
Android/obb
ডিরেক্টরিতে বড় OBB ফাইলের স্টোরেজ অপ্টিমাইজেশান হিসাবে একাধিক ব্যবহারকারীর মধ্যে ভাগ করা যেতে পারে। - সংশ্লেষিত অনুমতি দ্বারা অনুমোদিত প্যাকেজ-নির্দিষ্ট ডিরেক্টরি ব্যতীত সেকেন্ডারি বাহ্যিক সঞ্চয়স্থান অবশ্যই অ্যাপ্লিকেশানগুলির দ্বারা লেখার যোগ্য হবে না৷
এই বৈশিষ্ট্যটির ডিফল্ট প্ল্যাটফর্ম বাস্তবায়ন প্রতিটি জাইগোট-ফর্কড প্রক্রিয়ার জন্য বিচ্ছিন্ন মাউন্ট টেবিল তৈরি করতে লিনাক্স কার্নেল নেমস্পেস ব্যবহার করে এবং তারপর সেই ব্যক্তিগত নামস্থানে সঠিক ব্যবহারকারী-নির্দিষ্ট প্রাথমিক বহিরাগত স্টোরেজ অফার করতে বাইন্ড মাউন্ট ব্যবহার করে।
বুট করার সময়, সিস্টেমটি EMULATED_STORAGE_SOURCE
এ একটি একক অনুকরণ করা বহিরাগত স্টোরেজ FUSE ডেমন মাউন্ট করে, যা অ্যাপ থেকে লুকানো থাকে। জাইগোট ফর্কের পরে, এটি FUSE ডেমনের নীচে থেকে EMULATED_STORAGE_TARGET
এ উপযুক্ত ব্যবহারকারী-নির্দিষ্ট উপ-ডিরেক্টরি মাউন্ট করে যাতে অ্যাপের জন্য বহিরাগত স্টোরেজ পাথগুলি সঠিকভাবে সমাধান হয়। যেহেতু একটি অ্যাপে অন্য ব্যবহারকারীদের স্টোরেজের জন্য অ্যাক্সেসযোগ্য মাউন্ট পয়েন্টের অভাব রয়েছে, তাই তারা শুধুমাত্র সেই ব্যবহারকারীর জন্য স্টোরেজ অ্যাক্সেস করতে পারে যেটি এটি শুরু হয়েছিল।
ডিফল্ট রুট নেমস্পেস থেকে অ্যাপ নেমস্পেসে মাউন্ট ইভেন্টগুলি প্রচার করতে এই ইমপ্লিমেন্টেশন শেয়ার্ড সাবট্রি কার্নেল বৈশিষ্ট্যও ব্যবহার করে, যা নিশ্চিত করে যে ASEC কন্টেনার এবং OBB মাউন্টিং এর মতো বৈশিষ্ট্যগুলি সঠিকভাবে কাজ করা চালিয়ে যাচ্ছে। এটি রুটফগুলিকে শেয়ার করা হিসাবে মাউন্ট করে এবং প্রতিটি জাইগোট নেমস্পেস তৈরি হওয়ার পরে স্লেভ হিসাবে পুনরায় মাউন্ট করে এটি করে।
একাধিক বাহ্যিক স্টোরেজ ডিভাইস
Android 4.4 থেকে শুরু করে, Context.getExternalFilesDirs()
, Context.getExternalCacheDirs()
, এবং Context.getObbDirs()
এর মাধ্যমে একাধিক বাহ্যিক স্টোরেজ ডিভাইস ডেভেলপারদের কাছে প্রদর্শিত হয়৷
WRITE_EXTERNAL_STORAGE
অনুমতি শুধুমাত্র একটি ডিভাইসে প্রাথমিক বাহ্যিক সঞ্চয়স্থানে লেখার অ্যাক্সেস দিতে হবে। অ্যাপ্লিকেশানগুলিকে অবশ্যই সেকেন্ডারি এক্সটার্নাল স্টোরেজ ডিভাইসগুলিতে লেখার অনুমতি দেওয়া হবে না, তাদের প্যাকেজ-নির্দিষ্ট ডিরেক্টরিগুলি ছাড়া যা সংশ্লেষিত অনুমতি দ্বারা অনুমোদিত৷ এইভাবে লেখাগুলিকে সীমাবদ্ধ করা নিশ্চিত করে যে অ্যাপ্লিকেশনগুলি আনইনস্টল করা হলে সিস্টেম ফাইলগুলি পরিষ্কার করতে পারে।
ইউএসবি মিডিয়া সমর্থন
Android 6.0 পোর্টেবল স্টোরেজ ডিভাইসগুলিকে সমর্থন করে যেগুলি শুধুমাত্র USB ফ্ল্যাশ ড্রাইভের মতো অল্প সময়ের জন্য ডিভাইসের সাথে সংযুক্ত থাকে। যখন একজন ব্যবহারকারী একটি নতুন পোর্টেবল ডিভাইস সন্নিবেশ করেন, তখন প্ল্যাটফর্ম একটি বিজ্ঞপ্তি দেখায় যাতে তারা সেই ডিভাইসের বিষয়বস্তু অনুলিপি বা পরিচালনা করতে দেয়।
অ্যান্ড্রয়েড 6.0-এ, যে কোনও ডিভাইস যা গৃহীত হয় না তা বহনযোগ্য বলে বিবেচিত হয়। পোর্টেবল স্টোরেজ শুধুমাত্র অল্প সময়ের জন্য সংযুক্ত থাকার কারণে, প্ল্যাটফর্মটি মিডিয়া স্ক্যানিংয়ের মতো ভারী অপারেশনগুলি এড়িয়ে যায়। পোর্টেবল স্টোরেজের ফাইলগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য তৃতীয় পক্ষের অ্যাপগুলিকে অবশ্যই স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্কের মধ্য দিয়ে যেতে হবে; গোপনীয়তা এবং নিরাপত্তার কারণে সরাসরি অ্যাক্সেস স্পষ্টভাবে অবরুদ্ধ।