ما قيل على Google I / O 2019: Android 10 ، تطبيقات AR والمزيد

في هذه المقالة سوف أخبر عن انطباعاتي عن مؤتمر I / O 2019 الخاص بـ Google ، والذي قمت أنا وزملائي بزيارته في اليوم الآخر (وحتى "أضاءنا" مع طلبنا في أحد العروض التقديمية). سيساعدك ذلك على الشعور بالجو ، وربما يشجعك على مشاهدة بعض التقارير المنشورة على قناة Google Developers .


Badoo Developers على Google I / O 2019

يوم 0. مقدمة


للوصول إلى المؤتمر ، تحتاج إلى الفوز في اليانصيب ، الذي يبدأ في فبراير على موقع I / O الخاص بـ Google (عادة ما يصبح هذا معروفًا من الأخبار). لكن النصر لا ينص على تذكرة ، ولكن فقط يجعل من الممكن استبدالها بمبلغ 1150 دولار. هناك برامج أخرى تسمح لك بالحصول على تذكرة بسعر مخفض أو مجانًا ، على سبيل المثال Code Jam . يمكن للطلاب وموظفي الجامعة شراء تذكرة أرخص بكثير - مقابل 375 دولار.

قبل المؤتمر ، كان لشركات تكنولوجيا المعلومات حفلات للمشاركين. اكتشفت عنهم من خلال الدردشة على Telegram ، والتي جمعت أكثر من 150 مستخدم ناطق بالروسية. عادة ، يمكنك الدخول في هذه الدردشات بدعوة من مجتمعات Android المتخصصة في Telegram. هذه الأحزاب هي فرصة جيدة للقاء المشاركين الآخرين في المؤتمر في بيئة غير رسمية. على سبيل المثال ، قابلنا المنظم Mobius وفريق من المطورين الذين يصنعون التطبيق لتطبيق Air trafers في الهواء.

