यही कारण है कि आप Google कैमरा और रिकॉर्डर पर अपडेट को साइडलोड नहीं कर सकते

यदि आपने Google कैमरा या रिकॉर्डर ऐप्स पर अपडेट को साइडलोड करते समय "विफल सत्यापन" त्रुटि देखी है, तो इसका कारण जानने के लिए इसे पढ़ें।

जब Google ने अक्टूबर में Pixel 5 लॉन्च किया था, तो हम इसके नए ऐप्स प्राप्त करने के लिए उत्साहित थे। (फ़ोन ही बहुत बढ़िया है, भी।) Pixel 5 के लॉन्च के साथ इसके नए संस्करण आए गूगल कैमरा और गूगल रिकॉर्डर वे ऐप्स जिन्हें हमने समुदाय के साथ साझा किया है। हालाँकि, जब पुराने पिक्सेल उपकरणों के कई उपयोगकर्ताओं ने अपडेट को साइडलोड करने का प्रयास किया, तो उन्हें एक त्रुटि का सामना करना पड़ा (ऊपर दिखाया गया है)। विचित्र बात यह है कि हर किसी को अपडेट स्थापित करने में समस्या नहीं हुई। कुछ उन्हें ठीक से स्थापित करने में सक्षम थे, जबकि अन्य को फ़ैक्टरी रीसेट करना पड़ा ताकि वे नए संस्करण स्थापित कर सकें। इस मुद्दे की प्रतीत होने वाली यादृच्छिक प्रकृति के कारण, कई लोगों ने इसे एक बग तक बना दिया। अब हमें पूरा विश्वास है कि यह समस्या किसी बग से उत्पन्न नहीं हुई है, बल्कि साइडलोडिंग अपडेट को ब्लॉक करने के लिए Google द्वारा एंड्रॉइड 11 में एक नए एपीआई के उपयोग से उत्पन्न हुई है।

यदि आप एंड्रॉइड 11 चलाने वाले पिक्सेल डिवाइस पर Google कैमरा 8.0 या बाद के संस्करण या Google रिकॉर्डर 2.0 या बाद के संस्करण को साइडलोड करने का प्रयास करते हैं, तो आपको एक त्रुटि संदेश दिखाई देगा जो कहता है कि सत्यापन सफल नहीं हो सका। भले ही आप शेल कमांड का उपयोग करके एपीके को साइडलोड करने का प्रयास करें, आपको इंस्टॉलेशन विफलता का अधिक विशिष्ट कारण नहीं मिलेगा। आपको जो इंस्टालेशन रिटर्न कोड दिया जाएगा वह है "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 कैमरा इंस्टॉलेशन की अखंडता जांच विफल हो गई क्योंकि "INSTALLER_NAME" Google Play Store के पैकेज नाम "com.android.vending" से मेल नहीं खाता। (मैं एपीकेमिरर इंस्टालर ऐप का उपयोग करके Google कैमरा 8.0 स्थापित करने का प्रयास कर रहा था, इसकी कीमत क्या है।) यह संदेश सिस्टम लॉग में "द्वारा जोड़ा गया था"AppIntegrityManagerServiceImpl", जो एंड्रॉइड के नए "ऐप इंटीग्रिटी" फीचर का हिस्सा है। एओएसपी में कोड के अनुसार, ऐप इंटीग्रिटी को पैकेज मैनेजर के मौजूदा एपीके हस्ताक्षर सत्यापन के शीर्ष पर चेक की एक अतिरिक्त परत प्रदान करने के लिए डिज़ाइन किया गया है। ऐसा लगता है कि ऐप इंटीग्रिटी एपीआई एक सेट का उपयोग करता है नियम यह तय करने के लिए कि इंस्टॉल की अनुमति देनी है या नहीं। नियम एक सिस्टम ऐप द्वारा प्रदान किए जाते हैं - जिसे हम Google Play Services मानते हैं - और हैं एक फ़ाइल में संग्रहीत.

इसके अलावा, ऐप इंटीग्रिटी कॉल भी करता है दूसरे वर्ग को बुलाया गया सोर्सस्टैम्पसत्यापनकर्ता यदि मेनिफेस्ट के मेटाडेटा में "स्रोत स्टांप" एम्बेड किया गया है। उदाहरण के लिए, हमारा मानना ​​है कि यह Google कैमरा ऐप के मेनिफेस्ट से "सोर्स स्टैम्प" है:

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

हम जो बता सकते हैं, उससे पता चलता है कि पैकेज इंस्टॉलर के हस्ताक्षर को सत्यापित करने के लिए सोर्स स्टैम्प का उपयोग किया जाता है। इसलिए, उदाहरण के लिए, आप AppIntegrity को इंस्टॉलेशन की अनुमति देने के लिए धोखा नहीं दे सकते, भले ही आप प्ले स्टोर को धोखा दिया इंस्टॉलर के रूप में.

