AAB — ما هو، الفرق بينه وبين APK ومبدأ العمل

المؤلف: IT Sectr نُشر: 2026-04-15 وقت القراءة: 8 دق

AAB (Android App Bundle) هو تنسيق نشر لتطبيقات أندرويد حل محل APK في Google Play منذ عام 2021. على عكس APK، AAB ليس ملف تثبيت — بل هو حاوية يقوم Google Play من خلالها بإنشاء APK محسّنة ديناميكياً لكل جهاز. وفقاً لـ Android Developers, 2026، يقلل هذا التنسيق من حجم التطبيق الذي يتم تنزيله بمعدل 15% من خلال استبعاد الموارد غير المستخدمة.

النقاط الرئيسية

  • AAB هو تنسيق نشر لتطبيقات أندرويد يقوم Google Play من خلاله بإنشاء APK لكل جهاز.
  • Dynamic Delivery هي آلية توصيل فقط للوحدات والموارد التي يحتاجها جهاز معين.
  • إلزامي — منذ أغسطس 2021 يتطلب Google Play AAB لجميع التطبيقات الجديدة.
  • توفير — يتم تقليل حجم التنزيل بنسبة 15–30% من خلال استبعاد الموارد الزائدة.
  • الأصول — يدعم AAB حتى 2 جيجابايت بدون ملفات OBB عبر وحدات Play Asset Delivery.

ما هو AAB

AAB (Android App Bundle) هو تنسيق نشر طورته Google كبديل لـ APK للتوزيع عبر Google Play. داخل AAB يوجد أرشيف ZIP بامتداد .aab يحتوي على كود مجمّع وموارد وبيانات وصفية. الفرق الرئيسي: لا يتم تثبيت AAB مباشرة على الجهاز.

كيف يعمل

يقوم المطور برفع AAB إلى Google Play Console. عندما يحاول المستخدم تثبيت التطبيق، يحلل Google Play تكوين الجهاز: كثافة الشاشة (DPI)، بنية المعالج (CPU)، اللغة وإصدار أندرويد. بناءً على هذا التحليل، يتم إنشاء APK أدنى يحتوي فقط على المكونات الضرورية.

تاريخ التبني

قدمت Google AAB في عام 2018 في مؤتمر I/O. منذ أغسطس 2021، أصبح التنسيق إلزامياً لجميع التطبيقات الجديدة على Google Play. يمكن للتطبيقات الحالية الاستمرار في استخدام APK، ولكن يجب نشر التطبيقات الجديدة فقط بتنسيق AAB.

الفرق بين AAB و APK

الفرق بين AAB و APK جوهري: APK هو ملف تثبيت كامل جاهز للتثبيت. AAB هو حاوية تحتوي على مكونات مصدرية تتطلب معالجة.

المعاملAPKAAB
النوعملف تثبيتحاوية نشر
التثبيتمباشرة على الجهازعبر Google Play
الحجمأرشيف كاملمكونات مصدرية
الوحداتالكل في ملف واحدوحدات منفصلة
التوقيعالمطورGoogle Play
التوزيعأي قناةGoogle Play

APK مناسب للتوزيع خارج Google Play — عبر المواقع الإلكترونية أو البريد الإلكتروني أو أنظمة MDM للشركات. AAB مرتبط ببنية Google Play التحتية ولا يمكن تثبيته مباشرة. لاختبار AAB، يتم استخدام أداة bundletool التي تحاكي إنشاء APK على جهاز محلي.

هيكل ملف AAB

الهيكل الداخلي لـ AAB يشبه APK لكنه يحتوي على أدلة وملفات إضافية لوصف الوحدات وتبعياتها.

الملف/الدليلالغرض
base/الوحدة الأساسية: الكود، الموارد، البيان (manifest)
BundleConfig.pbتكوين الحزمة بتنسيق protobuf
Bundle-metadata/بيانات وصفية حول إصدارات الوحدات
feature/وحدات ديناميكية (حسب الطلب)
assets/أصول التطبيق
manifest/بيانات (manifest) لكل وحدة

الوحدة الأساسية (base)

الوحدة الأساسية هي مكون إلزامي في AAB. تحتوي على الكود الرئيسي والموارد وبيان التطبيق. بدون الوحدة الأساسية، لا يمكن بناء التطبيق. جميع الوحدات الأخرى اختيارية ويتم ربطها عبر Dynamic Delivery.

تنسيق Protobuf

يستخدم تكوين AAB Protocol Buffers (protobuf) بدلاً من XML. ملفات .pb أكثر ضغطاً ويتم تحليلها بشكل أسرع بواسطة البنية التحتية لخوادم Google. تقوم أداة bundletool بتحويل protobuf إلى تنسيق قابل للقراءة لتصحيح الأخطاء.

Dynamic Delivery ووحدات التطبيق

