يجبر Scoped Storage في Android Q المطورين على استخدام SAF، وهو أمر سيئ

تعد تغييرات Scoped Storage في Android Q بمثابة صداع يجب التعامل معه، لأن إطار الوصول إلى التخزين به بعض العيوب في الوقت الحالي.

يعمل نظام Android Q على تغيير طريقة عمل التخزين على هاتفك بشكل أساسي. في كل إصدار حتى Pie، كانت مساحة تخزين Android تعمل مثل كمبيوتر سطح المكتب: يمكنك استخدام أي تطبيق تريد قراءته أو كتابة أي ملف (إذا منحت إذنًا للتطبيق للقيام بذلك). باستخدام Q، تقدم Google (وتتطلب) "تخزين النطاق"، مما يجعل Android يعمل مثل iPhone، حيث يتم عزل مساحة التخزين لكل تطبيق. يمكن للتطبيق الوصول إلى ملفاته فقط، وإذا تم إلغاء تثبيته، فسيتم حذف جميع ملفاته.

لحسن الحظ، لا يزال Android Q يحتفظ ببعض سلوكيات Android الأصلية لنظام الملفات المركزي. لسوء الحظ، أصبح الآن من المرهق بالنسبة للمستخدم إعداد التطبيقات للوصول إليه، مما أدى إلى انخفاض كبير في الأداء والقدرة. وسيتعين على المطورين إعادة ترميز التطبيقات بشكل كبير لدعمها.

التطبيقات التي تحتاج إلى وصول عام إلى نظام الملفات، على سبيل المثال. سيحتاج الآن أي مجموعة مكتبية أو محرر صور أو مدير ملفات إلى استخدام واجهة برمجة تطبيقات Android تسمى "إطار الوصول إلى التخزين

"(SAF)، لجميع عمليات الملف. أصبح SAF متاحًا منذ Android 5.0 Lollipop، لكن المطورين يميلون إلى عدم استخدامه ما لم يكن ذلك مطلوبًا، نظرًا لأنه صعب وسييء. واجهة برمجة التطبيقات الموثقة، وتجربة المستخدم السيئة، والأداء الضعيف، والموثوقية الضعيفة (إلى حد كبير في شكل تنفيذ خاص ببائع الجهاز مشاكل). ونتيجة لصعوبة الانتقال إلى SAF، قررت Google السماح بالتطبيقات التي لم يتم الإشارة إليها بعد يعمل دعم Android Q كما اعتادوا عليه، ولكن هذا سيتغير عندما يطلب متجر Play من جميع التطبيقات دعم Q العام القادم.

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

لقد قامت Google على الأقل بتحسين هذه العملية س بيتا 3، نظرًا لأن الإصدارات التجريبية السابقة لم تسمح للتطبيق حتى باقتراح موقع ليختاره المستخدم، وهو ما يتطلب من المستخدم القيام بقدر كبير من العمل للعثور فعليًا على وحدة التخزين الأساسية لأجهزتهم.

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

نموذج اختبار تشغيل لـ SAFTest يُظهر اختلاف الأداء بين واجهة برمجة تطبيقات الإدخال/الإخراج للملف التقليدي مع SAF.

هناك مشكلة أكبر في الأداء وهي أن بعض التطبيقات سيتعين عليها نسخ الملفات إلى منطقة "التخزين المحددة النطاق" المحلية الخاصة بها قبل أن تتمكن من العمل معها. يمكن أن يكون هذا مشكلة عندما يكون حجم هذه الملفات عدة غيغابايت، على سبيل المثال. في حالة ملفات الفيديو أو الأرشيفات المضغوطة. تستفيد العديد من تطبيقات Android من العدد المذهل لمكتبات Java مفتوحة المصدر في مجتمع المطورين، وعادة ما تتطلب هذه المكتبات الوصول المباشر إلى نظام الملفات للعمل. إنها ليست خاصة بنظام Android وستتطلب إعادة كتابتها للعمل مع SAF. والأسوأ من ذلك أن العديد من مكتبات Android الداخلية لن تعمل معها، مثل مدير الحزم أو Zip API. على سبيل المثال، لن يتمكن مدير الملفات حتى من عرض رمز ملف APK (باستخدام واجهة برمجة تطبيقات Android القياسية) دون نسخ ملف APK بالكامل أولاً إلى منطقة التخزين الخاصة به. تقرير الشوائب.

بالنسبة للأشخاص ذوي الميول التقنية، من الممكن حاليًا تعطيل "Scoped Storage" لنظام Android Q على أساس كل تطبيق عبر ADB باستخدام أمر appops. يمكن لمستخدمي الجذر تنفيذ الأوامر مباشرة على أجهزتهم بدون كمبيوتر مكتبي. تم وصف هذه الأوامر في الوثائق على أنها ميزات للمطورين وبالتالي يمكن إزالتها في أي وقت.

تمكين الوصول إلى مساحة التخزين العامة لأحد التطبيقات:

adb shell cmd appops set your-package-name android: legacy_storage allow && \adb shell am force-stop your-package-name

تعطيل الوصول إلى التخزين العام لأحد التطبيقات:

adb shell cmd appops set your-package-name android: legacy_storage default && \adb shell am force-stop your-package-name

تروج Google لفوائد الأمان والخصوصية لهذا التغيير، ولكن من الناحية الفنية، لا يوجد أي تحسن. تتمتع التطبيقات بالقدرة على تخزين الملفات بشكل خاص منذ Android 1.0، وتستفيد جميع التطبيقات تقريبًا من هذه الإمكانية. عندما تمنح تطبيقًا حق الوصول إلى الدليل الجذر للتخزين الخاص بك عبر SAF، فيمكنه قراءة أي ملف وكتابته وإرساله يريد مطوره الشائن بنفس الطريقة تمامًا عندما منحت أحد التطبيقات حق الوصول إلى مساحة التخزين في Pie.

يأتي "التحسين الأمني" الوحيد لأنه أصبح الآن عملية أكثر صعوبة بالنسبة للمستخدم للقيام بذلك. ما لم يكن بالطبع أحد التطبيقات يريد فقط سرقة معظم معلوماتك الشخصية، مثل الصور ومقاطع الفيديو التي لديك تم التقاطها، والتي أضافت Google لها حل وصول بديل يستخدم أمانًا بسيطًا منبثقًا بنقرة نعم الحوار.

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

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

إن الإجابة على كيفية منح Android للمستخدمين مزيدًا من التحكم في ملفاتهم هي في الواقع منح المستخدمين مزيدًا من التحكم، وليس إبعادها وتقييد قدرات نظام Android الأساسي بشكل أساسي.


ملاحظة المحرر: هذه مقالة ضيف كتبها عضو كبير في XDA tliebeck، اشتهر بعمله على مستكشف ملفات FX. تعكس محتويات هذه المقالة رأيه الخاص وتحليله لقيود التخزين ضمن نطاق Android Q، مع الحد الأدنى من الإدخال والتحرير من مشعل الرحمن، رئيس تحرير XDA-Developers. لقد تواصلنا مع Google لسؤالهم عن بعض هذه المخاوف ولكننا لم نتلق ردًا من الشركة بحلول وقت النشر.