لماذا تطبيقات Android أخف من iOS؟

لقد وجدنا أن تطبيقات Android بشكل عام تميل إلى أن تكون أقل وزنًا من نظيراتها التي تعمل بنظام iOS. لذلك سألنا المطورين عن السبب وراء ذلك.

بدأ كل شيء بمحادثة مع رومان، رئيس تحرير FrAndroid، خلال استراحة الغداء. يستخدم هذا الرجل العجوز هاتفين ذكيين كل يوم: واحدون بلس 5و... iPhone 7 - هذا الطوباوي هو النوع الذي يبشر بالسلام بين Android وiOS.

وبينما كنا نناقش مسألة صرف الشيكات الأخيرة التي أرسلها أصدقاؤنا سامسونج وجوجل وآبل وكاستوراما والمطعم الهندي في الشارع، سمعته يحتج ضد فيسبوك. بتعبير أدق: على الوزن الضخم للغاية لتطبيق iOS الخاص بالشبكة الاجتماعية: 211 ميجابايت، لا أقل!

تميل تطبيقات iOS إلى زيادة الوزن.

وبمجرد انتهاء المفاجأة، أسارع إلى مقارنة هذا الرقم مع مساحة التخزين التي يشغلها تطبيق فيسبوك على جهازي الخاص (هواوي بي9). تم تثبيته، وهو يشغل 177 ميجابايت (لا يشمل البيانات وذاكرة التخزين المؤقت). نفس النتيجة على ون بلس 5،سامسونج جالاكسي اس 8وآخرونالشرف 9كل ذلك تحت نظام Android Nougat. وبالتالي نحصل على فرق كبير قدره 34 ميغابايت بين إصداري iOS وAndroid من Facebook.

ومن خلال المقارنة مع التطبيقات الأخرى، يظهر اتجاه واضح جدًا: تطبيقات iOS، في معظمها، أثقل من نظيراتها على Android. ومع ذلك، لاحظ أن الفرق يكون أكثر وضوحًا مع تطبيقات Facebook (Facebook وMessenger وWhatsApp وInstagram).

ايفون 7الشرف 9هواوي بي9سامسونج جالاكسي اس 8
فيسبوك211 مو177 مو177 مو177 مو
الكروم60,6 مو168 مو168 مو168 مو
تغريد114,691,58 مو87,81 مو88,62 مو
خط القطار34,8 مو19,36 مو19,37 مو19,32 مو
نيتفليكس66,7 مو54,47 مو51,10 مو50,93 مو
يوتيوب83,8 مو63,29 مو63,31 مو72,36 مو
واتساب102,6 مو51,55 مو50,39 مو50,44 مو
لوموند.فر37,9 مو22,04 مو26,48 مو22,01 مو
انستغرام73,4 مو58,93 مو58,07 مو57,23 مو

ملحوظة: جميع الأرقام المذكورة في هذا الجدول تشير إلى وزن التطبيقات بمجرد تثبيتها على الأجهزة الطرفية وليس إلى أوزانها المعروضة على Play Store وApp Store، والتي تختلف بشكل كبير.

وعلى ضوء هذه النتائج يطرح السؤال التالي:لماذا تكون تطبيقات Android بشكل عام أصغر حجمًا من تطبيقات iOS؟

قبل أن ننظر في هذا الأمر، دعونا نأخذ الوقت الكافي لتوضيح بعض النقاط التي يمكن أن تسبب الارتباك. أولاً، من الطبيعي تمامًا ملاحظة الاختلافات بين الهواتف الذكية التي تعمل بنظام Android نظرًا لأنها لا تحتوي بالضرورة على نفس الكود الأصلي (32 أو 64 بت)، أو لا تستخدم نفس الموارد أو لا يتم تحديثها بشكل جيد فيما يتعلق ببعضها البعض.

استثناء كروم

