Ako opraviť poškodený súbor APK a extrahovať aktíva

A smartphone showing a file error with a small toolbox, illustrating fixing a corrupt APK

Strávili ste hodiny sťahovaním 2 GB balíka hier, len aby váš prehliadač povedal „Sťahovanie zlyhalo“ na 99 %, alebo ešte horšie, aby Android kričal "Chyba analýzy: Pri analýze balíka sa vyskytol problém." Poškodený súbor APK nemusí byť nevyhnutne mŕtvy súbor. Keďže súbory APK sú postavené na štandarde kompresie ZIP, často sa dajú opraviť, aspoň natoľko, aby sa z nich extrahovali vzácne aktíva.

Nižšie sa dostaneme k tomu, čo sa skutočne pokazí vo vnútri súboru APK, nástroje na opravu, po ktorých sa oplatí siahnuť, a ako vám náš Konvertor XAPK môže pomôcť, keď máte čo do činenia s poškodeným balíkom.

Rýchle zhrnutie. Päťsekundové zhrnutie: Väčšina poškodených súborov APK je poškodená v centrálnom adresári ZIP alebo v ňom classes.dex. Poškodenie na úrovni ZIP je opraviteľné pomocou zip -FF alebo 7-Zip. Poškodenie na úrovni DEX nie je; v takom prípade obnovte prostriedky, ktoré môžete, a znova si stiahnite čistý súbor APK. zipalign chyby nie sú skutočnou korupciou a sú opravené jedným príkazom.

Anatómia korupcie APK

APK je v podstate archív ZIP so špecifickou štruktúrou. Ku korupcii zvyčajne dochádza na jednom z troch miest:

  1. Hlavička: Bajty na samom začiatku súboru chýbajú alebo sú zmenené.
  2. Manifest (XML): AndroidManifest.xml má nesprávny tvar alebo používa nepodporované kódovanie.
  3. Kód DEX: Skutočný bajtový kód Java/Kotlin je skrátený, vďaka čomu je aplikácia nespustiteľná.

Metóda 1: Bezhlavá oprava ZIP (najjednoduchšia)

Ak je súbor „čitateľný“, ale nedá sa otvoriť, použite nástroj ako Oprava ZIP Internals (zadarmo) alebo príkaz zip -FF príkazového riadka v systéme Linux/macOS. Tieto nástroje skenujú súbor na "podpisy" súborov a prestavajú centrálny adresár od začiatku.

Kód pre používateľov terminálu: zip -FF corrupt_app.apk --out fixed_app.apk

Metóda 2: Upevnenie Zipalign/Alignment

Niekedy je súbor APK „poškodený“ jednoducho preto, že nie je zarovnaný na 4-bajtových hraniciach. Správa pamäte systému Android to vyžaduje. Môžete to opraviť pomocou nástroja zipalign zo súpravy Android SDK:

zipalign -v 4 input.apk output.apk

Varovanie proti hnilobe

Ak v samotnom súbore DEX (classes.dex) chýbajú údaje, aplikácia nebude fungovať ani po oprave ZIP. V tomto prípade by vaším jediným cieľom malo byť extrahovať Aktíva/zdroje a nájsť novú kópiu aplikácie.

Ako zistiť, čo je v skutočnosti nesprávne

Pred výberom nástroja na opravu zistite poruchu. Chybové hlásenie, ktoré zobrazuje Android (alebo váš archivačný nástroj), je zvyčajne vodítkom:

Symptóm, ktorý vidíte Čo to zvyčajne znamená Čo vyskúšať ako prvé
„Analýza balíka“ zlyhala (Android) Centrálny adresár ZIP je nečitateľný alebo sa verzia manifestu nezhoduje Oprava hlavičky ZIP (metóda 1)
„Vyskytol sa problém pri analýze balíka“ + APK je o niečo menší, než sa očakávalo Skrátené sťahovanie: posledných pár KB nikdy nedorazilo Opätovné stiahnutie z rovnakého zdroja; Oprava ZIP, ak opätovné stiahnutie nie je k dispozícii
7-Zip / WinRAR ho otvorí, ale pri jednotlivých súboroch hlási chybu CRC Jednotlivý súbor vo vnútri ZIP je poškodený Extrahujte všetko okrem poškodeného člena a potom sa pozrite, čo chýba
„Aplikácia nie je nainštalovaná“ bez ďalších podrobností Často nesúlad podpisov alebo problém so zarovnaním, nie skutočná korupcia zipalign + opätovná kontrola podpisu (Metóda 2)
Zlyhá okamžite po inštalácii so java.lang.VerifyError Bytový kód classes.dex je poškodený alebo verzia nekompatibilná Neobnoviteľné opravou. Znovu získajte čistú kópiu.

Betónová prechádzka

Predstavte si, že ste skončili s 320 MB APK, ktorého sťahovanie bolo prerušené na približne 99 %. Váš telefón ho odmietne nainštalovať s hlásením „Analýza balíka zlyhala“. Tu je návod, ako naň zaútočiť na pracovnej stanici so systémom Windows alebo MacOS v poradí, v akom by ste veci skutočne vyskúšali.

Krok 1. Potvrďte, že súbor je aspoň väčšinou tam

Skontrolujte veľkosť súboru podľa toho, čo inzeruje zdroj. Ak je súbor výrazne menší (povedzme 220 MB namiesto 320 MB), sťahovanie bolo vážne skrátené a nemá zmysel opravovať obal: veľké časti classes.dex alebo aktív jednoducho chýbajú. V takom prípade reštartujte sťahovanie.

Krok 2. Otestujte štruktúru ZIP

Otvorte terminál v priečinku obsahujúcom súbor APK a spustite ho v systéme macOS alebo Linux:

