স্টোরেজ

অ্যান্ড্রয়েড এক্সটার্নাল স্টোরেজ HAL আইকন

বিভিন্ন ধরণের স্টোরেজ ডিভাইসের ধরন এবং বৈশিষ্ট্য সমর্থন করার জন্য অ্যান্ড্রয়েড সময়ের সাথে বিকশিত হয়েছে। সঙ্গে Android সমর্থন সমস্ত ডিভাইস সংস্করণ ঐতিহ্যগত স্টোরেজ যা পোর্টেবল এবং অনুকরণের স্টোরেজ রয়েছে। পোর্টেবল স্টোরেজ একটি SD কার্ড অথবা USB অস্থায়ী ডাটা ট্রান্সফার / ফাইল সঞ্চয় করার জন্য যে মত, শারীরিক মিডিয়া প্রদান করা যাবে। ফিজিক্যাল মিডিয়া দীর্ঘ সময়ের জন্য ডিভাইসের সাথে থাকতে পারে, কিন্তু ডিভাইসের সাথে আবদ্ধ নয় এবং সরানো হতে পারে। অ্যান্ড্রয়েড 1.0 থেকে এসডি কার্ডগুলি পোর্টেবল স্টোরেজ হিসাবে উপলব্ধ; অ্যান্ড্রয়েড 0.০ ইউএসবি সাপোর্ট যোগ করেছে। Emulated সঞ্চয় স্থান একটি এমুলেশন স্তরের মধ্য দিয়ে অভ্যন্তরীণ সঞ্চয়স্থান একটি অংশ প্রকাশক দ্বারা সরবরাহ করা হয় এবং অ্যান্ড্রয়েড 3.0 থেকে পাওয়া যায় নি।

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

অনুমতি

বহিরাগত স্টোরেজে অ্যাক্সেস বিভিন্ন Android অনুমতি দ্বারা সুরক্ষিত। অ্যান্ড্রয়েড 1.0 থেকে শুরু করে, লেখার অ্যাক্সেস সঙ্গে সুরক্ষিত WRITE_EXTERNAL_STORAGE অনুমতি নেই। অ্যান্ড্রয়েড 4.1 থেকে শুরু করে, পড়ার অ্যাক্সেস সঙ্গে সুরক্ষিত READ_EXTERNAL_STORAGE অনুমতি নেই।

অ্যান্ড্রয়েড 4.4 থেকে শুরু করে, বাহ্যিক স্টোরেজ ডিভাইসে ফাইলের মালিক, গোষ্ঠী এবং মোড এখন ডিরেক্টরি কাঠামোর উপর ভিত্তি করে সংশ্লেষিত হয়। এই অ্যাপ্লিকেশান তারা বিস্তৃত রাখা প্রয়োজন ছাড়া বাহ্যিক সঞ্চয় তাদের প্যাকেজ-নির্দিষ্ট ডিরেক্টরি পরিচালনা করতে সক্ষম হবেন WRITE_EXTERNAL_STORAGE অনুমতি নেই। উদাহরণস্বরূপ, সঙ্গে প্যাকেজের নাম অ্যাপ্লিকেশন com.example.foo এখন অবাধে প্রবেশ করতে পারবেন Android/data/com.example.foo/ কোন অনুমতিসহ বাহ্যিক সঞ্চয় ডিভাইসের। এই সংশ্লেষিত অনুমতিগুলি একটি FUSE ডিমন -এ কাঁচা স্টোরেজ ডিভাইস মোড়ানো দ্বারা সম্পন্ন করা হয়।

অ্যান্ড্রয়েড 10 থেকে শুরু করে, অ্যাপ্লিকেশন যে লক্ষ্য অ্যান্ড্রয়েড 9 ও উত্তরাধিকার স্টোরেজে কম ডিফল্ট, এবং বিচ্ছিন্ন স্টোরেজে নির্বাচন করতে পারেন। অ্যাপ্লিকেশানগুলি লক্ষ্য অ্যান্ড্রয়েড 10 এবং বিচ্ছিন্ন স্টোরেজে ডিফল্ট অস্থায়ীভাবে এটিকে ছেড়ে যেতে পারেন। ম্যানিফেস্ট অ্যাট্রিবিউটের ব্যবহার করুন requestLegacyExternalStorage , যা স্টোরেজ মডেল নিয়ন্ত্রণ, ডিফল্ট অবস্থা পরিবর্তন করতে।

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

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

হোয়াইটলিস্ট অবস্থা শুধুমাত্র ইনস্টল করার সময় নির্দিষ্ট করা যেতে পারে, এবং অ্যাপটি ইনস্টল না হওয়া পর্যন্ত পরিবর্তন করা যাবে না।

সেটিং সম্পর্কে আরো তথ্যের জন্য READ_EXTERNAL_STORAGE অনুমতি দেখুন setWhitelistedRestrictedPermissions() মধ্যে PackageInstaller.SessionParams বর্গ।

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

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

  • /mnt/runtime/default রুট নামস্থান যেখানে কোন বিশেষ স্টোরেজ অনুমতিসহ অ্যাপস দেখানো হয়, এবং adbd এবং অন্যান্য সিস্টেম উপাদান বাস।
  • /mnt/runtime/read সঙ্গে অ্যাপ্লিকেশানে দেখানো হয় READ_EXTERNAL_STORAGE (সেট LEGACY_STORAGE অ্যান্ড্রয়েড 10 জন্য)
  • /mnt/runtime/write থাকা অ্যাপগুলি দেখানো WRITE_EXTERNAL_STORAGE

জাইগোট ফর্ক টাইমে, আমরা প্রতিটি চলমান অ্যাপের জন্য একটি মাউন্ট নেমস্পেস তৈরি করি এবং উপযুক্ত প্রাথমিক দৃশ্যকে মাউন্টের সাথে আবদ্ধ করি। পরবর্তীতে, যখন রানটাইম অনুমতি মঞ্জুর করা হয়, vold ইতিমধ্যে চলা অ্যাপস এবং বাঁধুন মাউন্ট স্থানে উন্নীত দেখুন নামস্থান মাউন্ট মধ্যে জাম্প। মনে রাখবেন যে অনুমতি হ্রাসের ফলে অ্যাপটি সর্বদা নিহত হয়।

setns() এই বৈশিষ্ট্যটি প্রয়োগ করতে ব্যবহৃত কার্যকারিতা অন্তত লিনাক্স 3.8 প্রয়োজন, কিন্তু প্যাচ লিনাক্স 3.4 সফলভাবে ব্যাক-পোর্ট করা হয়েছে। PermissionsHostTest CTS পরীক্ষা সঠিক কার্নেল আচরণ যাচাই করার জন্য ব্যবহার করা যাবে।