স্টোরেজ

অ্যান্ড্রয়েড বাহ্যিক স্টোরেজ এইচএএল আইকন

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

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

অনুমতি

বাহ্যিক স্টোরেজ অ্যাক্সেস বিভিন্ন অ্যান্ড্রয়েড অনুমতি দ্বারা সুরক্ষিত। অ্যান্ড্রয়েড 1.0 এ শুরু করে, লেখার অ্যাক্সেস WRITE_EXTERNAL_STORAGE । অ্যান্ড্রয়েড ৪.১-এ শুরু করে, পঠিত অ্যাক্সেস READ_EXTERNAL_STORAGE অনুমতি দিয়ে সুরক্ষিত।

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

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

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

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

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

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

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

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

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

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

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