خصم

للشراء من موقع نون استخدم كود الخصم LMN12 وأحصل على ١٠٪ خصم على سلة المشتريات

thumbnail

استخدام R8 لتقليل حجم تطبيقات أندرويد

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

ماذا يقلل R8 في التطبيق ؟

يقوم R8 بعمل تقليل لحجم الكود داخل حزمة التطبيق، وبذلك يصبح ملف التثبيت APK أقل حجماً. التطبيقات الأقل حجماً غالباً يتم الإحتفاظ بها في هواتف المستخدمين. كل ما علينا هو تقليل عدد الكلمات أو الحروف التي تحتويها ملفات المشروع (ملفات الكود).

هناك الكثير من الطرق لتقليل حجم ملف APK وهي:


١. Tree Shaking

المعنى الحرفي هو اهتزاز الشجرة. عندما تهتز الشجرة تسقط الأغصان الغير متصلة بالساق الرئيسية للشجرة. هذه الطريقة سُميت بهذا الإسم لأن مهمتها إزالة الكود الذي لا يتم الوصول لها اثناء تشغيل التطبيق. تقوم هذه الطريقة بعملية تحليل ستاتيكي (static analysis) في شكل شجرة لربط أجزاء الكود ببعضها ثم التخلص من الكود الموجود في ملفات الكود ولا يستخدم. بالإضافة إلى إزالة الأشياء الغير مستخدمه مثل un-instantiated object.

٢. Optimization

تقوم هذه العملية بعمل تحسينات في الكود. أهم هذه التحسينات هي إزالة الكود الميت (dead code) وهو الكود الذي لا يُستخدم، وإزالة الـ arguments الغير مستخدمه من الدوال (functions)، وتبسيط تقسيمة الكود عن طريق الـ selective inlining، ودمج الكلاسات (class merging)، والعديد من الأساليب الأخرى.

٣. Identifier Renaming

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

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

ما الذي يجعلني أستخدم R8 لتقليل حجم تطبيقات الاندرويد؟


الإجابة تتكون من عدّة أجزاء وهم:

Third-party library المكتبات الخارجية

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

Code Optimization

حتى إن كان تطبيقك لا يحتوي على أى أكواد زيادة غير مستخدمة، فلابد أن تستخدم R8 لعمل بعض التحسينات على الكود لكي يصبح أفضل في الأداء من حيث السرعة (time complexity) و مساحة الرامات التي يستخدمها (space complexity) للتطبيق ككل.


تقليل حجم تطبيقات أندرويد عن طريق R8

كيف تفعّل تصغير التطبيق عن طريق R8 ؟

لتفعيل تصغير التطبيق عن طريق R8 أضف minifyEnabled true في ملف build.gradle الخاص بالتطبيق كما ترى في الكود التالي.


android {
    ...
    buildTypes {
        release {
            minifyEnabled false
        }
    }
}

كيف يعمل التصغير (shrinking) ؟

الخوارزميات (algorithms) المسؤولة عن تقليل حجم ملفات APK الخاصة بتطبيقات الأندرويد. هذه الخوارزميات تتابع خطوات تنفيذ الكود بداية من الـ entry-point وهي نقطة بدء التنفيذ داخل الكود. وتصل إلى كل الكود بالتتبع. ثم تقوم بإزالة كل الأكواد التي لم تصل لها أثناء تتبع تنفيذ كود المشروع.

ولكن لابد أن تضع بعض القواعد في proguard-rules.pro لكي تحافظ على سلامة الكود الذي يستخدم الـ reflection مثلاً.

minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),   'proguard-rules.pro'

سنتكلم عن هذه القواعد في مقال خاص بها إن شاء الله.

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

اشترك ببريدك الإلكتروني

احصل على الموضوعات الجديدة على إيميلك مباشرةً

لا يوجد تعليقات