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

· 567 كلمة · 3 دقيقة قراءة

حجم التطبيق يلعب دور هام جداً في تحديد هل تطبيقك سيصل إلى مليون مستخدم أم لا. معظم هواتف المستخدمين ليس لديهم مساحات كبيرة. إن كان حجم تطبيقك كبيرة ستخسر الكثير من المستخدمين الغير قادرين على تثبيت تطبيقك على موبايلاتهم. ولذلك من الهام جداً أن تقلل حجم تطبيق الأندرويد 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 أضف 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'

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

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

التصنيفات: برمجة
مشاركة:
waffarx cash back