تم عقد المؤتمر تحت شعار "لا وقوف السيارات". نظمت Google حافلات مكوكية مجانية من وإلى أكثر الفنادق شعبية في المنطقة ، كما خصصت رموزًا ترويجية لخدمة سيارات الأجرة Lyft (منافس Uber's في الولايات المتحدة).

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

يوم 1


يتم فتح اليوم الأول من المؤتمر من خلال ما يسمى الأساسات - العروض العامة. الأول للجميع ، والثاني للمطورين.


قبل العمل الرئيسي ، يعمل كل من man-DJ و AI-DJ معًا

الأخبار العاجلة


في العرض الرئيسي الأول ، تحدثت العروض التقديمية عن مشاريع Google المختلفة. إليك بعض الأخبار:

  • تواصل الشركة تطوير Google Duplex - مساعد روبوت يمكنه الاتصال وحجز الوقت على طاولة تصفيف الشعر / المطعم ؛
  • يمكن لـ Google Lens تحليل الشيكات ومشاركة مبلغ الفاتورة مع مبلغ الحصة (مهمة شائعة في الولايات المتحدة الأمريكية) ؛
  • سيعمل مساعد Google في وضع عدم الاتصال وينخفض ​​بشكل كبير ، ويمكن اعتبار الرسائل الصوتية في برامج المراسلة الفورية والمكالمات نصًا على الشاشة باستخدام Live Relay.

في Android 10 سيظهر:

  • المزيد من الرقابة الأبوية.
  • موضوع الظلام.
  • دعم محسّن للأجهزة القابلة للطي ؛
  • إيماءات الملاحة الجديدة ؛
  • تحسين المشاركة ؛
  • مجموعة جديدة من الإخطارات حسب الأولوية.

في عرض تقديمي للمطورين ، أعلنوا أن Kotlin هي الآن لغة البرمجة الرئيسية لتطوير Android. قدمت Google مكتبة جديدة لكاميرا Camera X ، وهي UI Jetpack Compose الجديدة (على ما يبدو ، أنها لا تزال خامًا ، ولكنها واعدة جدًا) ، ميزات جديدة لتحديث التطبيق: سيتمكّن المطور من طلب التحديث من تلقاء نفسه في واجهة التطبيق.


يتم إنشاء ترجمات في الوقت الحقيقي خلال كل تقرير.

نصائح جوجل للطي


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

أكد ممثلو Google على أنه إذا اتبعت أفضل الممارسات ، على سبيل المثال ، تعاملت بشكل صحيح مع قلب الشاشة ، فسيعمل كل شيء خارج الصندوق. لدعم الأجهزة القابلة للطي ، يتم استخدام نفس الآلية بالنسبة للنوافذ المتعددة على الأجهزة اللوحية ونظام التشغيل Chrome. بالإضافة إلى android الموجود بالفعل: maxAspectRatio ، android: minAspectRatio سيظهر لإضافة قيود على نسب العرض إلى الارتفاع للأطراف المدعومة في التطبيق. تدعي Google أن 2 بوصة (5.08 سم) سيكون الحد الأدنى لعرض الشاشة لأجهزة Android بدءًا من Android Q.

بعض الأشياء للتحقق مما إذا كنت تنفذ دعمًا للأجهزة القابلة للطي في التطبيق الخاص بك عند ثني الجهاز وإلغاء التحكم فيه:

  • يجب على التطبيق استعادة نفس الحالة ؛
  • يجب الحفاظ على موضع التمرير ؛
  • يجب أن يظل تركيز لوحة المفاتيح كما هو.

إذا كنت لا ترغب في تغيير حجم النشاط ، فإن android: resizeableActivity = علامة زائفة قد لا تساعد دائمًا ، لأن النظام لا يزال بإمكانه تغيير حجم النشاط أو وضعه في وضع التوافق:



وضع التوافق

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

على إيجابيات وسلبيات متعددة الوحدات


في المؤتمر ، تم إيلاء الكثير من الاهتمام للوحدة. أهم مزايا multimodularity:

  • يمكن تشغيل الاختبارات فقط لتلك الوحدات التي تتأثر بطريقة ما بالتغييرات في الفرع الحالي ؛
  • يمكنك عزل اختبار الوظائف المختلفة للتطبيق ؛ على سبيل المثال ، في Badoo ، لدينا تطبيق معرض يحتوي على جميع عناصر واجهة المستخدم ؛ أثناء تطويرها ، يمكنك إنشاء هذا التطبيق بسرعة كافية ، لأنه يحتوي على عدد محدود من التبعيات (تحدث زملائي عن ذلك في تقرير عن MBLT DEV ) ؛
  • القدرة على إضافة ميزات ديناميكية: وفقًا للمتحدث ، يستخدم 80٪ من المستخدمين 20٪ من وظائف التطبيق ، وبالتالي يمكن نقل معظم الوظائف إلى الوحدة الديناميكية وتنزيلها لاحقًا ؛ يعد المرشحون الجيدين ، على سبيل المثال ، ميزات للمستخدمين الخبراء ، ميزات يجب أن تدفع ثمنها ، شاشة التطبيق About ؛ في الوقت نفسه ، لا ينبغي جعل Onboarding وظيفة ديناميكية ، حيث سيتم عرضها لجميع مستخدمي التطبيق.

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

  • إنشاء قاعدة بيانات واحدة للتطبيق بأكمله ؛
  • إنشاء قاعدة بيانات لكل وحدة نمطية ؛
  • إنشاء قاعدة بيانات واحدة لعدة وحدات يمكن توصيلها بشكل منطقي.

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

لدينا أكثر من 170 وحدة في تطبيق Badoo ، لا نستخدم الميزة الديناميكية حتى الآن ، لكننا نحصل على مزايا وعيوب متعددة الوحدات.

اليوم 2


كان اليوم الثاني من المؤتمر هو الأكثر حافلاً بالأحداث. بدأ التقرير الأول في الساعة 8:30 ، وانتهى آخر مرة في الساعة 20:00. تم تقديم ما مجموعه 90 تقريراً.


هذا الجمهور ممتلئ تمامًا بالناس في حوالي عشر دقائق.

واجهة تعريفي جديدة


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

خدمت Flutter و React و Litho و Vue.js كمصدر إلهام للمطورين ، وبالتالي فإن الإطار الجديد سيبدو مألوفًا لدى الكثيرين. الفكرة الرئيسية هي التأكد من استجابة واجهة المستخدم للتغيرات في النموذج ، في حين لا يوجد منطق في واجهة المستخدم.

يتم عرض التسلسل الهرمي عرض كدالات ملحوظ مع تعليق توضيحيComposable. يستخدم الإطار البرنامج المساعد Compiler لاعتراض المكالمات إلى الوظائف القابلة للتكوين.
يعد فريق Google بدعم الإطار الجديد في التسلسلات الهرمية للعرض القديم (باستخدام التعليقات التوضيحيةGenerateView) ، وكذلك المعاينة مباشرة في Android Studio ودعم الرسوم المتحركة.
لا يزال Jetpack Compose خامًا تمامًا وغير جاهز للاستخدام في التطبيقات الواقعية ، لكن الأمر يستحق دراسة مبادئ عمله الآن لفهم أين يتطور تطوير Android.

تصميم تطبيقات الواقع المعزز


أعدت Google نصائح لتصميم تطبيقات AR.

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

يمكن العثور على مزيد من المعلومات حول كيفية تصميم عناصر AR في التطبيق في الفيديو من المؤتمر .

أفضل الممارسات لاستخدام النص عند تطوير تطبيقات Android


يتحدث هذا التقرير عن أفضل الممارسات للعمل مع النص وبعض التغييرات في الإصدار الجديد من Android.

  • سيقوم Android Q بتعطيل الواصلة افتراضيًا.
  • يساعدك PrecomputedTextCompat على حساب حجم النص قبل العرض. تجدر الإشارة إلى أنه من المستحيل تغيير الخط والمعلمات الأخرى في TextView بعد تمرير المعلمات إلى PrecomputedTextCompat.
  • الأنماط التي تنطبق على النص (من أعلى أولوية إلى أدنى أولوية):
    • سبان،
    • عرض (على سبيل المثال ، تم تعريفه بواسطة سمات في XML) ،
    • النمط،
    • النمط الافتراضي
    • موضوع،
    • مظهر النص.

  • على Android ، سيكون من الممكن تعيين خطوط احتياطية للخطوط باستخدام Typeface.CustomFallbackBuilder. على سبيل المثال ، إذا كان بعض خطوط التطبيق غير مدعوم بإحدى اللغات ، فعندئذ يمكنك تحديد نوع آخر كبديل ، يمكنك أيضًا تعيين خطوط لرموز تعبيرية. تمت ترجمة طلبنا إلى أكثر من 40 لغة ، لذلك من المهم بالنسبة لنا أن نفهم كيف سيبدو إذا كان الخط الرئيسي غير مدعوم في إحدى هذه اللغات.
  • استخدم android: imeOptions = "flagNoPersonalizedLearning" في EditText لمنع حفظ الكلمات المدخلة (على سبيل المثال ، عند إدخال رمز ترويجي).
  • إذا كنت بحاجة إلى استخدام لغتين في تطبيق ما ، يمكنك استخدام setImeHintLocales للإشارة إلى لوحة المفاتيح التي تحتاجها بلغة مختلفة. قد يكون ذلك مفيدًا لتطبيقات القاموس أو خدمات التدريب.

وآخر الأخبار قليلا. في عرض GIFs والمزيد: دمج بحث التعبير في تطبيقك ، قدمت Google واجهة برمجة التطبيقات الخاصة بهم للعمل مع GIFs - Tenor ، وهو بديل لـ Giphy المعروف منذ زمن طويل. كنا أول من استخدمها في تطبيق Badoo ، لذلك وصلنا إلى شريحة المتحدث كمثال للاستخدام. تافه ، ولكن لطيفة!


طلبنا "أضاء" في عرض التينور

الحفله


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


قبل الحفله

اليوم 3


كان اليوم الثالث قصيرًا. بحلول الساعة 16:30 ، تم تقديم جميع التقارير ، ومع نهاية التقارير ، انتهى المؤتمر. تحدثت غالبًا في هذا اليوم مع مشاركين آخرين ، لكنني سأخبركم عن اثنين من التقارير التي تستحق الاهتمام بها.


توجد مناطق اتصال في المؤتمر حيث لا ينصح باستخدام المعدات

مبادئ الرسوم المتحركة


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

يجب أن تفي الرسوم المتحركة الجيدة بثلاثة معايير:

  • إعادة التشغيل (إعادة الدخول): يمكن إلغاء الرسوم المتحركة وبدء تشغيلها مرة أخرى ؛
  • الاستمرارية: يجب ألا تقفز الرسوم المتحركة من حالة إلى أخرى ؛
  • نعومة: الرسوم المتحركة يجب أن تغير سرعة / اتجاه الحركة تدريجيا.

كيفية تحقيق هذا:
  • عند بدء الحركة ، قم بتعيين القيمة النهائية فقط (حيث يجب أن تنتهي) ؛ عند تحديد قيمة مبدئية معينة ، يمكن للرسوم المتحركة القفز من حالة إلى أخرى ، ويمكن أن يحدث هذا إذا بدأ بالضغط على زر ونقر المستخدم عليه عدة مرات ؛
  • إلغاء الرسوم المتحركة القديمة قبل بدء واحدة جديدة (في بعض الأحيان يتم تنفيذها بالفعل داخل Android SDK ؛ على سبيل المثال ، يقوم ViewPropertyAnimator ، الذي تم الحصول عليه من View # animate ، بإلغاء الرسوم المتحركة السابقة للخاصية المتحركة) ؛
  • استخدام الرسوم المتحركة الربيع . تتحرك هذه الرسوم المتحركة مع مراعاة قوانين الفيزياء ، مما يعني أن النعومة والاستمرارية تتحقق بسهولة أكبر ، أي إذا تحرك كائن من النقطة A إلى النقطة B ووصل أمر للانتقال إلى النقطة C ، في حالة استخدام Spring Animation ، فإن الكائن سيغير اتجاه الحركة بسلاسة ؛
  • استخدام < تحفيز -اختيار > لإضافة الرسوم المتحركة إلى Drawable ؛ لتجنب الانتقال بين جميع الحالات الممكنة ، يمكنك إدخال حالة وسيطة (على سبيل المثال ، حالة تمهيد) وتصفحها.

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

اختبار الأداء


مكتبة قياس أداء التطبيق هي الآن في حالة ألفا كجزء من Jetpack. يسمح لك بإجراء قياسات أداء الكود وتجنب الكثير من أخطاء القياس ، وهناك أيضًا تكامل مع Android Studio.

الأشياء التي يجب تذكرها عند كتابة اختبارات الأداء وتشغيلها باستخدام Jetpack Benchmark Library :

  • لا يمكن الاعتماد على جمع القياسات على المحاكي ، فإن أي تحذير عند بدء التشغيل سوف يخبرك بهذا ؛
  • يجب تشغيل ProGuard / R8 لقياس الأداء بشكل صحيح ؛
  • يجب أن يكون لدى الجهاز مستوى شحن كافٍ حتى لا يؤثر انخفاض مستوى الشحن على نتائج القياس ؛
  • يجب أن تكون الوحدة النمطية التي تتم فيها اختبارات الأداء مع المعلمة "debuggable = false" ؛
  • لا تقارن نتائج القياس على أجهزة مختلفة ، فإنها يمكن أن تختلف اختلافًا كبيرًا.


استنتاج



فريق Badoo ومطور جوجل

Google I / O بالتأكيد تستحق الزيارة. في مثل هذا الجو ، يمكنك سماع العديد من القصص المثيرة للاهتمام ومعرفة الحلول الهندسية المثيرة للاهتمام على فنجان من الشاي. على سبيل المثال ، حول كيفية توصل شباب من فكونتاكتي إلى موضوع مظلم وطرحوه للمستخدمين الذين سألوا: "أين السمة الغامضة؟" ، كيف على الجانب الآخر من مطوري Earth من Tinder يحاربون المحتوى غير المرغوب فيه ومحتوى إباحي وكيف تم تطبيق App في the Air team تسجيل السيارات للسفر الجوي. يمكنك أيضًا الاستعانة بممثلي Google الذين يقومون بإنشاء الأدوات التي نستخدمها وطرح الأسئلة.

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

Source: https://habr.com/ru/post/ar452618/


All Articles