Ako opraviť poškodený súbor APK a extrahovať aktíva
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.
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:
- Hlavička: Bajty na samom začiatku súboru chýbajú alebo sú zmenené.
- Manifest (XML): AndroidManifest.xml má nesprávny tvar alebo používa nepodporované kódovanie.
- 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ť:
- Nemôžete obnoviť bajty, ktoré nikdy neprišli. Ak bolo sťahovanie skrátené, žiadna oprava hlavičky nezrekonštruuje chýbajúce údaje. Znova stiahnuť.
- Bit-hniloba je trvalá. Ak je súbor uložený v úložisku, ktorý prevrátil niekoľko bitov vo vnútri classes.dex, krok overenia bajtového kódu v čase inštalácie ho zamietne a neexistuje spôsob, ako zistiť, aké mali byť pôvodné bajty.
- Opravené súbory majú nové podpisy. Dokonca aj dokonale opravený súbor APK už nie je podpísaný pôvodným vydavateľom. Ide o funkciu, nie o chybu: bráni útočníkovi, aby vkĺzol škodlivý kód do obľúbenej aplikácie a znova sa podpísal, ako keby bol pôvodným vydavateľom.
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úboruZá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.