Google Home يقلل بنسبة 33% من أسباب الأعطال
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

يساعد تطبيق Google Home
في إعداد أجهزة Google Home وGoogle Nest وChromecast
وإدارة هذه الأجهزة، بالإضافة إلى آلاف المنتجات المنزلية المتصلة، مثل وحدات الإضاءة والكاميرات
وأجهزة الترموستات وغيرها.
يستفيد الفريق الهندسي الذي يصمّم تطبيق Google Home من استخدام مكتبتَي Kotlin وAndroid Jetpack لتعزيز الإنتاجية الهندسية ورضا المطوّرين.
الإجراءات التي اتخذتها الشركة
قرّر فريق Google Home دمج لغة Kotlin في قاعدة الرموز الخاصة بهم بهدف زيادة إنتاجية البرمجة وإتاحة استخدام ميزات اللغة الحديثة مثل var/val وتكنولوجيا التمثيل اللوني والكوروتين وغير ذلك. اعتبارًا من حزيران (يونيو) 2020، تمت كتابة% 30 تقريبًا من قاعدة الرموز بلغة Kotlin، وننصح بتطوير لغة Kotlin لجميع الميزات الجديدة.
اعتمد الفريق أيضًا مكتبات Jetpack لتحسين سرعة المطوّرين وتقليل الحاجة إلى صيانة الرموز النموذجية وتقليل الكمية اللازمة من الرموز. ساعدت مكتبات Jetpack أيضًا في جعل الرموز البرمجية الخاصة بها أكثر قابلية للاختبار، نظرًا إلى وجود حدود وظيفية وواجهات برمجة تطبيقات أكثر وضوحًا.
النتائج
"إنّ الكفاءة وكتابة أقل عدد ممكن من التعليمات البرمجية وفعّالة أكبر هي "السرعة" التي يمكنك
تحقيقها باستخدام Kotlin". - "جاريد بوروز"، مهندس برمجيات في Google Home
وأدّى التبديل إلى لغة Kotlin إلى تقليل كمية الرموز المطلوبة مقارنةً بالتعليمات المكافئة لرموز Java الحالية. ومن الأمثلة على ذلك استخدام فئات البيانات والمكوِّن الإضافي Parcelize: فيمكن الآن تمثيل فئة مكوّنة من 126 سطرًا مكتوبة بخط اليد في Java في 23 سطرًا فقط في Kotlin، وهو ما يعني تخفيض بنسبة 80%.
بالإضافة إلى ذلك، يمكن إنشاء طرق المساواة والتوزيع تلقائيًا
وتحديثها باستمرار. تم أيضًا تبسيط العديد من التكرارات الحلقية المتداخلة وعمليات التحقق من الفلترة
باستخدام الطرق الوظيفية المتوفرة في Kotlin.
نظرًا لأن لغة Kotlin يمكن أن تجعل من قابلية القيم الفارغة جزءًا من اللغة، يمكن تجنُّب المواقف الصعبة، مثل الحالات التي قد يؤدي فيها الاستخدام غير المتسق للتعليقات التوضيحية في Java إلى حدوث خطأ. ومنذ أن بدأ الفريق في تطوير ميزات جديدة باستخدام Kotlin، شهد انخفاضًا بنسبة% 33 في NullPointerExceptions.
وبما أنّ هذا النوع من الأعطال هو الأكثر شيوعًا على Google Play Console، فإنّ تقليلها أدّى إلى تحسين تجربة المستخدم بشكل كبير.
مع تطبيق كبير الحجم ومخصّص، مثل Google Home الذي يضم أكثر من مليون سطر من الرموز، من المفيد أن تكون قادرًا على إضافة مكتبات Jetpack تدريجيًا. وسمح دمجهم للفريق بدمج واستبدال الحلول المخصصة،
في بعض الأحيان حتى بمكتبة واحدة. وبما أنّ مكتبات Jetpack يمكن أن تساعد المهندسين في اتّباع أفضل الممارسات وتقليل الإسهاب (على سبيل المثال، باستخدام Room أو ConstraintLayout)، تمت زيادة سهولة القراءة. ويعتقد الفريق أنّ العديد من مكتبات Jetpack الجديدة "ضرورية"، بما في ذلك ViewModel وLiveData، وكلتاهما يتم استخدامها على نطاق واسع في قاعدة رموز Google Home.
وقد وجد فريق تطبيق Google Home أن عمليات دمج Jetpack KTX مع كورروتينات Kotlin
مفيدة على وجه التحديد. أصبح بإمكان الفريق تجنُّب الأخطاء الصعبة في البرمجة غير المتزامنة من خلال ربط الكوروتينات بمكوّنات تستنِد إلى مراحل نشاطها، مثل ViewModel.
Java هي علامة تجارية مسجّلة لشركة Oracle و/أو الشركات التابعة لها.
البدء
تعرّف على مزيد من المعلومات حول كتابة تطبيقات Android في Kotlin
واستخدام مكتبات Android Jetpack.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2020-07-13 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2020-07-13 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Google Home reduces #1 cause of crashes by 33%\n\nThe [Google Home app](https://play.google.com/store/apps/details?id=com.google.android.apps.chromecast.app&hl=en_US)\nhelps set up, manage, and control your Google Home, Google Nest, and Chromecast\ndevices---plus thousands of connected home products like lights, cameras,\nthermostats, and more.\n\nThe engineering team behind the Google Home app benefits from using Kotlin and\nAndroid Jetpack libraries to boost engineering productivity and developer\nhappiness.\n\nWhat they did\n-------------\n\nThe Google Home team decided to incorporate Kotlin into their codebase to make\nprogramming more productive and to enable the usage of modern language features\nlike var/val, smart casts, coroutines, and more. **As of June 2020, about 30% of\nthe codebase is written in Kotlin**, and Kotlin development is encouraged for\nall new features.\n\nThe team also adopted Jetpack libraries to improve developer velocity, decrease\nthe need for boilerplate code maintenance, and reduce the necessary amount of\ncode. Jetpack libraries also helped make their code more testable, since there\nare clearer functional boundaries and APIs.\n\nResults\n-------\n\n*\"Efficacy and writing less code that does more is the 'speed' increase you can\nachieve with Kotlin.\" - Jared Burrows, Software Engineer on Google Home*\n\nSwitching to Kotlin resulted in a reduction in the amount of required code,\ncompared to the equivalent of existing Java code. One example is the use of data\nclasses and the Parcelize plugin: **a class which was 126 hand-written lines in\nJava can now be represented in just 23 lines in Kotlin---an 80% reduction.**\nAdditionally, equality and parcelizing methods can be automatically generated\nand kept up to date. Many nested loops and filtering checks were also simplified\nusing the functional methods available in Kotlin.\n\nBecause Kotlin can make nullability a part of the language, tricky situations\ncan be avoided, like when inconsistent usage of nullability annotations in Java\nmight lead to a missed bug. **Since the team started migrating to developing new\nfeatures with Kotlin, they saw a 33% decrease in NullPointerExceptions** .\nSince this is the [most common crash\ntype on Google Play Console](/topic/performance/vitals/crash#prevent-crashes-null-pointer),\nreducing them led to a dramatically improved user experience.\n\nWith a large, mature app like Google Home---which has over a million lines of\ncode---it's helpful to be able to gradually add Jetpack libraries. Incorporating\nthem allowed the team to consolidate and replace custom tailored solutions,\nsometimes even with a single library. Since Jetpack libraries can help engineers\nfollow best practices and be less verbose (for example, using\n[Room](/training/data-storage/room) or\n[ConstraintLayout](/training/constraint-layout)), readability was increased as\nwell. The team considers many of the newer Jetpack libraries 'must-haves,'\nincluding [ViewModel](/topic/libraries/architecture/viewmodel) and\n[LiveData](/topic/libraries/architecture/livedata), both of which are used\nextensively in the Google Home codebase.\n\nThe Google Home app team found the Jetpack KTX integrations with Kotlin\ncoroutines to be especially helpful. The team is now able to avoid tricky\nasynchronous programming bugs by associating coroutines with lifecycle-aware\ncomponents like [ViewModel](/topic/libraries/architecture/viewmodel).\n\n*Java is a registered trademark of Oracle and/or its affiliates.*\n\nGet Started\n-----------\n\nLearn more about [writing Android apps in Kotlin](/kotlin)\nand [using Android Jetpack libraries](/jetpack)."]]