Hoe u een corrupt APK-bestand kunt repareren en activa kunt extraheren

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

Je hebt uren besteed aan het downloaden van een gamebundel van 2 GB, waarna je browser op 99% de melding "Download mislukt" geeft, of erger nog: Android "Parseerfout: er is een probleem opgetreden bij het parseren van het pakket." schreeuwt. Een beschadigde APK is niet noodzakelijkerwijs een dood bestand. Omdat APK's zijn gebouwd op basis van de ZIP-compressiestandaard, kunnen ze vaak worden gerepareerd, in ieder geval genoeg om de kostbare bezittingen eruit te halen.

Hieronder gaan we in op wat er feitelijk kapot gaat in een APK, welke reparatietools de moeite waard zijn en hoe onze XAPK-converter kan helpen als u te maken heeft met een kapotte bundel.

Korte samenvatting. Samenvatting van vijf seconden: De meeste beschadigde APK's hebben schade in de centrale ZIP-map of in classes.dex. Schade op ZIP-niveau kan worden gerepareerd met zip -FF of 7-ritssluiting. Schade op DEX-niveau is dat niet; Herstel in dat geval de beschikbare middelen en download opnieuw een schone APK. zipalign fouten zijn geen echte corruptie en worden in één opdracht opgelost.

De anatomie van APK-corruptie

Een APK is in wezen een ZIP-archief met een specifieke structuur. Corruptie vindt doorgaans op een van de volgende drie plaatsen plaats:

  1. De kop: De bytes aan het begin van het bestand ontbreken of zijn gewijzigd.
  2. Het manifest (XML): De AndroidManifest.xml is verkeerd ingedeeld of gebruikt een niet-ondersteunde codering.
  3. De DEX-code: De daadwerkelijke Java/Kotlin-bytecode wordt afgekapt, waardoor de app niet meer kan worden uitgevoerd.

Methode 1: Headless ZIP-reparatie (eenvoudigste)

Als het bestand "leesbaar" is maar niet kan worden geopend, gebruik dan een tool zoals DiskInternals ZIP-reparatie (gratis) of de opdrachtregelopdracht zip -FF in Linux/macOS. Deze tools scannen het bestand op "handtekeningen" van bestanden en bouwen de centrale map helemaal opnieuw op.

Code voor terminalgebruikers: zip -FF corrupt_app.apk --out fixed_app.apk

Methode 2: Zipalign/uitlijning repareren

Soms is een APK "corrupt" simpelweg omdat deze niet is uitgelijnd op grenzen van 4 bytes. Het geheugenbeheer van Android vereist dit. U kunt dit oplossen met de zipalign-tool uit de Android SDK:

zipalign -v 4 input.apk output.apk

Waarschuwing voor bitrot

Als het DEX (klassen.dex)-bestand zelf gegevens mist, zal geen enkele hoeveelheid ZIP-reparatie de app laten werken. In dit geval zou uw enige doel moeten zijn om de Activa/bronnen uit te pakken en een nieuw exemplaar van de app te vinden.

Hoe u kunt zien wat er feitelijk mis is

Voordat u een reparatietool kiest, identificeert u de storing. De foutmelding die Android (of uw archieftool) toont, is meestal een aanwijzing:

Symptoom dat je ziet Wat het meestal betekent Wat je eerst moet proberen
'Het parseren van het pakket' is mislukt (Android) ZIP centrale directory onleesbaar, of manifestversie komt niet overeen Reparatie van ZIP-headers (methode 1)
"Er is een probleem opgetreden bij het parseren van het pakket" + APK is iets kleiner dan verwacht Afgekapte download: de laatste paar KB zijn nooit aangekomen Opnieuw downloaden vanaf dezelfde bron; ZIP-reparatie als opnieuw downloaden niet beschikbaar is
7-Zip / WinRAR opent het maar meldt een "CRC-fout" voor individuele bestanden Individueel bestand in de ZIP is beschadigd Pak alles behalve van het beschadigde lid uit en kijk wat er ontbreekt
"App niet geïnstalleerd" zonder verdere details Vaak is er sprake van niet-overeenkomende handtekeningen of problemen met de afstemming, en niet van echte corruptie zipalign + handtekening opnieuw controleren (methode 2)
Crasht onmiddellijk na installatie met java.lang.VerifyError classes.dex bytecode is beschadigd of versie-incompatibel Kan niet worden hersteld door reparatie. Zorg opnieuw voor een schone kopie.

Een betonwandeling

Stel je voor dat je een APK van 320 MB had waarvan de download voor ongeveer 99% werd onderbroken. Uw telefoon weigert het te installeren met de melding "Het parseren van het pakket is mislukt." Hier leest u hoe u het kunt aanvallen op een Windows- of macOS-werkstation, in de volgorde waarin u de dingen daadwerkelijk zou proberen.

Stap 1. Bevestig dat het bestand er in ieder geval grotendeels is

Controleer de bestandsgrootte aan de hand van wat de bron adverteert. Als het bestand aanzienlijk kleiner is (bijvoorbeeld 220 MB in plaats van 320 MB), is de download ernstig ingekort en heeft het weinig zin om de wrapper te repareren: grote delen van classes.dex of de assets ontbreken eenvoudigweg. Start in dat geval de download opnieuw.

Stap 2. Test de ZIP-structuur

Open een terminal in de map met de APK en voer het uit, op macOS of Linux:

