بدء إنشاء تطبيقات لنظام التشغيل ChromeOS

تتوافق أجهزة ChromeOS، مثل أجهزة Chromebook، مع "متجر Google Play" وتطبيقات Android. تفترض هذه المقالة أن لديك تطبيق Android حاليًا مصممًا للهواتف أو الأجهزة اللوحية وتريد تحسينه لأجهزة Chromebook. لمعرفة أساسيات إنشاء تطبيقات Android، راجع إنشاء تطبيق Android الأول لك.

تعديل ملف البيان لتطبيقك

للبدء، عليك تحديث ملف البيان لمراعاة بعض الاختلافات الأساسية في الأجهزة والبرامج بين أجهزة Chromebook والأجهزة الأخرى التي تعمل بنظام التشغيل Android.

بدءًا من الإصدار M53 من ChromeOS، تعمل جميع تطبيقات Android التي لا تتطلّب ميزة android.hardware.touchscreen بشكل صريح على أجهزة ChromeOS التي تتوافق مع ميزة android.hardware.faketouch. ومع ذلك، لضمان عمل تطبيقك على جميع أجهزة Chromebook، عليك تحديث ملف البيان كي لا تكون ميزة android.hardware.touchscreen مطلوبة، كما هو موضّح في المثال التالي.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          ... >
    <!-- Some Chromebooks don't support touch. Although not essential,
         it's a good idea to explicitly include this declaration. -->
    <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
</manifest>

تأتي الأجهزة المختلفة مزودة بمجموعات مختلفة من أجهزة الاستشعار، وقد لا تحتوي أجهزة Chromebook على جميع أجهزة الاستشعار الموجودة في أجهزة Android المحمولة، مثل نظام تحديد المواقع العالمي (GPS) ومقاييس التسارع. ومع ذلك، في بعض الحالات يتم توفير وظيفة المستشعر بطريقة أخرى. على سبيل المثال، قد لا تحتوي أجهزة Chromebook على أجهزة استشعار نظام تحديد المواقع العالمي (GPS)، لكنها توفر بيانات الموقع استنادًا إلى اتصالات Wi-Fi. راجع نظرة عامة على أدوات الاستشعار لمعرفة المزيد حول أدوات الاستشعار التي يتيحها نظام Android الأساسي.

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

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

تحديث حزمة تطوير البرامج (SDK) المستهدَفة

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

التحقّق من متطلبات الاتصال بالشبكات

وتعمل أجهزة Chromebook بنظام التشغيل Android بالكامل في حاوية، على غرار Docker أو LXC. وهذا يعني أنّ نظام التشغيل Android لا يمكنه الوصول مباشرةً إلى واجهة الشبكة المحلية (LAN) الخاصة بالنظام. وبدلاً من ذلك، تمر حركة مرور بيانات IPv4 عبر طبقة داخلية من ترجمة عنوان الشبكة (NAT)، ويتم توجيه حركة مرور بيانات IPv6 الأحادية عبر قفزة إضافية.

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

استثناءً للقيود المفروضة على البث المتعدد، يشغّل ChromeOS خدمة تعيد توجيه حركة بيانات mDNS بين نظام التشغيل Android وواجهة LAN، وبالتالي تكون واجهات برمجة التطبيقات لاكتشاف خدمة الشبكة العادية هي الطريقة الموصى بها لاكتشاف الأجهزة الأخرى في شريحة الشبكة المحلية. بعد العثور على جهاز على شبكة LAN، يمكن لتطبيق Android استخدام مقابس البث الأحادي TCP أو UDP العادية للاتصال به.

تستخدم اتصالات IPv4 التي تنشأ من Android عنوان IPv4 لمضيف ChromeOS. داخليًا، يرى تطبيق Android عنوان IPv4 خاصًا معيّنًا إلى واجهة الشبكة. تستخدم اتصالات IPv6 التي تنشأ من Android عنوانًا مختلفًا من مضيف ChromeOS، لأنّ حاوية Android لها عنوان IPv6 علني مخصّص.

استخدام السحابة الإلكترونية والتخزين المحلي بفعالية

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

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

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

تحديث مكتبات NDK

إذا كان تطبيقك يستخدم مكتبات Android NDK وكان الإصدار المستهدف من حزمة تطوير البرامج (SDK) هو 23 أو إصدارًا أحدث، تأكَّد من إزالة عمليات نقل النصوص من كل من إصدارَي ARM وx86 لمكتبات NDK، لأنّها غير متوافقة مع الإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأحدث. بسبب ترك عمليات نقل النصوص في مكتبات NDK، قد تتسبب أيضًا في حدوث أخطاء في التوافق مع أجهزة Chromebook، وخاصةً عند تشغيلها على جهاز يستخدم بنية x86.

تطوير حالات اختبار جديدة لتطبيقك

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

إذا كانت لديك احتياجات خاصة للحجم أو الاتجاه لبيئات سطح المكتب، يمكنك إضافة علامات وصفية كتلميحات عن الحجم أو الاتجاه. لتضمين الحجم والاتجاه على الهواتف، حدِّد سمات التنسيق defaultHeight أو defaultWidth أو minHeight بدلاً من ذلك.

إذا كنت مهتمًا بمعالجة أجهزة إدخال معيّنة لفئات أجهزة معينة، اختَر android.hardware.type.pc لإيقاف وضع توافق الإدخال.

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

ننصحك بالاطّلاع على قائمة حالات الاختبار لتطبيقات Android على "نظام التشغيل Chrome" والتي يمكنك استخدامها في خطة الاختبار. تتناول حالات الاختبار السيناريوهات الشائعة التي يجب أن تكون تطبيقات Android جاهزة لها إذا كان من المتوقّع تشغيلها على أجهزة ChromeOS.

التغييرات في النوافذ المتعددة والاتجاه

يمكن لبيئة النوافذ المتعددة في ChromeOS أن تجعل مشاكل استمرار الحالة والتذكر أكثر وضوحًا. استخدِم ViewModel لحفظ حالتك واستعادتها عندما يكون ذلك مناسبًا.

لاختبار مدى استمرارية استخدام التطبيق، قلل تطبيقك لبعض الوقت، وابدأ عملية أخرى تستهلك موارد كثيرة، ثم استعِد تطبيقك للتأكّد من عودته إلى حالته السابقة.

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

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

تأكد من أن الشريط العلوي لا يعطل تطبيقك من خلال إزاحة عناصر واجهة المستخدم أو الإدخال باللمس المستند إلى الموقع. بالنسبة إلى أجهزة ChromeOS، تأكَّد من أنّ تطبيقك لا يضيف معلومات مهمة في منطقة شريط الحالة.

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