علاوة على ذلك، في الجدول أعلاه، ربما لاحظت أن Chrome يعد استثناءً غريبًا ويزن حوالي ثلاثة أضعاف وزنه على Android مقارنة بنظام iOS. يتم تفسير ذلك بشكل أساسي من خلال حقيقة أن متصفح Google يقدم ميزات أقل على أجهزة iPhone مقارنة بأجهزة Android حيث يستمر إثرائها. علاوة على ذلك، في نظام التشغيل iOS، يضطر Chrome إلى استخدام محرك عرض HTML - والذي يسمح لك بعرض سطور التعليمات البرمجية وتنسيقات الصور المختلفة لصفحة الويب بوضوح - المدمج في نظام التشغيل iOS، كما هو الحال في Safari وWebKit.

بمعنى آخر، لا يقدم Chrome على نظام التشغيل iOS أكثر من Safari، ولكن بواجهة مختلفة.

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

فلسفة الروبوت

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

كأحد جهات الاتصال الخاصة بي، إدوارد ماركيز - منتتعاون بانتظام مع FrAndroid— «يعتمد Android ثقافيًا على فكرة إمكانية الوصول إلى أكبر عدد ممكن من الأشخاص". ويستشهد على وجه الخصوص بمثالAndroid Go، الإصدار الخفيف من Android، لدعم وجهة نظره.

وهذه الرغبة في التقليل إلى أدنى حد ليست جديدة حيث أن التحسينات وواجهات برمجة التطبيقات أصبحت متاحة للمطورين منذ عام 2013 على الأقل، مع Android 4.4 KitKat، للتحرك في هذا الاتجاه. وكيف يمكننا أن نقوم بتفتيح التطبيق بعد ذلك؟

لا يزال أمام لغة برمجة Apple طريق طويل لتقطعه

من قبل على نظام iOS، كانت لغة البرمجة هي Objective-C. ولكن تم استبدال ذلك لعدة سنوات بـ Swift، وهي لغة جديدة قدمتها Apple، أكثر حداثة وأكثر تكيفًا مع احتياجات المطورين، خاصة أنها مفتوحة المصدر وبالتالي تحظى بشعبية كبيرة. باختصار، فإنه يبسط حياتهم إلى حد كبير. ومع ذلك، سويفت حاليا تفتقر إلى النضج.

سويفت يحل محل Objective-C.

يشير أحد جهات الاتصال الخاصة بي، RxVincent، إلى أن شركة Apple لا تعتبر Swift حتى الآن "مستقر". ويضيف مطور آخر، أنطوان كوهن، أنه نظرًا لأن اللغة حديثة جدًا، فإنها لا تزال تميل إلى التغيير بانتظام. ونتيجة لذلك، فإن أنظمة iOS لا تتضمن بعد البرنامج المناسب: فهي لا تحتوي على بيئة تنفيذ (تسمى ""وقت التشغيل ») متوافق مع سويفت. بعبارة أخرى،لا يحتوي جهاز iPhone على مجموعة الأدوات المناسبة لتشغيل لغة البرمجة هذه، بينما هو مستعد بشكل صحيح لتشغيل Objective-C.

لذلك، لكي يتمكن النظام من تنفيذها، يجب أن يقوم تطبيق iOS المشفر بلغة Swift بنفسه بتضمين ملفوقت التشغيلمناسبة على شكل مكتبة. إلا أن هذا الفائض يتراوح وزنه بين 10 و15 ميجا بايت ويمكن أن يصل إلى 30 ميجا بايت حسب مصادري. ليس من غير المألوف العثور على مناقشات حول هذا الموضوع في منتديات المطورين مثلici، أوici. ومع ذلك، لاحظ أن Apple تخطط لتوفيروقت التشغيلأصلي للإصدارات المستقبلية من Swift (حاليًا نحن في الإصدار 3).

رهانات أندرويد على كوتلين

من جانبها، يدعم Android Studio، بيئة التطوير المتكاملة لنظام Android (IDE)، أيضًا لغة برمجة جديدة منذ عام 2016: Kotlin. حتى الآن، كانت جميع التطبيقات الموجودة على نظام التشغيل هذا مكتوبة بلغة Java، وهي لغة أكثر نضجًا بالتأكيد، ولكنها قديمة جدًا في العديد من الجوانب.