इसके अलावा, हम यह पता लगाने में असमर्थ थे कि Google, Google कैमरा और Google रिकॉर्डर ऐप्स में साइडलोडिंग अपडेट को ब्लॉक करने के लिए AppIntegrity और संबंधित API का उपयोग कैसे कर रहा है। Google Play Services APK की एक त्वरित जांच से पता चलता है कि यह इन एपीआई का उपयोग कर रहा है, लेकिन कोड इतना अस्पष्ट है कि वास्तव में सब कुछ समझ में नहीं आता है। हमें वह निर्देशिका भी मिली जहां अखंडता नियम संग्रहीत हैं - / डेटा / सिस्टम / इंटीग्रिटी_रूल्स - लेकिन यह बहुत कम उपयोग का था क्योंकि इसमें केवल क्रमबद्ध डेटा शामिल है। हमें अखंडता सत्यापन को अक्षम करने का कोई तरीका भी नहीं मिला है (यह उतना आसान नहीं लगता है)। एक सेटिंग बदलना), हालांकि हमारा मानना ​​है कि फ़ैक्टरी रीसेटिंग कुछ लोगों के लिए काम करती है, इसका कारण यह है कि Google Play Services को इंस्टॉलेशन को ब्लॉक करने के लिए अपने नियमों को आरंभ करने का मौका नहीं मिलता है। हालाँकि, लॉगकैट संदेश और एंड्रॉइड 11 में इन नए एपीआई की शुरूआत दृढ़ता से सुझाव देती है कि यह सब डिज़ाइन द्वारा है और कोई बग नहीं है।

Google ने इन API के उपयोग पर सार्वजनिक रूप से कोई टिप्पणी नहीं की है (न ही हम उनसे ऐसी अपेक्षा करते हैं), और जब टिप्पणी के लिए संपर्क किया गया तो उन्होंने कोई प्रतिक्रिया नहीं दी। हालाँकि, हमारे पास कुछ सिद्धांत हैं कि वे साइडलोडेड अपडेट को क्यों रोक रहे हैं। सबसे पहले, वे लोगों को उनके डिवाइस पर ऐप का गलत संस्करण इंस्टॉल करने से बचा सकते हैं। Google अपने ऐप्स के विशिष्ट संस्करण विशिष्ट पिक्सेल डिवाइसों पर वितरित करता है। उदाहरण के लिए, डिवाइस वैयक्तिकरण सेवा ऐप के कई संस्करण ऑनलाइन पाए जा सकते हैं। भले ही वे सभी पिक्सेल उपकरणों पर इंस्टॉल करने योग्य हैं, एक बिंदु पर यह संभव था लाइव कैप्शन सुविधा खो दें पुराने Pixel डिवाइस के लिए निर्मित संस्करण डाउनलोड करके Pixel 4 पर। दूसरा कारण "अनधिकृत वितरण के संबंध में ऐप्स की ट्रैसेबिलिटी में सुधार" हो सकता है, जैसा कि Google ने सोर्सस्टैम्पवेरिफायर क्लास में बताया है।

अब तक, Google के केवल कुछ ही ऐप्स ऐप बंडल प्रारूप (जैसे Google कैमरा और Google रिकॉर्डर) का उपयोग कर रहे हैं गैर-प्ले स्टोर इंस्टॉल को अवरुद्ध करना, लेकिन हम नहीं जानते कि कंपनी इस व्यवहार को अपने अन्य ऐप्स तक बढ़ाएगी या नहीं एक बार वे सभी एएबी प्रारूप में बदल जाएं. हमने यह भी विचार किया कि क्या ऐप बंडलों पर स्विच करने के लिए ऐप इंटीग्रिटी को लागू करना आवश्यक है, लेकिन हमने पाया कि Google पहले ही ऐसा कर चुका है एक समाधान है इसे संभालने के लिए जब उपयोगकर्ता किसी ऐसे ऐप को इंस्टॉल करने का प्रयास करते हैं जिसमें उसके सभी आवश्यक विभाजन नहीं होते हैं। जो भी मामला हो, हमें नहीं लगता कि Google अपने ऐप्स के सभी साइडलोडिंग को रोकने का इरादा रखता है, हालांकि ये उपकरण निश्चित रूप से उन्हें ऐसा करने की अनुमति देते हैं।

इस लेख में सहायता के लिए डेवलपर्स vvb2060, aviraxp, और क्विनी899 को धन्यवाद, और टीहमें उपयोग करने का लाइसेंस प्रदान करने के लिए पीएनएफ सॉफ्टवेयर को धन्यवाद जेईबी डिकंपाइलर, Android अनुप्रयोगों के लिए एक पेशेवर-ग्रेड रिवर्स इंजीनियरिंग टूल।