Dynamic Delivery هي التقنية الرئيسية التي يقوم عليها AAB. تتيح توصيل أجزاء التطبيق التي تتوافق مع جهاز المستخدم ولغته فقط، وكذلك تحميل وحدات إضافية حسب الطلب.

أنواع الوحدات

يتم تحميل وحدات Install-time مع APK الأساسي أثناء التثبيت. يتم تسليم وحدات Conditional فقط عند استيفاء الشروط — على سبيل المثال، وحدة تحتوي على مواد للشاشات بدقة 4K. يتم تحميل وحدات On-demand بناءً على طلب المستخدم داخل التطبيق.

Play Asset Delivery (PAD)

بالنسبة للموارد الكبيرة (حتى 2 جيجابايت)، يتم استخدام Play Asset Delivery بدلاً من ملفات OBB. يدعم PAD نفس أوضاع التسليم الثلاثة: install-time و fast-follow (مباشرة بعد التثبيت) و on-demand.

kotlin
// تحميل الوحدة حسب الطلب عبر SplitInstallManager
val manager = SplitInstallManagerFactory
    .create(context)

val request = SplitInstallRequest
    .newBuilder()
    .addModule("level_pack_3")
    .build()

manager.startInstall(request)
    .addOnSuccessListener {
        Log.d("AAB", "Module installed")
    }

تكوين الوحدة في Gradle

يتم وصف كل وحدة ديناميكية في ملف build.gradle منفصل مع تحديد نوع التسليم. يمكن أن تحتوي الوحدة على مواردها وكودها وبيانها الخاص، المستقلة عن التطبيق الأساسي.

بناء AAB عبر Gradle

يتم بناء AAB من خلال Android Gradle Plugin باستخدام مهمة bundleRelease (أو bundleDebug). النتيجة هي ملف .aab في دليل build/outputs/bundle/.

تكوين البناء

لا يتطلب بناء AAB أي تكوين خاص — يدعم Android Gradle Plugin الحزم (bundles) افتراضياً. يكفي تحديد مهمة bundle بدلاً من assemble.

kotlin
// build.gradle.kts — بناء AAB مع التوقيع
android {
    bundle {
        language {
            enableSplit = true
        }
        density {
            enableSplit = true
        }
        abi {
            enableSplit = true
        }
    }
}
// المهمة: ./gradlew bundleRelease

الاختبار المحلي عبر bundletool

توفر Google أداة bundletool لإنشاء APK من AAB على جهاز محلي. الأمر `bundletool build-apks --bundle=app.aab --output=app.apks` ينشئ مجموعة من APK للاختبار على تكوينات أجهزة مختلفة.

يمكن لـ bundletool أيضاً فك ضغط AAB وعرض تكوينه والتحقق من سلامة التوقيع قبل الرفع إلى Google Play Console. لتصحيح الأخطاء، يتم استخدام الأمر `bundletool dump manifest --bundle=app.aab` الذي يعرض بيان الوحدة الأساسية.

تكوين التقسيمات في AAB

افتراضياً، يقوم AAB بتقسيم الموارد عبر ثلاثة أبعاد: اللغة وكثافة الشاشة (density) وبنية المعالج (abi). يمكن للمطور تعطيل أي تقسيم في build.gradle — على سبيل المثال، إذا كان التطبيق يدعم اللغة الإنجليزية فقط. تعطيل التقسيم يعني أن موارد جميع المتغيرات ستدخل في APK الأساسي.

تحسين الموارد — يقوم AAB تلقائياً بتحويل PNG إلى WebP دون فقدان الجودة، ويضغط الموارد غير المستخدمة ويزيل السلاسل المكررة. يتم تطبيق هذه التحسينات على جانب Google Play عند إنشاء APK النهائي. ونتيجة لذلك، يحصل المستخدم على APK أصغر بنسبة 15–25% من الأرشيف الكامل.

نشر AAB على Google Play

عملية نشر AAB في Google Play Console تختلف عن APK فقط في تنسيق الملف الذي يتم رفعه. تقبل الكونسول ملف .aab، وتتحقق من هيكله وتوقيعه وتكوين الوحدات، ثم تنشئ APK لكل نوع جهاز.

App Signing by Google Play

عند رفع AAB، تتولى Google Play إدارة مفاتيح التوقيع. يقوم المطور برفع حزمة موقعة بمفتاح upload، وتقوم Google بإعادة توقيع APK المنشأة بمفتاحها الخاص. هذا يبسط تدوير المفاتيح واستعادة الوصول في حالة فقدان keystore.

الاختبار قبل الإصدار

توفر Google Play Console اختباراً مدمجاً لـ AAB: يمكنك تنزيل APK المنشأة لجهاز معين أو تشغيل اختبار داخلي عبر مسارات Internal Testing و Closed Alpha و Open Beta.

المشكلات الشائعة مع AAB وحلولها

