تقليل حجم التطبيق

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

أفضل الممارسات

تحميل التطبيق بتنسيق "مجموعة حزمات تطبيق Android"

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

تقليل حجم رمز بيئة التشغيل

عليك التحقّق من الرمز البرمجي الذي لا يستخدمه تطبيقك في وقت التشغيل، على سبيل المثال أي رموز كبيرة. أو الفئات أو التعليمات البرمجية التي يتم إنشاؤها تلقائيًا. ينال إعجاب محسّني الرموز البرمجية يمكن أن يساعد الإصدار R8 في تحسين حجم الرمز البرمجي وتقليصه، ولكن لا يمكنها التعامل مع التعليمات البرمجية المحمية بثوابت وقت التشغيل. استبدال الشيك ذات ثوابت وقت التجميع لتحقيق أقصى استفادة من التحسينات المتنوعة يمكنك تفعيل تقليص الرموز البرمجية والموارد في ملف إعداد Gradle:

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

إزالة التخطيطات غير الضرورية

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

إعادة تقييم الميزات التي نادرًا ما يتم استخدامها

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

استخدام العرض الديناميكي

تستخدم ميزة عرض الميزات في Play الإعدادات المتقدّمة إمكانات حِزم التطبيق، ما يسمح بإتاحة ميزات معيّنة في تطبيقك تسليمها بشروط أو تنزيلها عند الطلب. يمكنك استخدام وحدات الميزات للتسليم المخصص. من المزايا الفريدة لوحدات الميزات هي القدرة على تخصيص طريقة ووقت تنزيل الميزات المختلفة لتطبيقك على الأجهزة التي تعمل بالإصدار 5.0 من نظام التشغيل Android (المستوى 21 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث.

تقليل حجم السلسلة القابل للترجمة

يمكنك استخدام السمة resConfigs لنظام Gradle المتوافق مع Android لإزالة ملفات موارد بديلة لا يحتاجها تطبيقك. إذا كنت تستخدم مكتبة تتضمّن مصادر لغوية (مثل AppCompat أو Google Play "الخدمات")، فسيتضمن تطبيقك جميع سلاسل اللغة المترجَمة للمكتبة. الرسائل، بغض النظر عن ترجمة التطبيق. إذا كنت ترغب في جعل اللغات التي يعتمدها تطبيقك رسميًا، يمكنك تحديد تلك اللغات باستخدام السمة resConfig. أي موارد للغات غير محدّدة هي تمت إزالته.

لقصر موارد اللغة على الانجليزية والفرنسية فقط، يمكنك تعديل defaultConfig كما هو موضّح أدناه:


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

استخدام الترجمة الانتقائية

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

على سبيل المثال، لا تكلف نفسك عناء ترجمة عناوين URL.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

قد تتعرف على &lt; و&gt، نظرًا لأنهما حرفا إلغاء لـ < و> إنها مطلوبة هنا، لأنه إذا أردت وضع علامة <a> داخلها في علامة <string>، فإن برنامج تجميع موارد Android يستبعدها نظرًا لا يتعرف على العلامة. ومع ذلك، فهذا يعني أنك تترجم HTML وعنوان URL بـ 78 لغة. وبدلاً من ذلك، يمكنك إزالة محتوى HTML:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

الجمع بين البرامج الثنائية الأصلية والتبعيات الشائعة

إذا كان تطبيقك يتضمّن عمليات تنفيذ مختلفة لواجهة Java الأصلية (JNI) ذات التبعيات الأساسية المشتركة، فإن البرامج الثنائية المختلفة تزداد حجم حزمة APK مع مكونات متكررة. يمكنك دمج العديد من برامج JNI الثنائية. في ملف JNI ثنائي واحد مع الاحتفاظ بملفات Java وJNI منفصلة. ويمكن أن يؤدي ذلك إلى تقليل حجم حزمة APK بشكل كبير.