unzip -t broken.apk

Nástroj nahlási každý súbor v archíve a všetky chyby CRC. Ak dôjde k chybe iba pri niekoľkých záznamoch a nie sú classes*.dex alebo resources.arsc, máte slušnú šancu na funkčnú inštaláciu.

Krok 3. Obnovte centrálny adresár

Ak sa unzip -t sťažuje na samotný centrálny adresár („podpis konca centrálneho adresára sa nenašiel“, „chýba 1 EOCD“), použite režim „opravy“:

zip -FF broken.apk --out fixed.apk

Príznak -FF hovorí zip, aby v súbore naskenoval podpisy lokálnej hlavičky súboru a znovu vytvoril položku adresára po položke. Výstup, fixed.apk, je to, čo sa skutočne pokúšate nainštalovať.

Krok 4. V prípade potreby znova zarovnajte a znova podpíšte

Po akejkoľvek štrukturálnej zmene už podpis súboru APK nie je platný, pretože úprava čo i len jedného bajtu znehodnotí bloky podpisov v2/v3. Ak máte svoj vlastný podpisový kľúč (to je v poriadku pre zostavy, ktoré vlastníte), zarovnajte a znova podpíšte:

zipalign -v 4 fixed.apk aligned.apk
apksigner sign --ks my.keystore aligned.apk

Bez vlastného kľúča je jediný spôsob inštalácie súboru prostredníctvom inštalácie existujúce s rovnakým podpisovým certifikátom, čo znamená, že opravený súbor APK od tretej strany sa nenainštaluje nad existujúcu inštaláciu z Obchodu Play, pretože sa zmenil reťazec podpisovania.

Keď je oprava nesprávnym cieľom

Stojí za to byť úprimný v tom, čo „oprava“ môže a nemôže urobiť:

Ak bolo vaším cieľom jednoducho zahrať si hru, ktorej sťahovanie zlyhalo na 99 %, cestou najmenšieho odporu je takmer vždy vymazať čiastočný súbor, uvoľniť miesto na disku a znova stiahnuť zo spoľahlivého pripojenia. Nástroje na opravu svietia, keď opätovné stiahnutie nie je možné: staré archivované súbory APK, súbory prijaté cez nestály LAN prenos alebo zálohy, ktorých pôvodný zdroj je preč.

Často Kladené Otázky (FAQ)

Môžem extrahovať ikony a snímky obrazovky z nefunkčného súboru APK?

Zvyčajne áno. Súbory ikon žijú pod res/mipmap-* a údaje o snímkach obrazovky sú v súboroch APK na začiatok zriedkavé. Aj keď je centrálny adresár poškodený, hlavičky jednotlivých súborov sú dostatočne často neporušené, takže možnosť „Extrahovať s ignorovanými chybami“ v 7-Zip vytiahne väčšinu obrázkov.

Aktualizuje opravený súbor APK nainštalovanú aplikáciu?

Iba v prípade, že oprava zachovala pôvodný podpis, čo je vo všeobecnosti po oprave konštrukcie nemožné. S opraveným súborom APK zaobchádzajte ako s novou inštaláciou: najprv odinštalujte starú verziu (prídete o jej údaje) alebo ju nainštalujte do zariadenia, ktoré aplikáciu ešte nemá.

Existuje online nástroj, ktorý toto všetko dokáže?

Nástroje založené na prehliadači dokážu prečítať štruktúru súboru APK a povedať vám, čo je pokazené (presne to robí náš Nástroj APK Info), ale v skutočnosti prepísanie ZIP a opätovné podpísanie vyžaduje buď desktopový nástroj, alebo server. Zámerne nespúšťame krok opätovného podpísania na serveri, pretože by to znamenalo odovzdanie vášho súboru: prísľub ochrany osobných údajov tejto stránky je, že z vášho prehliadača nič neopustí.

A čo súbory XAPK, ktoré sa nepodarilo extrahovať?

XAPK je len ZIP, takže platia rovnaké techniky. Spustite na ňom zip -FF, aby ste obnovili vnútorný súbor APK plus všetky súbory OBB, potom postupujte, ako keby ste mali poškodený súbor APK a samostatný súbor OBB.

Ak je vaším cieľom len získať grafiku, zvuky alebo údaje OBB z neúspešného sťahovania, použite 7-Zip. 7-Zip je agresívnejší ako nástroj Windows Explorer ZIP a často vám umožní "Ignorovať chyby" na extrahovanie súborov, ktoré sú stiahnuté iba čiastočne.

Hlboké skenovanie vášho súboru APK

Nahrajte súbor do nášho analyzátora, aby ste zistili, či je štruktúra platná alebo či je manifest nečitateľný.

Analyzujte stav súboru

Záver

"Chyba analýzy" znamená, že sa operačný systém vzdáva. Použitím vyššie uvedených nástrojov prevezmete kontrolu späť. Aj keď nie vždy môžete „opraviť“ nefunkčnú aplikáciu, aby sa spustila, takmer vždy môžete obnoviť údaje vnútri. Ďalšie tipy na správu veľkých súborov nájdete v našej príručke na Zlúčenie rozdelených súborov APK alebo Extrahovanie údajov hry OBB.

Navrhol a zdokumentoval Mst Shaefale Vedúci vývojár a architekt balíkov Android • Overené na Android 12–15

Mst Shaefale spravuje nástroj na zlučovanie XAPK/APKS na strane klienta, analyzátor binárnych manifestov a nástroje na podpisovanie APK v1+v2 na xapktoapk.com. Všimli ste si zastaraný príkaz alebo zmenu operačného systému? Pošlite redakčnú poznámku.