الانتقال إلى AAB قد يسبب مشكلات، خاصة في المشاريع التي تحتوي على العديد من الوحدات الديناميكية أو تكوين موارد معقد.

أخطاء تكوين الوحدات

إذا كانت وحدة ديناميكية تشير إلى موارد الوحدة الأساسية باسم غير صحيح، فإن Google Play يرفض AAB في مرحلة التحقق. الحل — استخدام فحص lint قبل البناء واختبار جميع الوحدات عبر bundletool محلياً.

تقسيمات اللغة وتأثير الأداء

قد يؤدي التقسيم حسب اللغة إلى إبطاء بدء تشغيل التطبيق إذا تم تحميل موارد الإعدادات الإقليمية الحالية ديناميكياً. توصية Google هي عدم تقسيم اللغات إذا كان عددها أقل من 10، أو استخدام install-time للغات الأكثر شيوعاً.

التوافق مع SDKs الطرف الثالث

تتطلب بعض SDKs (التحليلات، الإعلانات، الخرائط) الوصول إلى البيان والموارد الكامل. التحقق من التوافق مع AAB هو خطوة إلزامية قبل الترحيل. معظم SDKs الكبرى (Firebase، Google Ads، Crashlytics) تدعم AAB بالكامل منذ عام 2022. للتحقق من التوافق، يتم استخدام bundletool مع العلم --validate الذي يحاكي إنشاء APK من جانب الخادم.

إصدارات AAB

يستخدم AAB versionCode من بيان الوحدة الأساسية. على عكس APK، يدعم AAB أيضاً versionCode لكل وحدة على حدة — مما يسمح بتحديث أجزاء فردية من التطبيق دون إعادة تثبيت كاملة. يتتبع Dynamic Delivery الوحدات المثبتة ويقوم بتوصيل المكونات المعدلة فقط أثناء التحديثات عبر Google Play.

مراقبة وتحليلات AAB

توفر Google Play Console تحليلات مفصلة لكل AAB: كم عدد APK التي تم إنشاؤها، وما هي التقسيمات المطلوبة، وما هو متوسط حجم التنزيل لكل جهاز. يُظهر Android Vitals مقاييس أداء APK المنشأة. تساعد هذه البيانات في تحسين تكوين التقسيمات وتقليل حجم التنزيل لفئات الأجهزة المختلفة.

الأسئلة الشائعة

هل يمكن تثبيت AAB مباشرة على الهاتف؟

لا، AAB غير مخصص للتثبيت المباشر. يقوم Google Play بتحويله إلى APK لجهاز معين. للاختبار على الهاتف، يتم استخدام bundletool الذي ينشئ APK من AAB محلياً.

كيف يقلل AAB حجم التطبيق؟

Google Play ينشئ APK فقط مع الموارد المطابقة لجهاز المستخدم: كثافة شاشة واحدة، بنية معالج واحدة، لغة واحدة. لا يتم تضمين الموارد للتكوينات الأخرى، مما يوفر 15–30% من حركة التنزيل.

هل AAB إلزامي للتطبيقات الحالية؟

لا، يمكن للتطبيقات الحالية الاستمرار في نشر APK. متطلب AAB ينطبق فقط على التطبيقات الجديدة. توصي Google بتحديث المشاريع الحالية إلى AAB ولكن لا تطلبه.

كيفية الترحيل من APK إلى AAB؟

قم بتغيير مهمة البناء من assembleRelease إلى bundleRelease، وتحقق من توافق جميع SDKs، وقم بتكوين App Signing في Google Play Console، وارفع أول AAB عبر مسار موجود.

هل يدعم AAB المكتبات الأصلية؟

نعم، يتضمن AAB مكتبات أصلية في الوحدات. يقوم Google Play بتوصيل ملفات .so فقط وفقاً لبنية معالج الجهاز. هذا مهم بشكل خاص للألعاب على Unity و Unreal Engine ذات البناءات الأصلية الكبيرة.

الخلاصة

  • AAB هو حاوية لنشر تطبيقات أندرويد، يقوم Google Play من خلاله بإنشاء APK مستهدفة.
  • Dynamic Delivery يوصل فقط الموارد المطابقة لجهاز المستخدم — توفير في حركة البيانات بنسبة 15–30%.
  • النمطية — ينقسم التطبيق إلى وحدات أساسية وشرطية وحسب الطلب باستراتيجيات تحميل مختلفة.
  • إلزامي — منذ 2021 جميع التطبيقات الجديدة على Google Play تُنشر بتنسيق AAB.
  • App Signing — يدير Google Play مفاتيح التوقيع، مما يبسط التدوير والاسترداد.
  • الاختبار يتم عبر bundletool الذي يحاكي إنشاء APK من جانب الخادم محلياً.
  • Play Asset Delivery يحل محل ملفات OBB، ويدعم حتى 2 جيجابايت من الأصول بأوضاع تحميل مرنة.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا