Google verkar blockera sidladdningsuppdateringar till sina kamera- och inspelningsappar

XDA Developers

Om du försöker sidoladda Google Camera 8.0 eller senare eller Google Recorder 2.0 eller senare pĂ„ en Pixel -enhet med Android 11 ser du ett felmeddelande som sĂ€ger att verifieringen inte kunde lyckas. Även om du försöker sidladda APK -filen med ett skalkommando fĂ„r du inte en mer specifik orsak till installationsfelet. Installationsreturkoden som du fĂ„r Ă€r “INSTALL_FAILED_VERIFICATION_FAILURE”, vilket tyvĂ€rr inte berĂ€ttar varför verifieringen inte lyckas. Genom att undersöka logcat kan vi lĂ€ra oss exakt varför verifieringen misslyckas:

AppIntegrityManagerServiceImpl: Integrity check of com.google.android.GoogleCamera result: DENY due to [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]

Enligt detta meddelande misslyckades en integritetskontroll av installationen av Google Camera eftersom “INSTALLER_NAME” inte matchade “com.android.vending”, paketnamnet för Google Play Butik. (Jag försökte installera Google Camera 8.0 med appen APKMirror Installer för vad det Ă€r vĂ€rt.) Det hĂ€r meddelandet har lagts till i systemloggen av “AppIntegrityManagerServiceImpl”, som Ă€r en del av Android: s nya “App Integrity” -funktion. Enligt koden i AOSP Ă€r App Integrity utformad för att ge ytterligare ett lager kontroller ovanpĂ„ pakethanterarens befintliga APK -signaturverifiering. App Integrity API verkar anvĂ€nda en uppsĂ€ttning regler för att avgöra om installationen ska tillĂ„tas eller nekas. Regler tillhandahĂ„lls av en systemapp – som vi tror Ă€r Google Play -tjĂ€nster – och lagras i en fil.

Dessutom kallar App Integrity Ă€ven en annan klass som heter SourceStampVerifier om en ”kĂ€llstĂ€mpel” Ă€r inbĂ€ddad i manifestets metadata. Till exempel Ă€r det vi tror Ă€r “kĂ€llstĂ€mpeln” frĂ„n Google Camera -appens manifest:

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

Vad vi kan se anvÀnds kÀllstÀmpeln för att verifiera signaturen för paketinstallatören. SÄ till exempel kan du inte lura AppIntegrity till att tillÄta installationen Àven om du lurade Play Store som installationsprogrammet.

Utöver detta kunde vi inte ta reda pĂ„ exakt hur Google anvĂ€nder AppIntegrity och relaterade API: er för att blockera sidladdningsuppdateringar till Google Camera och Google Recorder -appar. En snabb undersökning av Google Play Services APK avslöjar att den anvĂ€nder dessa API: er, men koden Ă€r för förvirrad för att verkligen kunna förstĂ„ allt. Vi hittade till och med katalogen dĂ€r integritetsreglerna lagras -/data/system/integritetsregler – men det var till liten nytta eftersom den bara innehĂ„ller seriell data. Vi har inte heller hittat ett sĂ€tt att inaktivera integritetsverifiering (det verkar inte vara sĂ„ enkelt som att bara Ă€ndra en instĂ€llning), men vi tror att anledningen till att fabriksĂ„terstĂ€llning fungerar för vissa Ă€r att Google Play Services inte fĂ„r en chans att initiera sin regeluppsĂ€ttning för att blockera installationen. Logcat -meddelandet och introduktionen av dessa nya API: er i Android 11 tyder starkt pĂ„ att allt detta Ă€r design och inte ett fel.

Google har inte offentligt kommenterat anvĂ€ndningen av dessa API: er (inte heller förvĂ€ntar vi oss det), och de svarade inte nĂ€r de nĂ„ddes för kommentar. Vi har dock nĂ„gra teorier om varför de blockerar sidladdade uppdateringar. För det första kan de skydda mĂ€nniskor frĂ„n att installera fel version av appen för sin enhet. Google levererar specifika versioner av sina appar till specifika Pixel -enheter. Till exempel kan flera versioner av appen Device PersonaliseringstjĂ€nster hittas online. Även om de alla Ă€r installerbara pĂ„ Pixel -enheter, var det möjligt att vid ett tillfĂ€lle förlora funktionen Live Captions pĂ„ Pixel 4 genom att ladda ner en version som Ă€r byggd för en Ă€ldre Pixel -enhet. En annan anledning kan vara att “förbĂ€ttra spĂ„rbarheten för appar med avseende pĂ„ obehörig distribution”, som förklaras av Google i klassen SourceStampVerifier.

Hittills Àr det bara nÄgra fÄ av Googles appar som anvÀnder appbuntformatet (som Google Camera och Google Recorder) som blockerar installationer som inte Àr Play Store, men vi vet inte om företaget kommer att utvidga detta beteende till sina andra appar nÀr de alla vÀxla till AAB -format. Vi övervÀgde ocksÄ om övergÄngen till apppaket krÀvde implementering av App Integrity, men vi fann att Google redan har en lösning att hantera nÀr anvÀndare försöker installera en app som inte har alla nödvÀndiga delningar. Oavsett fallet tror vi inte att Google tÀnker blockera all sidladdning av sina appar, Àven om dessa verktyg verkligen lÄter dem göra det.

Tack till utvecklarna vvb2060, aviraxp och Quinny899 för deras hjÀlp i den hÀr artikeln och tack till PNF-programvaran för att ge oss en licens att anvÀnda JEB Decompiler, ett professionellt verktyg för omvÀnd teknik för Android-applikationer.