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

ألكسندر سميرنوف ، الشريك المؤسس والمدير الفني في PapaJobs ، مؤسس مجتمع مطوري Android MOSDROID ، مدونة الفيديو الرائدة Android في وجوه. |
دينيس نيكليودوف ، أول GDE في روسيا ، يعمل في سنغافورة في 90seconds.tv ، رئيس مركز بودكاست AndroidDev ، ومتحدث في العديد من المؤتمرات ومؤلف العديد من دورات التطوير. |
تم تقديم Android Jetpack في شهر مايو على Google I / O.
ماذا تتوقع من هذا المؤتمر؟ هل تحققت توقعاتك؟ألكسندر سميرنوف : توقعت أقل بكثير مما تصورت في النهاية. يبدو أنه لا توجد حاجة لتطوير المنصة من وجهة نظر الأعمال. في قطاع الهواتف المحمولة ، حققت Google انتصارًا ساحقًا في 87٪ من السوق مع اتجاهات إيجابية ، وخلال السنوات القليلة الماضية كانت ML مرئية كمجال عملهم الرئيسي. كنت أنتظر التقدم في تصميم المواد ، وإضافة أدوات ML للمطورين ، وإصدار Constraint Layout 2.0. لكننا رأينا خطوة كبيرة في ترتيب الأمور ودعم المطورين. مسرور فجأة بالعناصر الجديدة في AJP وبداية النضال من أجل تحسين الدعم. مرحبًا ، Android X.
دينيس نيكليودوف : التزمت بالقاعدة الرئيسية لرحلات مؤتمرات البقالة: لا تنتظر الإعلانات والتغييرات الثورية والهدايا - لا شيء سوى مقابلة الأصدقاء القدامى. لو أنهم لم يكسروا أي شيء. ولكن لا ، لقد قدموا Android X ، وهي عملية لا تعتبر العملية الأكثر متعة في المشاريع الكبيرة. ولكن كان هناك الكثير من الإيجابيات. الشيء الأكثر قيمة في مؤتمر Google I / O هو التواصل مع مطوري إطار العمل والزملاء في ورشة العمل.
ما هي العناصر الجديدة التي تم وضعها بالفعل موضع التنفيذ؟Denis Neklyudov : من AJP ، قمنا باختبار الترحيل فقط إلى Android X. لدي مجموعة مثبتة من الحلول في المشروع ، ولا أرغب في الاندفاع وتقديم مكونات جديدة. لقد دعموا للتو الهدف SDK 28 ، وتحققوا من الإصدار الأخير من Android Pie وهدأوا. نحن في انتظار التحسينات الموعودة للاختبار لتكون متاحة. Jetpack الآن - هذه مكتبات صغيرة متنوعة مجمعة في مكان واحد ، مما يجعل حياة المطورين أسهل في بعض الأحيان وأكثر متعة. معظم المنتجات الجديدة ليست جاهزة بعد لإصدارات إصدارات التطبيقات.
ألكسندر سميرنوف :
من المستجدات المعروضة ، جربت كل شيء ، ولكن في الإنتاج قمنا فقط بتحديث التطبيق إلى Material Design الجديد وتطبيق Android KTX ، الذي أحببناه لبساطته وراحته. أحب طي مجموعة من التعليمات البرمجية في بضعة أسطر. ألقينا الباقي في خط الأنابيب ونتحرك في هذا العام.
ستكمل Jetpack المهام بنجاح وستستمتع باستخدامها. ولكن نعم ، بعض الأقسام لا تزال في شكل ألفا ، لذلك في مرحلة التطوير يمكن أن تظهر مشاكل صغيرة. هذا أمر طبيعي. لا أوصي بسحب أدوات الإنتاج في حالة ألفا ، ولكن مع Kotlin نفسه لم يوقفني.
بالنسبة إلى Android ، كانت مسألة التنقل المريح دائمًا مشكلة حادة.
هل سيتغير أي شيء مع AJP؟Denis Neklyudov : في نظام Android ، كان التنقل دائمًا قويًا ومتنوعًا: نشاط ، جزء ، ما زلت بحاجة إلى معالجة DeepLinks ومراقبة الحجج التي تم تمريرها. يمكنك الخلط بسهولة في خريطة كبيرة للشاشات. تحاول Google فقط حل هذه المشكلة باستخدام ميزة التنقل الجديدة ، والتي تم دمجها في Android Studio مع مفاعل التسلسل الهرمي للشاشة الخاص بها.
أستخدم الحلول محلية الصنع التي تلبي متطلبات والبنية العامة للمشروع. بينما تحتوي ميزة التنقل على أخطاء خطيرة وليست جاهزة للاستخدام في التطبيقات المنشورة.
ألكسندر سميرنوف : في Jetpack ، خطت Google خطوة جادة إلى الأمام: ظهر التنقل ، والذي سيغير بنية التطبيقات للأفضل. في التطبيقات الكبيرة ، يمكن أن يصبح التنقل معقدًا لدرجة أن تذكر جميع خيارات الانتقال أمر غير واقعي. وما زالوا بحاجة للبرمجة والاختبار. كان هناك العديد من البدائل التي حاولت حل هذه المشكلة: Cicerone ، Flow ، Connector. لا أحد منهم يعمل بهذه الطريقة.
بادئ ذي بدء ، تجدر الإشارة إلى محرر التنقل: من الملائم إنشاء رسم تخطيطي للانتقال معه ، ومن الجميل التحكم فيه باستخدام الماوس. تم تنفيذ معالجة DeepLinks المريحة مع دعم تشغيل شجرة الانتقال بالكامل. يقسم مكون التنقل العمل مع DeepLinks إلى حالتين: صريح وضمني. أول ما يمكن أن ننشئه بأنفسنا من خلال DSL مناسب وندعو PendingIntent من خلال إجراء محدد. والثاني هو DeepLinks المألوف لنا ، على سبيل المثال ، من المتصفح. يتم إنشاؤها واستدعاؤها بطرق مختلفة ، ولكن تتم معالجتها بشكل متطابق باستخدام الرسم البياني للتنقل والدعم الكامل لبناء المكدس لفتح القسم الضروري. لم تكن معالجة DeepLinks بهذه السهولة من قبل.
تمت إضافة مكتبة الترحيل إلى AJP. كيف تغير العمل مع RecyclerView؟Denis Neklyudov : كان لدى RecyclerView دائمًا عيب: تحتاج إلى قضاء الكثير من الوقت في حل يوفر تحميل صفحة تلو الأخرى في كلا الاتجاهين ، وحتى مع القدرة على القفز إلى أجزاء مختلفة من هذه القائمة اللانهائية. في مكتبة الترحيل ، قدمت Google حلها لهذه المشكلة.
ألكسندر سميرنوف : تكرر المكتبة روتين معظم مطوري Android - العمل مع القوائم. لتسريع عرض مجموعات البيانات الكبيرة ، نقوم جميعًا بتقسيمها إلى صفحات والعمل معها. باستخدام مكتبة الترحيل ، يصبح هذا النوع من العمل بسيطًا ، حيث نحصل على التنفيذ خارج الصندوق. بالإضافة إلى ذلك ، يمكن أن يعمل المكون على تحميل البيانات من عدة مصادر وخلطها. نحصل أيضًا على فكرة مثيرة للاهتمام مع العناصر النائبة ، عندما يمكنك في وقت تحميل البيانات الإضافية إظهار بذرة جميلة بدلاً من المغازل الأبدية. بالإضافة إلى ذلك ، تمت إضافة ميزة قتل للعمل مع اللقطات أو البيانات غير المستقرة - يمكن للمكون نفسه أن يفهم ما تم تغييره والعناصر التي يجب إسقاطها في وسط القائمة وأي العناصر في الأعلى.
في الواقع ، تم إنشاء هذا المكون للعمل بالاقتران مع RecyclerView ، ولكن مكتبة الترحيل تتكون من جزأين رئيسيين: PagedList و PagedListAdapter. في الواقع ، باستخدام PagedList ، يمكنك العمل مع هذه الأجزاء ، والتنزيل من عدة مصادر.
أحد المنتجات الجديدة هو Workmanager. كيف يغير عمله بمهام الخلفية؟ألكسندر سميرنوف : يساعد على الانتقال بشكل منظم من الخدمات القادرة إلى واجهة برمجة تطبيقات ملائمة في Jetpack: يسمح لك بإضافة الحاجة إلى تلبية الشروط البيئية لبدء مهمة ، لتعيين ترتيب المهام والسلاسل. يمكنك نقل البيانات إلى مهمة تنفيذية والحصول على النتيجة منها. له ثلاث مزايا ضخمة: لست بحاجة إلى Google Play على جهازك ، يمكنك تشغيل المهام فقط في ظل ظروف معينة ، يمكنك إنشاء سلاسل المهام.
لم يكن أي من نظائرها السابقة مكتفية ذاتيا ، لذلك كانت هناك مكتبة مثل Android-Job من Evernote ، والتي استخدمت جميع نظائرها في وقت واحد. بعد ظهور WorkManager ، تختفي الحاجة إليها.
دينيس نيكليودوف : حصلت Google على مثل هذا الغلاف الكبير على جميع الحلول الحالية للعمل مع مهام الخلفية. نظرًا لأنه لا يمكن إكمال المهمة المؤجلة في الخدمة ، يواجه المطورون إصدار Android Marshmallow ووصول Doze Mode. الآن التطبيق لا يستطيع أن يفعل ما يشاء. ومع كل نسخة من هذه القيود أكثر وأكثر. حتى مع Lollipop ، لدينا JobScheduler متاح ، والذي يقوم بتشغيل مهام الخلفية في ظل ظروف معينة وبموافقة النظام ، ولكن لديه أخطاء في الإصدارات السابقة ومن غير الواضح كيفية العمل معها في إصدارات Android حيث لا توجد. للقيام بذلك ، تم إنشاء غلاف في شكل مدير شبكة GCM وإعادة كتابته مرة أخرى كمرسل مهمة Firebase. لكن تبين أنها غير كاملة - كان هذا هو ولادة برنامج WorkManager البديل الحديث ، الذي يتولى مهمة أداء مهام الخلفية على أي إصدار من Android بدون أخطاء.
أضاف AJP ميزة جديدة - شرائح. ما هو المثير للاهتمام عنها؟الكسندر سميرنوف : بادئ ذي بدء ، يجب عرض الشرائح لمنتجك ومسوقك. فهي تسمح للمستخدم برؤية التطبيق الخاص بك في كثير من الأحيان واستخدام الجزء الضروري بشكل أسرع: انتقل مباشرة إلى القسم المطلوب ، وقم بتبديل الميزة الضرورية. تتيح لك الشرائح أيضًا المشاركة في تطبيقك من بين نتائج البحث في بحث Google ، وستتمكن أيضًا من الاندماج في مساعد Google في المستقبل.
في Slices ، يمكنك عرض الوظائف المتعلقة بنوع تطبيقك وإمكانياته. يمكن تمييز ثلاث مجموعات: التنقل وتنفيذ المهام والعودة إلى البيانات. بشكل عام ، من مستخدمي Slices يحصلون على تفاعل أبسط وأسرع ، يحصل المطورون على المزيد من الحركة والفرص لإعادة المستخدم إلى التطبيق.
Denis Neklyudov : اعترف بذلك ، لقد افتقرت منذ فترة طويلة إلى القدرة على تلقي المعلومات من التطبيقات في التطبيقات ذات العناصر التفاعلية مباشرة من البحث. تعمل الشرائح على حل مثل هذه المشكلة ، مما يسمح للتطبيق بإعلان واجهة المستخدم والإجراءات معه ، والتي سيتم دمجها في تطبيقات الطرف الثالث ، بما في ذلك البحث. أتطلع حقًا لرؤية الأخبار في واجهة مساعد Google على الهاتف الذكي المضمنة من Feedly ، والصور من الماضي من Timehop ، ورحلات الطيران من App in the Air ، والطريق إلى العمل "Y. Navigator" ، وما إلى ذلك.
بالنسبة لمالكي التطبيقات ، هذه فرصة رائعة لزيادة وتيرة استخدام خدماتهم ، وستصبح أكثر ملاءمة للمستخدم للتبديل بين المسارات في Spotify دون مغادرة محاكي السباق الجديد.
وما هي القيود؟ألكسندر سميرنوف : لا تزال الشرائح تقطع بشكل كبير من خلال النماذج: مجموعة من التطبيقات مدمجة في تطبيقات أخرى ويحتاج المستخدم إلى فهم أن آلية التفاعل ستكون مختلفة. للتنوع ، عليك دائمًا الدفع. إذا كنت تتذكر الأدوات ، فقد كانت محدودة للغاية. بالطبع سيكون التوسع الوظيفي ، لكنني لا أعتقد أنه يجب توقع شيء كبير من هذا.
دينيس نيكليودوف : أوافق ، تقتصر واجهة Slices API الآن على مجموعة معينة من القوالب الممكنة التي يمكن تضمينها في تطبيق تابع لجهة خارجية ، ولكن ستظهر أيضًا قوالب جديدة مع إصدارات جديدة. قام المطورون بحظر الواجهات المخصصة على وجه التحديد من أجل أن يكونوا قادرين على التحكم في كيفية ظهور الشرائح في التطبيق المضمن ، بحيث تكون جميعها متسقة.
أضافت جوجل مكتبة KTX إلى AJP. ما هي انطباعاتك عنها؟ألكسندر سميرنوف : أداة رائعة ، وهذا بالضبط ما كان مفقودًا لفترة طويلة جدًا. KTX عبارة عن مجموعة من الإضافات للاستخدام الأكثر متعة لواجهة برمجة تطبيقات Android في المهام اليومية.
أوصي بشدة بتحويله إلى جميع مطوري Android من أجل زيادة الإنتاجية. يمنح الراحة والسرعة ومزاج جيد عند التطور. مع KTX ، يمكنك حتى طي لوحة مرجل والحصول على كود أنيق يسهل قراءته.
ولكن عليك أن تدرس بعناية الإضافات التي توفرها KTX ، وأنظر إلى شفرة المصدر لهذه الامتدادات لفهم ما يحدث تحت غطاء المحرك. وبما أنه لم يعد هناك مطبات ، يمكنك أن تأخذ المعركة بأمان.
دينيس نيكليودوف : توصل مطورو AJP إلى القرار الصحيح: يجب أن يكون الإطار أكثر صداقة مع Kotlin. لذلك ولد المشروع بمجموعة من الوظائف الثابتة ، مما أدى إلى توسيع بناء الإطار. يحتوي Kotlin على العديد من ميزات اللغة المريحة ، وتتيح لك وظائف التمديد فقط الوصول إلى فئات الإطار بطريقة مريحة. على سبيل المثال ، يأتي view.isVisible كبديل قصير لـ view.getVisibility () == View.Visible.
هناك الكثير من الوظائف المختلفة ، فمن الأفضل أن
ترى بنفسك . بالطبع ، يمكنك العيش بدونهم ، كما هو الحال بدون Kotlin. لكنها ممتعة أكثر.
تعمل Google بشكل متزايد على الترويج لـ Kotlin. كيف تشعر حيال هذا؟
ما هي آفاقه؟ألكسندر سميرنوف : لدي موقف إيجابي للغاية تجاه Kotlin ، ومنذ يناير 2016 أستخدمه كلغة تطوير رئيسية لنظام Android. خلال هذا الوقت ، شارك في هجرة ثلاث شركات من جاوة إلى كوتلن. جافا ، لسوء الحظ ، تتطور ببطء شديد ، و Kotlin لتطوير المحمول هو نفس الهواء النقي.
إن اللحظة التي تصبح فيها Kotlin لغة التطوير الرئيسية لنظام Android هي مسألة وقت. يظهر مطورو Android بالفعل ، حيث Kotlin هي لغة التطوير الأولى ، و Java شيء غير مألوف. لدينا مستقبل جميل مع Kotlin ، على الأقل حتى تقرر Google إنشاء نظام تشغيل جديد ، إذا جاز التعبير ، Android محسن. لكن هذه مسألة مستقبل بعيد ، وهي ليست حقيقة ما سيحدث.
دينيس نيكليودوف : لا يمكنني القول إن Google تروج بنشاط لـ Kotlin ، بدلاً من ذلك ، تصبح بعض المشاريع المتعلقة بالإطار نفسه صديقة لـ Kotlin. هذا لا يعني على الإطلاق أنه في عام 2018 ، يعد مطور Java لنظام Android نوعًا من الارتداد أو ممثل أقلية. لكن حقيقة أن Kotlin أصبحت أكثر ثقة وأسرع أصبحت اللغة الافتراضية للمطورين ، وهذه أخبار جيدة.
عندما تسمع عن Flutter ، وهو إطار عمل متعدد المنصات لتطبيقات الهاتف المحمول من Google ، يردد Kotlin Native على الفور ، والذي يتم تجميعه لكل من Android و iOS. ينتظر الكثير منها أن تصبح لغة كل شيء: Android و iOS و Web و Embeded ... خطط JetBrains هي نابليون. نلاحظ تقارير الأخطاء ، واختبار بيتا ونستمتع بلغة ممتعة تمكننا من ترحيل مشاريعنا بأقل قدر من الألم.
لقد مضى أكثر من ثلاثة أشهر منذ إصدار Android AJP. كيف أظهر نفسه؟ألكسندر سميرنوف : باستخدام AJP ، خططت Google لمساعدة مطوري Android في إنشاء تطبيقات عالية الجودة بشكل أسرع وبدون حلول إضافية في حديقة الحيوانات. وكمكافأة ، جعلوا من السهل على المبتدئين الدخول في تطوير Android. أعتقد أن Jetpack تعاملت مع المهمة.
وكانت النتيجة مجموعة رائعة تحل مهام معظم المطورين. ولكن يمكننا أن نقول على وجه اليقين في حوالي 6-12 شهرًا ، عندما نصل إلى إصدار معظم الابتكارات. وقد أوقف هذا حتى الآن الكثيرين في طريقهم لبدء استخدام AJP في الإنتاج.
دينيس نيكليودوف : لم تقم Google بتنفيذ AJP من البداية ، لكنها جمعت الكثير من الأشياء المفيدة التي ليست جزءًا من إطار العمل نفسه ويتم تجميعها في تطبيقات من قبل مطوريها. إنها فكرة جيدة أن تجمعهم جميعًا تحت اسم عصري وحيوي. من الجيد للمطورين أنه يوجد الآن
مورد واحد حيث يمكنك العثور على حل رسمي للعديد من المشاكل. على الأقل هذا مناسب.
بالطبع ، ليس كل ما يتم تضمينه في هذه المجموعة جاهزًا للاستخدام في التطبيقات الجادة ، ولكن لا يزال هناك شيء في مراحل التطوير النشط وتصحيح الأخطاء. من الإطار نفسه ، هناك شعور مستمر بإصدار بيتا ، أنا حقًا لن أضغط على المريض وأناقش IDE. لكننا اعتدنا على Android.
في قائمة المكتبات والحلول هذه ، سيجد الجميع شيئًا مفيدًا لأنفسهم. وبالنسبة للمبتدئين ، يعد هذا موردًا إلزاميًا تمامًا للتعرّف ، حتى لا يخطوا على أشعل النار ، ولكن جرب أولاً أو أكثر الطرق الرسمية لحل مشاكلهم.
ما هي آفاق تطوير AJP؟ ماذا يمكن أن يكون العام المقبل؟ألكسندر سميرنوف : لدينا الآن العديد من التطورات الجديدة ، لذلك ، أولاً وقبل كل شيء ، يجب الانتهاء منها واستقرارها. ثم أتوقع التطوير المنهجي لكل من المكونات والأدوات ، ربما إضافة طفيفة لشيء جديد. كانت Jetpack خطوة إلى الأمام ، لذلك من العام المقبل أتوقع تحسينات منهجية ، ولكن بعد عام آخر يمكن أن يكون مثيرًا للاهتمام. ما يستحق الانتظار بالتأكيد في العام المقبل هو تكامل أكثر كثافة وملاءمة مع Android Studio.
دينيس نيكليودوف : سوف تتوسع AJP مع كل مهمة جديدة محلولة ، والتي تم طرحها في المجال العام. مع كل إصدار من Android ، سيتم أيضًا تطوير إطار Jetpack في شكل AppCompat و Material Components. ما سيظهر في المستقبل القريب من الصعب القول ، أنا في انتظار إضافة النيتروجين - مجموعة من الأدوات لاختبار التطبيقات على نطاق واسع.
على الصعيد العالمي ، تعمل Google باستمرار على توسيع إمكانات المتصفح ، ما الذي يمكن أن يؤدي إليه ذلك في المستقبل؟دينيس نيكليودوف : أكرر باستمرار أنه ليس من الضروري تصور بعض خطوات Google كشيء عالمي ومركزي. إذا كان لدى فريق Chrome موارد كافية لتطوير AMP و PWA والآن WebAssembly ، فهذا لا يعني أن هناك مؤامرة لنقل ونقل الجميع إلى الويب بحلول 202 .... مثل تطوير Flutter ، لا يعني ذلك أننا سنستخدم جميعًا هذا الإطار ، ومن ثم سيكون مصير Android هو الموت ، لأن ChromeOS أولاً ، ثم Fuchsia سيتولى جميع أجهزة المستخدمين. تحدث هذا الصيف ، جيك وارتون في Droidcon Berlin عن كيفية عدم وضوح الخط الفاصل بين الويب والتطبيقات الأصلية. يمكن الاستنتاج من التقرير أنه في الوضع الحالي ، من الضروري دعم جميع الأنظمة الأساسية بشكل صحيح ومحاولة إعادة استخدام الشفرة بينهما. ومع ذلك ، إذا كنت تعتقد أن الإنترنت يمكن أن يكون عالي السرعة ومستقرًا ورخيصًا جدًا في جميع أنحاء العالم ، فربما يكون لتطبيقات الويب فرصة للسيطرة. ولكن حتى الآن بالكاد يعتقد ذلك.
ألكسندر سميرنوف : الانتقال من التطبيقات الأصلية إلى تطبيقات الويب التقدمية هو حلم الملايين من مطوري الويب ومديري المنتجات وعدد كبير من الأشخاص الآخرين. باختيار تطبيق PWA بدلاً من الهاتف المحمول ، تبسط الشركة تطوير المستخدمين وتحديثهم وجذبهم. تعتبر PWA حلاً جيدًا لشريحة كبيرة من تطبيقات الهاتف المحمول البسيطة ، ولن نتمكن من التخلي تمامًا عن التطوير الأصلي في وقت قريب جدًا.
حسنًا ، من يهتم بالاستماع إلى الأخبار من عالم تطوير Android مباشرة ، لمعرفة المزيد من الأشياء الأكثر إثارة للاهتمام حول أحدث الخطط الخبيثة لـ Google Enclave ، للدردشة مع الخبراء مباشرة ، نحن في انتظار مؤتمر
AppsConf 2018 .
بالنسبة لأولئك الذين يفضلون دراسة كل شيء في المنزل ، لدينا قناة على YouTube حيث سيتم تحميل مقاطع فيديو AppsConf (بعد أشهر قليلة من المؤتمر).
وإعلانات جميع الأحداث والمواد المفيدة ، بما في ذلك المؤتمرات المستقبلية ، وإعلانات أفضل التقارير ، ودعوات الاجتماعات ، وتقارير مشفرة ومقالات مفيدة ، ننشرها على قائمتنا البريدية .