في الأسبوع الماضي، أطلقت Greeny Corner على متجر تطبيقات iOS في الإمارات العربية المتحدة - وهو تطبيق للعناية بالنباتات يستخدم الذكاء الاصطناعي لتحديد النباتات من الصور. قمنا بالترقية إلى Expo SDK 54 قبل أربعة أشهر للاستفادة من الأداء المحسن وواجهات برمجة التطبيقات (APIs) الأحدث. استغرقت عملية الترحيل وقتًا أطول من المتوقع، لكن النتائج كانت واضحة. اليوم، سأعرض لك الميزات الموجودة في هذا الإصدار والتي تم دمجها في مشاريعي الحقيقية، وتلك التي كادت تسبب لي الشيب.
تسريع عمليات البناء باستخدام Turbo Modules: ليس مجرد ضجة إعلامية
ظهرت Turbo Modules منذ SDK 46، ولكن في SDK 54، أصبحت أقل إزعاجًا في التنفيذ. يعتمد مسار الإعداد في تطبيقنا بشكل كبير على واجهات برمجة تطبيقات (APIs) أصلية للوصول إلى الكاميرا وضغط الصور. قبل SDK 54، تم تحميل هذه الوحدات بشكل متزامن، مما أضاف 1.2 ثانية إلى وقت بدء التشغيل البارد على أجهزة Android متوسطة المدى. بعد الترقية، انخفض ذلك إلى 0.7 ثانية - ليس شيئًا ثوريًا، ولكنه ملحوظ للمستخدمين في مناطق مثل الإمارات العربية المتحدة حيث تختلف سرعات الشبكة.
المشكلة؟ تطلب جعل حزم الطرف الثالث مثل react-native-mmkv تعمل مع Turbo Modules ربطًا يدويًا مرة أخرى. زعمت مستندات Expo أنه كان تلقائيًا، لكنني قضيت فترة ما بعد الظهيرة بأكملها في تصحيح خطأ غامض Native module MMKV is null. اتضح أننا بحاجة إلى تحديث expo-module-resolver وتثبيت إصداره في package.json. الآن هو مستقر، وبصراحة؟ يستحق الصداع.
وصول أفضل إلى نظام الملفات: نقطة ألم أقل
أنقذتني واجهة برمجة التطبيقات expo-file-system الجديدة لحذف الملفات غير المتزامن وعمليات الدفعات من كتابة التعليمات البرمجية الأصلية القبيحة في مشروع عميل لشركة لوجستية في الرياض. يتيح تطبيقهم للمستخدمين تحميل دفعات من إيصالات التسليم كملفات PDF. في SDK 53، استغرق حذف مجلد مخزن مؤقت بحجم 200 ميجابايت من 3 إلى 4 ثوانٍ. باستخدام طريقة deleteAsync في SDK 54، ينخفض إلى 0.5 ثانية.
بالنسبة لمعالجة صور الذكاء الاصطناعي في Greeny Corner، استخدمت وظيفة downloadAsync المحدثة لترتيب تنزيلات صور النباتات في قائمة الانتظار. إنه ليس مثاليًا - كان علي إضافة آلية إعادة محاولة بسبب حالات الفشل العرضية على أجهزة iOS 16.x - لكنه أفضل بكثير من سلاسل التعليمات اليدوية التي كان علينا القيام بها في SDKs الأقدم.
مكاسب في الأداء على الأجهزة القديمة: فوز خاص بدولة الإمارات العربية المتحدة
لنتحدث عن Hermes. يقوم SDK 54 بترقية Hermes إلى الإصدار 0.14.1، مما قلل من وقت تنفيذ JavaScript بنسبة 18٪ في اختبارات ضمان الجودة لدينا. بالنسبة للعملاء الذين يستهدفون جماهير غير ناطقة باللغة الإنجليزية في سوق الخليج (الذين غالبًا ما يستخدمون أجهزة أرخص)، فإن هذا مهم. رأى أحد التطبيقات التي أعمل عليها لشركة عقارية مقرها دبي انخفاضًا بنسبة 30٪ في أخطاء ANRs (التطبيق لا يستجيب) على أجهزة Android 8.1 بعد الترقية.
ولكن إليك المشكلة: قدم Hermes 0.14 فحصًا أكثر صرامة للأنواع لعمليات نشر الكائنات. كان لدينا أداة تنسيق تاريخ في TypeScript تعطلت لأن أحدهم نسي إضافة فحص null. أضعت ساعتين في تتبع سبب تسبب formatDate(new Date()) في حدوث عطل عند التشغيل. ثمن صغير يجب دفعه، على ما أعتقد.
Frequently Asked Questions
كيف يمكنني التحقق مما إذا كان تطبيقي يستخدم Expo SDK 54؟
قم بتشغيل expo sdk:versions في دليل مشروعك. إذا ظهر "SDK Version: 54.0.0" ضمن أحدث إصدار، فأنت على ما يرام. بالنسبة للتطبيقات التي تم إخراجها، تحقق من android/app/src/main/res/values/ids.xml لسلسلة إصدار SDK.
هل يجب علي الترقية من SDK 53 إلى 54؟
افعل ذلك إذا كنت بحاجة إلى تحسينات أداء Hermes أو واجهات برمجة تطبيقات (APIs) أفضل لنظام الملفات. انتظر إذا كنت تستخدم expo-sqlite - التصحيح الأخير يحل خطأً فادحًا في iOS 17، ولكنه لا يزال متقطعًا لتطبيقات الإنتاج.
ما هو أكبر مكسب في الأداء في SDK 54؟
تعمل تحسينات محرك Hermes على تقليل وقت تنفيذ JS بشكل كبير، خاصة على Android 7-9. بالنسبة للتطبيقات التي تتعامل مع الوسائط أو العمليات الحسابية الثقيلة (مثل تحليل صور الذكاء الاصطناعي في Greeny Corner)، ينتج عن ذلك تجربة مستخدم أكثر سلاسة.
هل لاحظ العملاء اختلافات بعد ترقيات SDK 54؟
أفاد أحد العملاء الذين يديرون تطبيقًا لتوصيل المطاعم في الإمارات العربية المتحدة بانخفاض بنسبة 12٪ في التخلي عن التطبيق أثناء الدفع. ويعزون ذلك إلى أوقات التحميل الأسرع - قمنا بقياسه على أنه انخفاض قدره 0.8 ثانية في درجات LCP (أكبر محتوى مرئي).
إذا كنت تقوم ببناء تطبيقات لسوق الخليج، فإن تعديلات الأداء في SDK 54 وعمليات التكامل الأصلية المحسنة تستحق جهد الترحيل - فقط خصص وقتًا إضافيًا لتصحيح أخطاء حزم الطرف الثالث. لقد استخدمت هذه الأدوات لشحن تطبيقات للشركات الناشئة في الإمارات العربية المتحدة والمؤسسات متعددة الجنسيات، مثل تطبيق الحجز باللغتين العربية / الإنجليزية لشركة Tawasul Limo مع تتبع السائق في الوقت الفعلي.
هل تحتاج إلى مساعدة في تجاوز ضوضاء SDK أو تصحيح مشكلة الوحدة الأصلية العنيدة؟ لنفكر معًا - لقد كنت هناك، وربما كتبت برنامجًا نصيًا ملعونًا يمكنك استخدامه.