Kotlin هي أيضًا لغة شائعة للمطورين.

Kotlin، مثل Swift، هي أيضًا لغة تحظى بشعبية كبيرة بين المطورين، لأنها أكثر حداثة. ومع ذلك، فإن ميزة Kotlin هي أنه يتم تجميعها بنفس لغة Java عندما يتعلق الأمر بتنفيذ التعليمات البرمجية، وبالتالي، كانت متوافقة منذ البداية مع أنظمة Android. حسنًا ، تقريبًا ...

تقدم Kotlin خيارات أكثر من Java وبالتالي تتطلب أيضًاوقت التشغيلإضافية مضمنة في التطبيق لأداء وظائف محددة للغاية. لكن هذا لا يزن شيئًا تقريبًا، فقطمائة كيلو بايت. نحن بعيدون عن العديد من ميغابايت في Swift!

تحسين التعليمات البرمجية

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

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

خلال هذه العملية، سيقوم Proguard بمعالجة كل عنصر من عناصر التعليمات البرمجية (الطرق، والمتغيرات، والكائنات، والحزم، وما إلى ذلك) وتقصير أسمائهم قدر الإمكان. "قد يبدو هذا غبيًا، لكنه يسمح لك بحفظ الكثير من الذاكرة في الكود المصدري."، يوضح RxVincent. على سبيل المثال التطبيق -يسمى إيكويسينس- الذي يعمل عليه، هو 11.4 ميجابايت و 7.9 ميجابايت قبل وبعد التجميع مع Proguard.

علاوة على ذلك، فإن XCode، بيئة التطوير المتكاملة لنظام التشغيل iOS، لا تقدم ما يعادل Proguard. إذن لدينا هنا سبب محتمل آخر للاختلاف في الوزن بين تطبيقات Android وiOS.

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

الحد من وزن الأيقونة

الآن دعونا نتناول مسألة الصور في التطبيقات، أو بشكل أكثر دقة، الرموز. سواء على نظام التشغيل iOS أو Android، يجب عليك توفير أحجام مختلفة للأيقونات بتنسيق PNG. باستثناء أنه، كما يمكنك أن تتخيل، يمكن أن يكون وزن كل هذه الملفات كبيرًا جدًا. ومع ذلك، لفترة من الوقت الآن، تم دعم AndroidVectorDrawable- تنسيق قريب جدًا من SVG (رسومات المتجهات القابلة للتكيف) ومُكيف خصيصًا لهذا النظام البيئي.

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

يرجى ملاحظة أن هناك آلية مماثلة على نظام التشغيل iOS، لكن العديد من المصادر أخبرتني أنها أقل تفكيرًا وتكاملاً من VectorDrawable.

المكتبات

لودوفيك رولاند، مطور أندرويد لديه "المعرفة النظرية» لنظام iOS، يسلط الضوء على تأثير المكتبات المضمنة في التطبيق على وزنه. تتيح لك هذه إضافة العديد من الوظائف: الإشارة إلى معدل الجمهور للمطورين، والإرساليدفع، عرض الإعلانات ... الخ.

توجد المكتبات على كل من تطبيقات Android وiOS. ولكن، يكفي أن يختلف وزن كل منها ببضع مئات من الكيلوبايتات، بحيث نحصل في النهاية، بالإضافة إلى ذلك، على أحجام مختلفة جدًا بين iOS وAndroid. بالنظر إلى النتائج التي لاحظناها في الجدول أعلاه، يمكننا أن نفترض أن التطبيقات المثبتة على iPhone 7 تحتوي على مكتبات أثقل قليلاً من تلك الموجودة في المحطات الطرفية الأخرى.

ماذا تتذكر

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

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

شكرًا لجميع المطورين الذين وافقوا على الرد علي، وخاصة إدوارد ماركيز، وRxVincent، وأنطوان كون، ولودوفيك رولاند.