لهذا السبب لا يمكنك تحميل تحديثات Google Camera and Recorder

إذا رأيت خطأ "فشل التحقق" عند تحميل تحديث لتطبيقات Google Camera أو Recorder، فاقرأ هذا لمعرفة السبب.

عندما أطلقت جوجل هاتف Pixel 5 في شهر أكتوبر الماضي، كنا متحمسين لوضع أيدينا على تطبيقاتها الجديدة. (الهاتف نفسه رائع جدًاأيضًا.) مع إطلاق Pixel 5 ظهرت إصدارات جديدة من كاميرا جوجل و مسجل جوجل التطبيقات التي شاركناها مع المجتمع. ومع ذلك، عندما حاول العديد من مستخدمي أجهزة Pixel القديمة تحميل التحديثات، قوبلوا بخطأ (كما هو موضح أعلاه). من الغريب أنه لم يواجه الجميع مشكلات في تثبيت التحديثات. تمكن البعض من تثبيتها بشكل جيد، بينما اضطر البعض الآخر إلى إعادة ضبط المصنع حتى يتمكنوا من تثبيت الإصدارات الجديدة. نظرًا للطبيعة العشوائية التي تبدو لهذه المشكلة، فقد عزاها الكثيرون إلى خطأ. نحن واثقون تمامًا الآن من أن هذه المشكلة لا تنبع من خطأ بل من استخدام Google لواجهة برمجة تطبيقات جديدة في Android 11 لمنع التحديثات الجانبية.

إذا حاولت تحميل Google Camera 8.0 أو إصدار أحدث أو Google Recorder 2.0 أو إصدار أحدث على جهاز Pixel يعمل بنظام Android 11، فستظهر لك رسالة خطأ تفيد بتعذر نجاح عملية التحقق. حتى إذا حاولت تحميل APK باستخدام أمر Shell، فلن تحصل على سبب أكثر تحديدًا لفشل التثبيت. رمز إرجاع التثبيت الذي ستحصل عليه هو "

INSTALL_FAILED_VERIFICATION_FAILURE"، والذي للأسف لا يخبرك بسبب عدم نجاح عملية التحقق. من خلال فحص السجل، يمكننا أن نعرف بالضبط سبب فشل التحقق:

AppIntegrityManagerServiceImpl: Integritycheckofcom.google.android.GoogleCameraresult: DENYdueto[Rule: (PACKAGE_NAME EQ com.google.android.GoogleCamera) AND (VERSION_CODE GTE 32045130) AND (APP_CERTIFICATE EQ F0FD6C5B410F25CB25C3B53346C8972FAE30F8EE7411DF910480AD6B2D60DB83) AND NOT (INSTALLER_NAME EQ com.android.vending), DENY]

وفقًا لهذه الرسالة، فشل التحقق من سلامة تثبيت Google Camera لأن "INSTALLER_NAME" لا يتطابق مع "com.android.vending"، وهو اسم الحزمة لمتجر Google Play. (كنت أحاول تثبيت Google Camera 8.0 باستخدام تطبيق APKMirror Installer، لما يستحق ذلك.) تمت إضافة هذه الرسالة إلى سجل النظام بواسطة "AppIntegrityManagerServiceImpl"، والذي يعد جزءًا من ميزة "تكامل التطبيقات" الجديدة لنظام Android. وفقًا للكود الموجود في AOSP، تم تصميم App Integrity لتوفير طبقة إضافية من عمليات التحقق بالإضافة إلى التحقق من توقيع APK الحالي لمدير الحزم. يبدو أن واجهة برمجة التطبيقات App Integrity API تستخدم مجموعة من قواعد لتحديد ما إذا كان سيتم السماح أو رفض التثبيت أم لا. يتم توفير القواعد من خلال تطبيق النظام - والذي نعتقد أنه خدمات Google Play - وهي كذلك المخزنة في ملف.

وبالإضافة إلى ذلك، سلامة التطبيق يدعو أيضا فئة أخرى تسمى SourceStampVerifier إذا كان "ختم المصدر" مضمنًا في البيانات الوصفية للبيان. على سبيل المثال، إليك ما نعتقد أنه "ختم المصدر" من بيان تطبيق Google Camera:

<meta-dataandroid: name="com.android.stamp.source"android: value="https://play.google.com/store"/>

مما يمكننا قوله، أنه يتم استخدام ختم المصدر للتحقق من توقيع مثبت الحزمة. لذلك، على سبيل المثال، لا يمكنك خداع AppIntegrity للسماح بالتثبيت حتى لو كنت انتحال متجر Play كمثبت.

علاوة على ذلك، لم نتمكن من معرفة كيفية استخدام Google بالضبط لـ AppIntegrity وواجهات برمجة التطبيقات ذات الصلة لمنع التحميل الجانبي لتطبيقات Google Camera وGoogle Recorder. يكشف الفحص السريع لـ Google Play Services APK أنه يستخدم واجهات برمجة التطبيقات هذه، ولكن الكود غامض جدًا بحيث لا يمكن فهم كل شيء حقًا. حتى أننا عثرنا على الدليل الذي تم تخزين قواعد التكامل فيه — /data/system/integrity_rules — ولكنه كان قليل الفائدة لأنه يحتوي فقط على بيانات متسلسلة. لم نجد أيضًا طريقة لتعطيل التحقق من النزاهة (لا يبدو الأمر بهذه السهولة تغيير الإعداد)، على الرغم من أننا نعتقد أن سبب نجاح إعادة ضبط المصنع بالنسبة للبعض هو أن خدمات Google Play لا تحصل على فرصة لتهيئة مجموعة القواعد الخاصة بها لمنع التثبيت. تشير رسالة logcat وإدخال واجهات برمجة التطبيقات الجديدة هذه في Android 11 بقوة إلى أن هذا كله حسب التصميم وليس خطأً.

لم تعلق Google علنًا على استخدامها لواجهات برمجة التطبيقات هذه (ولا نتوقع منها ذلك)، ولم ترد عند التواصل معها للتعليق. لدينا بعض النظريات حول سبب حظر التحديثات الجانبية. أولاً، ربما يقومون بحماية الأشخاص من تثبيت الإصدار الخاطئ من التطبيق على أجهزتهم. تقدم Google إصدارات محددة من تطبيقاتها لأجهزة Pixel محددة. على سبيل المثال، يمكن العثور على العديد من إصدارات تطبيق Device Personalization Services عبر الإنترنت. على الرغم من أنها جميعها قابلة للتثبيت على أجهزة Pixel، إلا أنه كان من الممكن في وقت ما تفقد ميزة التسميات التوضيحية المباشرة على Pixel 4 عن طريق تنزيل إصدار مصمم لجهاز Pixel أقدم. قد يكون السبب الآخر هو "تحسين إمكانية تتبع التطبيقات فيما يتعلق بالتوزيع غير المصرح به"، كما أوضحت Google في فئة SourceStampVerifier.

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

شكرًا للمطورين vvb2060 وaviraxp وQuinny899 لمساعدتهم في هذه المقالة،بفضل برنامج PNF لتزويدنا بترخيص الاستخدام JEB المنقح، أداة هندسة عكسية احترافية لتطبيقات Android.