جوجل تعتمد تغيير تنسيق الملفات AAB بدلاً من APK في هواتف الاندرويد

في نوفمبر الماضي ، أعلنت Google أنه يتطلب من المطورين نشر تطبيقات جديدة على متجر Play باستخدام تنسيق Android App Bundle (AAB) بدلاً من APK. ومنذ أيام طالبت Google المطورين بهذا المطلب القادم ، مما أثار عاصفة من الجدل من المستخدمين الذين يعتقدون أن Google تنهي الملفات بصيغة APK ، وتعوق متاجر التطبيقات التابعة لجهات خارجية ، وما إلى ذلك.

تم إطلاق تطبيقات Android بتنسيق APK (الذي يمثل حزمة Android الأساسية ). ومع ذلك ، في عام 2018 ، قدمت Google تنسيقًا جديدًا يسمى Android App Bundles ، واختصاره  AAB . صرحت Google بأن هذا التنسيق الجديد سيؤدي إلى تقليل أحجام ملفات التطبيق ، مع طرق أسهل للتحكم في جوانب مختلفة من التطبيقات. من بين ملايين التطبيقات الموجودة على متجر Google Play ، يستخدم الآلاف منها بالفعل نظام AAB.

بالأمس، أعلنت شركة جوجل أن تنسيق AAB الآن سوف يحل رسميا بدلاً من APK . هذا يعني أنه اعتبارًا من أغسطس من هذا العام ، يجب أن تأتي جميع التطبيقات الجديدة المقدمة إلى متجر Google Play بتنسيق AAB.

في موضوعنا سوف نتعرف علي صيغة AAB الجديدة، التى تأتي خلفًا لـ صيغة APK. ولكن في البداية علينا التعرف علي صيغة APK.

ملفات APK

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

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

  بفضل هذا التنسيق الجديد (AAB) ، لن يتم تثبيت الملفات غير الضرورية على هاتفك ، نظرًا لأن AAB يقوم فقط بتثبيت ملفات APK المتوافقة مع الهاتف لتشغيل التطبيق.

التوقيعات

أثناء التثبيت ، يتم أيضًا التحقق من توقيع هذا التطبيق للتأكد من سلامته. إذا كان التطبيق مثبتًا بالفعل ، يتحقق Android من توقيع التطبيق الجديد مقابل التوقيع المثبت بالفعل. إذا كان التوقيع غير صالح أو غير مطابق ، سيرفض Android تثبيت التطبيق.

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

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

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

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

تستخدم Google بعد ذلك App Bundle لإنشاء مجموعة كاملة من حزم APK المختلفة لتكوينات مختلفة للأجهزة. تحتوي كل حزمة تطبيقات فقط على الموارد اللازمة لهذا التكوين. عندما ينتقل المستخدم لتنزيل هذا التطبيق ، يتم عرض ملف APK الذي تم إنشاؤه والذي يطابق التكوين الخاص به. يساعد هذا في تقليل أحجام تنزيل التطبيقات وتثبيتها بنسبة تصل الي 15% ، مما يوفر النطاق الترددي ومساحة التخزين.

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

توقيع التطبيقات

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

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

في حالة اختراق مفتاح التحميل أو فقده ، يمكن للمطورين طلب مفتاح جديد ، ويظل مفتاح التوقيع المستخدم لتوزيع التطبيق دون تغيير.

رأي المطورين والباحثين الأمنيين

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

المفاتيح الخاصة

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

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

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

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

لماذا تطلب جوجل الاحتفاظ بالمفاتيح الخاصة بالتطبيقات

هناك العديد من الأمور لابد من وضعها في الحسبان، حول ما إذا كان من الأفضل ترك التخزين الآمن للمفاتيح الخاصة في أيدي Google أو المطورين الفرديين. لكن هؤلاء المطورين (على الأرجح) لا يستخدمون عادةً مستودعًا آمن لمفاتيحهم. أما ترك المفاتيح الخاصة في أيدي Google.  من خلال إجبار المطورين على استخدام Play App Signing ، يحتاج المهاجم أو القراصنة فقط إلى اختراق أمان Google مرة واحدة للحصول علي آلاف أو ملايين المفاتيح.

علي حسب Google “عند استخدام Play App Signing ، يتم تخزين مفاتيحك على نفس البنية التحتية التي تستخدمها Google لتخزين مفاتيحها الخاصة. يخضع الوصول إلى المفتاح لقوائم التحكم في الوصول الصارمة ومسارات التدقيق الواضحة.
علاوة على ذلك ، لمنع فقدان المفتاح ، نقوم بعمل نسخ احتياطية متكررة لوحدة التخزين الأساسية لديها. يتم تشفير هذه النسخ الاحتياطية بشدة وتُختبر بانتظام الاستعادة من هذه النسخ الاحتياطية.

إمكانية إجراء تعديلات غير مصرح بها

تتمثل إحدى المشكلات الكبيرة في طريقة إعداد Google لحزم التطبيقات في إمكانية إضافة تعديلات غير مصرح بها إلى أحد التطبيقات. تتضمن عملية استخراج ملفات APK من حزمة التطبيقات تعديلات ، حيث يتعين على Google إنشاء كل ملف APK يدويًا. بينما وعدت Google بأنها لا ولن تقوم بحقن أو تعديل الكود ، فإن المشكلة في عملية App Bundle هي أن Google لديها القدرة على اجراء تعديلات.

في ما يلي بعض الأمثلة

لنفترض أن هناك تطبيق مراسلة آمن يستخدمه الأشخاص للتواصل دون التعرض لخطر المراقبة الحكومية. يمكن أن تكون هذه أداة مفيدة  للأشخاص الذين يحتجون على الحكومات الاستبدادية، أو حتى الأشخاص الذين يريدون فقط الحفاظ على خصوصيتهم. يمكن لهذه الحكومة  ، أن تحاول إجبار Google على إضافة باب خلفي في كود التطبيق. لرؤية محتويات المحادثات.

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

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

شفافية الكود لحزم التطبيقات

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

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

المشاكل التى يتعرض لها المطورون

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

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

في الختام

تريد Google التحكم في كل شيء ، حيث يتخلص متجر Google Play من ملفات APK من أجل الصيغة الجديدة “AAB” التي تتحكم فيها Google بشكل أكبر . بدءًا من أغسطس ، ستحتاج التطبيقات الجديدة إلى تسليم مفاتيح التوقيع الخاصة بها إلى Google. مع العلم أن التطبيقات الحالية لا ينطبق عليها هذا الأمر حاليًا.

ولكن لا ننسي المميزات التى يحصل عليها المستخدم من امتداد AAB، حيث يهدف الى حل المشكلات الرئيسية في حزمة APK الحالي وتقليل حجم التطبيقات بنسبة 15%، مما يوفر مساحة في التخزين، وأقصى حجم للتطبيق هو 150 ميجا بايت، لتحسين  عملية التوزيع بالنسبة للتطبيقات والألعاب. أما التطبيقات والألعاب التي تتجاوز 150ميجا بايت، سيستعين على المطورين استخدام نظام Play Asset Delivery (PAD) الجديد، لضغط البيانات بشكل سريع. لتمكين التنزيل بشكل اسرع.

يستخدم نفس الامتداد اكثر من مليون تطبيق على متجر Play بما في ذالك Adobe و Netflix و Twitter و Duolingo تستخدم حزم التطبيقات بدلا من ملفات APK، علي حسب تصريحات Google.