اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
إيقاف واجهة برمجة التطبيقات SDCardFS نهائيًا
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تم إيقاف واجهة برمجة التطبيقات SDCardFS نهائيًا على الأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث والإصدار 5.4 من نظام التشغيل أو الإصدارات الأحدث. على هذه
الأجهزة، لا يسمح اختبار
VTS
باستخدام أنظمة الملفات المثبَّتة والمُدرَجة على أنّها SDCardFS. يمكن للأجهزة التي تعمل بالإصدار
Android 11 أو إصدار أحدث ولكن تعمل بالإصدار 4.19 من الإصدار
القديم من نظام التشغيل مواصلة استخدام SDCardFS، ولكن لا تقدّم Google دعمًا إضافيًا.
قبل إيقافه نهائيًا، كان تنسيق SDCardFS يقدّم طريقة للتحكّم في الوصول إلى وحدة التخزين الداخلية المُحاكاة وبطاقات SD الخارجية، ما يسمح للتطبيقات بالوصول إلى البيانات
المعنية بها فقط. بالإضافة إلى ذلك، وفّرت هذه الطريقة طبقة من عدم الالتفات إلى حالة الأحرف، بالإضافة إلى بعض عمليات تتبُّع مساحة التخزين الإضافية.
وظيفة استبدال SDCardFS
يستخدم البديل لـ SDCardFS العديد من ميزات نظام الملفات في نواة Linux لمحاولة
تحقيق نتائج مماثلة. يعالج نظام الملفات مباشرةً عدم مراعاة حالة الأحرف، ما يؤدي إلى أوقات بحث متطابقة تقريبًا في المجلدات التي تراعي حالة الأحرف والمجلدات التي لا تراعيها، ما يزيل الأداء البطيء للمجلدات الكبيرة من SDCardFS. تم الآن ضبط عملية تتبُّع
الحصص التي كان يؤديها SDCardFS لجمع بيانات التخزين المتعلقة
بالإعدادات بسرعة من مساحة المستخدم باستخدام حصص المشاريع. في بعض
السياقات الحسّاسة للأداء، يتم ربط الأدلة في مكانها. يقدّم الإصدار الجديد من مكتبة FUSE مساحة تخزين محدودة للوصول المباشر إلى نظام الملفات، ويهدف ذلك بشكل أساسي إلى إتاحة إخفاء معلومات الموقع الجغرافي.
ضبط وظيفة استبدال بطاقة SD
لتفعيل حصص المشاريع وضبط حالة التخزين المحاكي بدون SDCardFS
على جهاز تم تشغيله باستخدام Android 11 أو إصدار أحدث،
يمكنك اكتساب القيمة من emulated_storage.mk
في ملف device.mk
:
$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
تحذير: لا تفعل ذلك على الأجهزة التي تم تشغيلها باستخدام الإصدار 10 من نظام التشغيل Android أو إصدار أقدم، لأنّ عدم مراعاة حالة الأحرف في نظام الملفات الأصلي لا يتوافق مع إعدادات التشفير المستندة إلى الملفات المستخدَمة على هذه الأجهزة. من الضروري مواصلة استخدام SDCardFS
على هذه الأجهزة.
أسباب إيقاف واجهة برمجة التطبيقات SDCardFS نهائيًا
هناك أسباب مختلفة لإيقاف واجهة برمجة التطبيقات SDCardFS نهائيًا.
الثبات
يواجه ملف SDCardFS العديد من حالات السباق المتعلقة بالحساسية لحالة الأحرف، بالإضافة إلى بعض المشاكل المتعلقة بظروف انخفاض الذاكرة. يمكن أن تكون عمليات البحث التي لا تراعي حالة الأحرف
بطيئة إلى حدٍ ما في الأدلة الكبيرة لأنّ عمليات البحث يجب أن تنتقل إلى الدليل
الأدنى للعثور على حالات بديلة. يمكن أن يؤدي الوصول إلى ملفَي النظام العلوي والنظام السفلي في الوقت نفسه إلى حدوث مشاكل أيضًا.
تطابق المحتوى في المصدر
تتطلّب أداة SDCardFS تصحيحات إضافية في نظام الملفات الافتراضي (VFS) لتفعيل خيارات تغيير
عمليات ربط الحِزم. تؤدي هذه الإصلاحات إلى زيادة العمل المبذول لقبول التغييرات في الإصدارات السابقة في
هذه المناطق. يمكن تكرار ميزات SDCardFS من خلال المكوّنات في المصدر،
ما يزيل هذه المشكلة.
توفُّر الميزات نفسها في واجهة برمجة التطبيقات
في الإصدار السابق من Android، كانت ميزة "مساحة التخزين ذات النطاق المحدّد" تحدّ من الوصول إلى
أنواع معيّنة من البيانات الوصفية. لا يتيح الوصول المباشر إلى مساحة التخزين من خلال SDCardFS استخدام ميزات مساحة التخزين التي تتعلّق
بالنطاق.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# SDCardFS deprecation\n\nSDCardFS is deprecated on devices that launch with Android 11 or higher and run kernel version 5.4 or higher. On such\ndevices, [VTS\ntesting](https://android.googlesource.com/platform/test/vts-testcase/kernel/+/refs/heads/android11-dev/sdcardfs/)\ndoesn't allow mounted file systems listed as SDCardFS. Devices that launch with\nAndroid 11 or higher but run kernel version 4.19 or\nlower can continue to use SDCardFS, but Google doesn't provide additional\nsupport.\n\nBefore its deprecation, SDCardFS provided a way to control access to emulated\ninternal storage and external SD cards, allowing apps to access only the data\nrelevant to them. Additionally, it provided a layer of case insensitivity, as\nwell as some additional storage tracking.\n\nSDCardFS replacement functionality\n----------------------------------\n\nThe replacement for SDCardFS uses several Linux kernel filesystem features to\nachieve similar results. Case insensitivity is handled directly by the\nfilesystem; this results in lookup times nearly identical in case-sensitive and\ncase-insensitive folders, removing the large folder slowdown from SDCardFS. The\nquota tracking that SDCardFS was doing to quickly gather storage data for\nsettings is now configured from userspace using project quotas. In some\nperformance-sensitive contexts, directories are bind mounted in place. A new\nFUSE implementation provides scoped storage for direct filesystem access,\nprimarily to support redaction of location information.\n\nConfigure SDCard replacement functionality\n------------------------------------------\n\nTo enable project quotas and case folding for emulated storage without SDCardFS\non a device that launched with Android 11 or higher,\ninherit from `emulated_storage.mk` in the `device.mk` file: \n\n $(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)\n\n**Warning:** Do *not* do this on devices\nthat launched with Android 10 or lower, since\nfilesystem native case-insensitivity is incompatible with the file-based\nencryption settings used on such devices. It is necessary to keep using SDCardFS\non such devices.\n\nReasons to deprecate SDCardFS\n-----------------------------\n\nThere are various reasons to deprecate SDCardFS.\n\n### Stability\n\nSDCardFS suffers from several race conditions concerning case sensitivity, as\nwell as some issues concerning low memory circumstances. Case-insensitive\nlookups can be rather slow in large directories because lookups have to walk the\nlower directory to find alternate cases. Accessing the upper and lower\nfilesystems at the same time can lead to issues as well.\n\n### Upstream parity\n\nSDCardFS requires additional patches to the VFS to support changing options on\nbind mounts. These patches cause additional work to accept upstream changes to\nthese areas. SDCardFS's features can be replicated by upstream components,\nremoving this pain point.\n\n### Feature parity with API\n\nIn the previous release of Android, scoped storage limited access to particular\ntypes of metadata. Direct storage access through SDCardFS doesn't support these\nscoped storage features."]]