Android O هو تطبيق كسر التطبيقات المتراكبة أعلى شريط الحالة

تشمل التطبيقات المتأثرة الحالة ، أدوات الشفق ، والأدوات الرائعة وغيرها

بدأ عدد الوظائف التي تحدد الميزات الجديدة التي تواجه المستخدم الموجودة في Android O في التباطؤ الآن بعد أن كان أمام المستخدمين أسابيع لاختبار البرنامج على أجهزتهم. ومع ذلك ، هناك العديد من التغييرات التي تم إجراؤها تحت الغطاء والتي يتم كشفها ببطء. لقد قمنا بنشر أحد هذه التغييرات في اليوم الآخر حول أجهزة Nexus و Pixel التي تعمل بنظام Android O والتي تعتمد SDCardFS. لكن اليوم ، نود مناقشة تغيير سيؤثر على مطوري بعض التطبيقات ، خاصة تلك التي تتراكب فوق شريط الحالة . يبدو أن هذه التطبيقات مقطوعة في معاينة Android O Developer ، والتي قد ترفضها للوهلة الأولى كخطأ بسيط ، ولكن الغوص في الوثائق المرجعية ، قد يكون هذا التغيير مقصودًا بواسطة Google.


Android O Breakers Status Bar Overlays

أحد الأشياء المفضلة عن Android هو مدى قابلية التخصيص. يمكن للمستخدمين الذين لديهم جذر أو يشغلون أقراص مدمجة مخصصة تصميم أشرطة حالة النظام الخاصة بهم أصلاً بدون قيود ، ولكن إذا كان جهازك غير مزود بجذر ، فلديك خيارات أقل متاحة لك. لحسن الحظ ، هناك العديد من التطبيقات في متجر Google Play والتي تتيح لك تغيير شكل شريط الحالة على المستوى الأساسي. هذا ممكن بفضل مجموعة ذكية من Windows Overlay System لعرض شريط حالة مخصص على الشريط الحالي ، و Noters Listeners لعرض الإخطارات ، واختيارياً خدمة إمكانية الوصول للسماح بتلوين شريط الحالة المخصص.

"الحالة" على Android Nougat

"شريط الحالة المادية" على Android Nougat

توضح اللقطتان السابقتان أعلاه شكل شريط الإشعارات عند استخدام أحد تطبيقات تراكب شريط الحالة العديدة المتوفرة في متجر Play. تم التقاط لقطات الشاشة هذه على جهاز Huawei Mate 9 غير المرخص له والذي يشغل EMUI 5.0. بالنسبة لأولئك الذين ليسوا على دراية بـ EMUI ، فإن شريط الحالة لا يشبه لقطات الشاشة المذكورة أعلاه. بدلاً من ذلك ، يبدو كما يلي:

إذا كنت لا تمانع في ظهور شكل شريط الأسهم الخاص بك ، فالتطبيقات مثل شريط الحالة أو شريط الحالة المادية هي هبة من السماء. ولكن إذا ، أو عندما يقوم جهازك بتحديث Android O ، فقد لا تعمل هذه التطبيقات. إليك ما يبدو عليه هذان التطبيقان على Google Pixel يشغّل Android O Developer Preview:

"الحالة" على Android O

"شريط الحالة المادية" على Android O

بدلاً من التراكب الذي يحظر شريط الحالة الأصلي ، يبدو أن التراكب يتداخل مع شريط الحالة الأصلي والذي ينتج عنه فوضى كبيرة.

لسوء الحظ ، فإن هذا يجعل تطبيقات مثل هذه عديمة الفائدة بشكل فعال. ولا يتأثر تطبيق شريط الحالة النموذجي فقط بالتطبيقات التي تتأثر بهذا - بل تتأثر جميع التطبيقات التي تتطلب وجود تراكب أعلى شريط الحالة .

فيما يلي قائمة ببعض التطبيقات الشائعة التي قد تصبح غير مجدية:

  • الحالة (500000 - 1،000،000 تثبيتات)
  • شريط الحالة المادية (1،000،000 - 5،000،000 تثبيتات)
  • أداة باردة - إحصائيات النظام (500000 - 1،000،000 تثبيتات)
  • Telecine (50000 - 100000 تثبيت)
  • شريط الحالة النظيفة (100000 - 500000 تثبيتات)
  • Tinycore (100000 - 500000 مرات التثبيت)

وقائمة ببعض التطبيقات التي ستعمل ، لكن لم يعد بالإمكان تراكبها أعلى شريط الحالة (تقييد الوظائف السابقة):

  • الشفق (عمليات التثبيت من 5،000،000 - 10،000،000)
  • HeadsUp (100000 - 500000 تثبيتات)
  • Resource Monitor Mini (50000 - 100000 عملية تثبيت)
  • Network Monitor Mini (1،000،000 - 5،000،000 تثبيتات)