unzip -t broken.apk

De tool rapporteert elk bestand in het archief en eventuele CRC-fouten. Als er slechts een handvol vermeldingen fout gaat en deze niet classes*.dex of resources.arsc zijn, hebt u een behoorlijke kans op een werkende installatie.

Stap 3. Bouw de centrale map opnieuw op

Als unzip -t klaagt over de centrale map zelf ("EOCD-handtekening niet gevonden" / "missing 1 EOCD"), gebruik dan de "fix" -modus:

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

De vlag -FF vertelt zip om het bestand te scannen op lokale handtekeningen in de bestandskop en de map per item opnieuw op te bouwen. De uitvoer, fixed.apk, is wat u daadwerkelijk probeert te installeren.

Stap 4. Lijn opnieuw uit en onderteken indien nodig opnieuw

Na elke structurele wijziging is de handtekening van de APK niet langer geldig, omdat het wijzigen van zelfs maar één byte de handtekeningblokken v2/v3 ongeldig maakt. Als u uw eigen ondertekeningssleutel heeft (dit is prima voor builds waarvan u de eigenaar bent), lijn deze dan uit en onderteken opnieuw:

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

Zonder uw eigen sleutel is de enige manier om het bestand te installeren een bestaande-installatie met hetzelfde ondertekeningscertificaat, wat betekent dat een gerepareerde APK van een derde partij niet bovenop een bestaande Play Store-installatie kan worden geïnstalleerd, omdat de ondertekeningsketen is veranderd.

Wanneer reparatie het verkeerde doel is

Het is de moeite waard om eerlijk te zijn over wat 'repareren' wel en niet kan doen:

Als het uw doel simpelweg was om een ​​game te spelen waarvan de download met 99% is gestopt, is de weg van de minste weerstand vrijwel altijd het wissen van het gedeeltelijke bestand, het vrijmaken van schijfruimte en het opnieuw downloaden vanaf een betrouwbare verbinding. Reparatietools blinken uit als opnieuw downloaden onmogelijk is: oude gearchiveerde APK's, bestanden ontvangen via een slechte LAN-overdracht of back-ups waarvan de oorspronkelijke bron verdwenen is.

Veelgestelde Vragen (FAQ)

Kan ik de pictogrammen en schermafbeeldingen uit een kapotte APK extraheren?

Meestal wel. Pictogrambestanden leven onder res/mipmap-* en screenshotgegevens zijn om te beginnen zeldzaam in APK's. Zelfs als de centrale map beschadigd is, zijn de individuele bestandskoppen vaak genoeg intact zodat de optie "Uitpakken met genegeerde fouten" van 7-Zip de meeste afbeeldingen eruit zal halen.

Zal een gerepareerde APK een geïnstalleerde app updaten?

Alleen als bij de reparatie de originele signatuur behouden blijft, wat doorgaans onmogelijk is na een structurele reparatie. Beschouw een gerepareerde APK als een nieuwe installatie: verwijder eerst de oude versie (je verliest de gegevens ervan) of installeer op een apparaat waarop de app nog niet staat.

Bestaat er een online tool die dit allemaal doet?

Browsergebaseerde tools kunnen de structuur van een APK lezen en u vertellen wat er kapot is (onze APK-infotool doet precies dat), maar voor het herschrijven van de ZIP en het opnieuw ondertekenen is een desktoptool of een server vereist. We voeren de stap voor opnieuw ondertekenen bewust niet uit op een server, omdat dit zou betekenen dat u uw bestand moet uploaden: de privacybelofte van deze site is dat niets uw browser verlaat.

Hoe zit het met XAPK-bestanden die niet kunnen worden uitgepakt?

Een XAPK is slechts een ZIP, dus dezelfde technieken zijn van toepassing. Voer zip -FF uit om de interne APK plus eventuele OBB-bestanden te herstellen en ga vervolgens verder alsof u een beschadigde APK en een afzonderlijke OBB heeft.

Als het uw doel alleen is om de afbeeldingen, geluiden of OBB-gegevens van een mislukte download te verkrijgen, gebruikt u 7-Zip. 7-Zip is agressiever dan de Windows Explorer ZIP-tool en laat u vaak "fouten negeren" toe om bestanden uit te pakken die slechts gedeeltelijk zijn gedownload.

Diepe scan van uw APK

Upload het bestand naar onze analyser om te zien of de structuur geldig is of dat het manifest onleesbaar is.

Analyseer de bestandsstatus

Conclusie

Een "Parsing Error" betekent dat het besturingssysteem het opgeeft. Door gebruik te maken van de hierboven genoemde tools, neem jij de controle terug. Hoewel je een kapotte app niet altijd kunt 'repareren' zodat deze weer werkt, kun je de de gegevens herstellen vrijwel altijd binnenin gebruiken. Raadpleeg onze handleiding over Gesplitste APK's samenvoegen of OBB-spelgegevens extraheren voor meer tips over het beheren van grote bestanden.

Ontwikkeld en gedocumenteerd door Mst Shaefale Hoofdontwikkelaar en Android-pakketarchitect • Geverifieerd op Android 12–15

Mst Shaefale onderhoudt de XAPK/APKS-fusie aan de clientzijde, de parser voor binaire manifesten en de APK v1+v2-ondertekentools op xapktoapk.com. Ontdekt u een verouderde opdracht of een wijziging in het besturingssysteem? Stuur een redactionele opmerking.