Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

التخزين التقليدي

رمز HAL لوحدة التخزين الخارجية لنظام Android

يدعم Android الأجهزة ذات التخزين التقليدي ، والتي يتم تعريفها على أنها نظام ملفات غير حساس لحالة الأحرف مع فئات وأوضاع أذونات POSIX غير القابلة للتغيير. تشمل فكرة التخزين التقليدي التخزين المحاكي والمحمول. يتم تعريف التخزين المحمول على أنه أي وحدة تخزين خارجية لم يتم اعتمادها من قبل النظام وبالتالي فهي غير مهيأة ومشفرة أو مرتبطة بجهاز معين. نظرًا لأن التخزين الخارجي التقليدي يوفر الحد الأدنى من الحماية للبيانات المخزنة ، يجب ألا يخزن رمز النظام البيانات الحساسة على وحدة التخزين الخارجية. على وجه التحديد ، يجب تخزين ملفات التكوين والسجلات فقط على وحدة التخزين الداخلية حيث يمكن حمايتها بشكل فعال.

تخزين خارجي متعدد المستخدمين

بدءًا من Android 4.2 ، يمكن أن تدعم الأجهزة عدة مستخدمين ، ويجب أن تفي وحدة التخزين الخارجية بالقيود التالية:

  • يجب أن يكون لكل مستخدم وحدة تخزين خارجية أساسية منفصلة خاصة به ، ويجب ألا يكون لديه حق الوصول إلى وحدة التخزين الخارجية الأساسية للمستخدمين الآخرين.
  • يجب أن /sdcard مسار /sdcard إلى وحدة التخزين الخارجية الأساسية الصحيحة الخاصة بالمستخدم استنادًا إلى المستخدم الذي تعمل العملية باسمه.
  • قد تتم مشاركة تخزين ملفات OBB الكبيرة في دليل Android/obb بين عدة مستخدمين Android/obb .
  • يجب ألا تكون وحدة التخزين الخارجية الثانوية قابلة للكتابة بواسطة التطبيقات ، باستثناء الدلائل الخاصة بالحزمة على النحو الذي تسمح به الأذونات المركبة.

يعمل تطبيق النظام الأساسي الافتراضي لهذه الميزة على تعزيز مساحات أسماء Linux kernel لإنشاء جداول تحميل معزولة لكل عملية Zygote-forked ، ثم يستخدم روابط الربط لتقديم التخزين الخارجي الأساسي الصحيح الخاص بالمستخدم في مساحة الاسم الخاصة تلك.

عند بدء التشغيل ، يقوم النظام EMULATED_STORAGE_SOURCE FUSE EMULATED_STORAGE_SOURCE تخزين خارجية تمت مضاهاتها في EMULATED_STORAGE_SOURCE ، وهو مخفي من التطبيقات. بعد مفترقات Zygote ، يقوم الارتباط بربط الدليل الفرعي المناسب الخاص بالمستخدم من ضمن EMULATED_STORAGE_TARGET FUSE إلى EMULATED_STORAGE_TARGET بحيث يتم حل مسارات التخزين الخارجية بشكل صحيح للتطبيق. نظرًا لأن التطبيق يفتقر إلى نقاط التثبيت التي يمكن الوصول إليها لتخزين المستخدمين الآخرين ، فيمكنهم فقط الوصول إلى مساحة التخزين للمستخدم الذي بدأ به.

يستخدم هذا التنفيذ أيضًا ميزة نواة الشجرة الفرعية المشتركة لنشر أحداث التحميل من مساحة اسم الجذر الافتراضية إلى مساحات أسماء التطبيقات ، مما يضمن استمرار عمل الميزات مثل حاويات ASEC وتثبيت OBB بشكل صحيح. يقوم بذلك عن طريق تثبيت ملفات rootfs كمشتركة ، ثم إعادة تركيبها كعبد بعد إنشاء كل مساحة اسم Zygote.

أجهزة تخزين خارجية متعددة

بدءًا من Android 4.4 ، يتم عرض العديد من أجهزة التخزين الخارجية للمطورين من خلال Context.getExternalFilesDirs() و Context.getExternalCacheDirs() و Context.getObbDirs() .

يجب أن تكون أجهزة التخزين الخارجية التي تظهر من خلال واجهات برمجة التطبيقات هذه جزءًا شبه دائم من الجهاز (مثل فتحة بطاقة SD في حجرة البطارية). يتوقع المطورون أن تكون البيانات المخزنة في هذه المواقع متاحة على مدى فترات زمنية طويلة. لهذا السبب ، لا ينبغي أن تظهر أجهزة التخزين العابرة (مثل محركات أقراص USB كبيرة السعة) من خلال واجهات برمجة التطبيقات هذه.

يجب أن يمنح إذن WRITE_EXTERNAL_STORAGE حق الوصول للكتابة فقط إلى وحدة التخزين الخارجية الأساسية على الجهاز. يجب ألا يُسمح للتطبيقات بالكتابة إلى أجهزة التخزين الخارجية الثانوية ، إلا في الدلائل الخاصة بالحزمة على النحو الذي تسمح به الأذونات المركبة. يضمن تقييد عمليات الكتابة بهذه الطريقة أن النظام يمكنه تنظيف الملفات عند إلغاء تثبيت التطبيقات.

دعم وسائط USB

يدعم Android 6.0 أجهزة التخزين المحمولة التي تتصل فقط بالجهاز لفترة قصيرة ، مثل محركات أقراص USB المحمولة. عندما يقوم مستخدم بإدخال جهاز محمول جديد ، يعرض النظام الأساسي إشعارًا للسماح له بنسخ محتويات هذا الجهاز أو إدارتها.

في Android 6.0 ، يعتبر أي جهاز غير معتمد محمولاً. نظرًا لأن وحدة التخزين المحمولة متصلة لفترة قصيرة فقط ، فإن النظام الأساسي يتجنب العمليات الثقيلة مثل مسح الوسائط. يجب أن تمر تطبيقات الجهات الخارجية عبر Storage Access Framework للتفاعل مع الملفات الموجودة على وحدة التخزين المحمولة ؛ تم حظر الوصول المباشر بشكل صريح لأسباب تتعلق بالخصوصية والأمان.