هناك العديد من التطبيقات في Play Store التي تستخدم نوعًا من التراكب أعلى شريط الحالة ، لكن يمكنك معرفة أن هذا التغيير سيؤثر بالفعل على العديد من التطبيقات التي يستخدمها ملايين المستخدمين المحتملين. إذن ما الذي يحدث هنا؟


TYPE_SYSTEM_OVERLAY قيد الإهمال

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

TYPE_SYSTEM_OVERLAY

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

في جوهرها ، يسمح نوع النافذة للتطبيق برسم أي عنصر على الشاشة - بما في ذلك شريط الحالة. ومع ذلك ، بدءًا من Android O ، تم إهمال هذا النوع من النوافذ. بالنسبة للتطبيقات التي لا تتعلق بالنظام ، توصي Google المطورين باستخدام TYPE_APPLICATION_OVERLAY بدلاً من ذلك. لاقتباس الصفحة المرجعية لما يفعله نوع النافذة الجديد هذا:

TYPE_APPLICATION_OVERLAY

نوع النافذة: يتم عرض نوافذ تراكب التطبيقات فوق جميع نوافذ النشاط (الأنواع بين FIRST_APPLICATION_WINDOW و LAST_APPLICATION_WINDOW ) ولكن أسفل نوافذ النظام المهمة مثل شريط الحالة أو IME.

قد يقوم النظام بتغيير موضع أو حجم أو رؤية هذه الإطارات في أي وقت لتقليل الفوضى المرئية للمستخدم وإدارة الموارد أيضًا.

يتطلب إذن SYSTEM_ALERT_WINDOW .

سيقوم النظام بضبط أهمية العمليات مع هذا النوع من النوافذ لتقليل فرصة قتل القاتل ذو الذاكرة المنخفضة.

في أنظمة متعددة المستخدمين يظهر فقط على شاشة المستخدم المالك.

كما ترى ، يتيح نوع النافذة الجديد للتطبيقات إمكانية تراكب المحتوى أعلى جميع نوافذ الأنشطة الأخرى باستثناء "نوافذ النظام المهمة مثل شريط الحالة أو IME" (يشير IME إلى لوحة المفاتيح). هذا أمر جيد بالنسبة لتطبيقات مثل Facebook Messenger ، حيث إن الرؤوس التي يوفرها هذا التطبيق ليس لها أي هدف في الجلوس على شريط الحالة ، ولكن هذا يؤثر سلبًا على معظم التطبيقات التي ذكرتها سابقًا.

علاوة على ذلك ، لا يبدو أن هناك حلاً للمطورين لاستخدامه ، في هذا الوقت. قد يتوقع المرء أنه من أجل تجنب هذه المشكلة على Android O ، يقوم المطورون ببناء تطبيقاتهم لاستهداف SDK 25 (Android 7.1.1). ومع ذلك ، كما أشار مطور الحالة في Reddit ، استبدلت Google TYPE_SYSTEM_OVERLAY بـ TYPE_APPLICATION_OVERLAY ، والتغيير مستقل عن إصدار SDK الهدف . يجب على المطورين الذين يستخدمون TYPE_SYSTEM_OVERLAY حاليًا استخدام TYPE_APPLICATION_OVERLAY للحفاظ على التوافق ، وبالتالي ، بغض النظر عن إصدار SDK المستهدف الذي يستند إليه تطبيق معين ، لم يعد بإمكانه استخدام TYPE_SYSTEM_OVERLAY على نظام Android O.


ما الذى يمكن فعله حيال ذلك؟

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

قام المطورون الذين يستخدمون هذه الميزة بفتح تقارير الأخطاء على Android Issue Tracker (# 260787 و # 36574245) للاحتجاج على التغيير وطلب واجهة برمجة تطبيقات بديلة ، لكن أحد مستخدمي Google علق على المتعقب بالبيان التالي:

الحالة: لن تصلح (السلوك المقصود)

لقد تابعنا فريق المنتج والهندسة وتوصلنا إلى أنه يمكن للمطورين استخدام أنشطة SHOW_WHEN_LOCKED لإظهار وقت قفل الجهاز ، ولكن لم يعد من الممكن عمداً الظهور على شاشة القفل / فوق غطاء الإشعار

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

نظرًا لأن هذه هي أول معاينة للمطورين لنظام Android O ، فلا يزال بإمكان Google تغيير رأيهم وتوفير هذه الوظيفة للتطبيقات التي لا تستهدف Android O أو لاستعادة Google TYPE_SYSTEM_OVERLAY. ولكن إذا بقيت الأمور على حالها حاليًا ، يمكنك تقبيل هذه التطبيقات وداعًا . وسيكون ذلك عارًا.


بفضل ايلي ايرفين لاختبار العديد من هذه التطبيقات بالنسبة لي!