Come riparare un file APK danneggiato ed estrarre le risorse

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

Hai passato ore a scaricare un pacchetto di giochi da 2 GB, solo che il tuo browser dice "Download non riuscito" al 99% o, peggio, Android grida "Errore di analisi: si è verificato un problema durante l'analisi del pacchetto." Un APK danneggiato non è necessariamente un file morto. Poiché gli APK sono basati sullo standard di compressione ZIP, spesso possono essere riparati, almeno quanto basta per estrarre le preziose risorse al loro interno.

Di seguito analizzeremo cosa si rompe effettivamente all'interno di un APK, gli strumenti di riparazione che vale la pena utilizzare e come il nostro Convertitore XAPK può aiutarti quando hai a che fare con un pacchetto rotto.

Riepilogo rapido. Riepilogo di cinque secondi: La maggior parte degli APK danneggiati presentano danni nella directory centrale ZIP o nei file classes.dex. Il danno a livello ZIP è riparabile con zip -FF o 7-Zip. Il danno a livello DEX non lo è; in tal caso, recupera le risorse che puoi e scarica nuovamente un APK pulito. zipalign gli errori non sono una vera corruzione e vengono risolti in un comando.

L'anatomia della corruzione dell'APK

Un APK è essenzialmente un archivio ZIP con una struttura specifica. La corruzione in genere avviene in uno dei tre luoghi seguenti:

  1. L'intestazione: I byte all'inizio del file mancano o sono modificati.
  2. Il manifesto (XML): AndroidManifest.xml non ha un formato valido o utilizza una codifica non supportata.
  3. Il codice DEX: Il bytecode Java/Kotlin effettivo viene troncato, rendendo l'app ineseguibile.

Metodo 1: riparazione ZIP senza testa (il più semplice)

Se il file è "leggibile" ma non si apre, utilizza uno strumento come Riparazione ZIP di DiskInternals (gratuito) o il comando zip -FF da riga di comando in Linux/macOS. Questi strumenti scansionano il file alla ricerca di "firme" di file e ricostruiscono la directory centrale da zero.

Codice per gli utenti del terminale: zip -FF corrupt_app.apk --out fixed_app.apk

Metodo 2: correzione di Zipalign/Allineamento

A volte un APK è "danneggiato" semplicemente perché non è allineato ai limiti di 4 byte. La gestione della memoria di Android lo richiede. Puoi risolvere questo problema utilizzando lo strumento zipalign dall'SDK di Android:

zipalign -v 4 input.apk output.apk

Avviso di bit-rot

Se nel file DEX (classes.dex) mancano dati, nessuna riparazione ZIP consentirà all'app di funzionare. In questo caso, il tuo unico obiettivo dovrebbe essere quello di estrarre Beni/Risorse e trovare una nuova copia dell'app.

Come capire cosa c'è realmente che non va

Prima di scegliere uno strumento di riparazione, identifica il guasto. Il messaggio di errore mostrato da Android (o dal tuo strumento di archiviazione) è solitamente un indizio:

Sintomo che vedi Cosa significa di solito Cosa provare prima
"Analisi del pacchetto" non riuscita (Android) Directory centrale ZIP illeggibile o mancata corrispondenza della versione manifest Riparazione dell'intestazione ZIP (metodo 1)
"Si è verificato un problema durante l'analisi del pacchetto" + L'APK è leggermente più piccolo del previsto Download troncato: gli ultimi KB non sono mai arrivati Scarica nuovamente dalla stessa fonte; Riparazione ZIP se il nuovo download non è disponibile
7-Zip / WinRAR lo apre ma segnala "errore CRC" sui singoli file Il singolo file all'interno dello ZIP è danneggiato Estrai tutto tranne il membro danneggiato, quindi guarda cosa manca
"App non installata" senza ulteriori dettagli Spesso problemi di mancata corrispondenza o allineamento della firma, non vera corruzione zipalign + ricontrollo della firma (metodo 2)
Si blocca immediatamente dopo l'installazione con java.lang.VerifyError Il bytecode classes.dex è danneggiato o non è compatibile con la versione Non recuperabile mediante riparazione. Ottenere nuovamente una copia pulita.

Una passeggiata concreta

Immagina di ritrovarti con un APK da 320 MB il cui download è stato interrotto a circa il 99%. Il telefono si rifiuta di installarlo con il messaggio "Analisi del pacchetto non riuscita". Ecco come attaccarlo su una workstation Windows o macOS, nell'ordine in cui proveresti effettivamente le cose.

Passaggio 1. Conferma che il file sia almeno per lo più lì

Controlla la dimensione del file rispetto a quanto pubblicizza la fonte. Se il file è notevolmente più piccolo (ad esempio, 220 MB invece di 320 MB), il download è stato gravemente troncato e non ha senso riparare il wrapper: mancano semplicemente grandi parti di classes.dex o le risorse. In tal caso, riavvia il download.

Passaggio 2. Testare la struttura ZIP

Apri un terminale nella cartella contenente l'APK ed esegui, su macOS o Linux:

unzip -t broken.apk

Lo strumento segnalerà ogni file all'interno dell'archivio ed eventuali errori CRC. Se solo una manciata di voci risultano errate e non sono classes*.dex o resources.arsc, hai buone possibilità di produrre un'installazione funzionante.

Passaggio 3. Ricostruire la directory centrale

Se unzip -t si lamenta della directory centrale stessa ("firma di fine directory centrale non trovata", "1 EOCD mancante"), utilizzare la modalità "correzione":

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

Il flag -FF indica a zip di scansionare il file per le firme dell'intestazione del file locale e ricostruire la directory voce per voce. L'output, fixed.apk, è ciò che effettivamente provi a installare.

Passaggio 4. Riallineare e firmare nuovamente, se necessario

Dopo qualsiasi modifica strutturale, la firma dell'APK non è più valida, perché la modifica anche di un solo byte invalida i blocchi di firma v2/v3. Se hai la tua chiave di firma (va bene per le build che possiedi), allinea e firma nuovamente:

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

Senza la tua chiave, l'unico modo per installare il file è tramite l'installazione esistente con lo stesso certificato di firma, il che significa che un APK riparato da terze parti non verrà installato sopra un'installazione esistente del Play Store, poiché la catena di firma è cambiata.

Quando la riparazione è l'obiettivo sbagliato

Vale la pena essere onesti su ciò che la "riparazione" può e non può fare:

Se il tuo obiettivo era semplicemente quello di giocare a un gioco il cui download è terminato al 99%, il percorso di minor resistenza è quasi sempre quello di cancellare il file parziale, liberare spazio su disco e scaricarlo di nuovo da una connessione affidabile. Gli strumenti di riparazione funzionano quando è impossibile riscaricarli: vecchi APK archiviati, file ricevuti tramite un trasferimento LAN instabile o backup la cui fonte originale è scomparsa.

Domande Frequenti (FAQ)

Posso estrarre le icone e gli screenshot da un APK rotto?

Di solito sì. I file delle icone risiedono sotto res/mipmap-* e i dati degli screenshot sono rari negli APK per cominciare. Anche quando la directory centrale è danneggiata, le intestazioni dei singoli file sono intatte abbastanza spesso da consentire all'opzione "Estrai con errori ignorati" di 7-Zip di estrarre la maggior parte delle immagini.

Un APK riparato aggiornerà un'app installata?

Solo se la riparazione ha preservato la firma originale, cosa generalmente impossibile dopo una correzione strutturale. Tratta un APK riparato come una nuova installazione: disinstalla prima la vecchia versione (perderai i suoi dati) o installala su un dispositivo che non dispone ancora dell'app.

Esiste uno strumento online che fa tutto questo?

Gli strumenti basati su browser possono leggere la struttura di un APK e dirti cosa non funziona (il nostro Strumento Informazioni APK fa esattamente questo), ma in realtà la riscrittura dello ZIP e la nuova firma richiedono uno strumento desktop o un server. Non eseguiamo deliberatamente la fase di nuova firma su un server perché ciò significherebbe caricare il tuo file: la promessa di privacy di questo sito è che nulla lascia il tuo browser.

Che dire dei file XAPK che non riescono ad estrarre?

Un XAPK è semplicemente un ZIP, quindi si applicano le stesse tecniche. Esegui zip -FF su di esso per recuperare l'APK interno più eventuali file OBB, quindi procedi come se avessi un APK danneggiato e un OBB separato.

Se il tuo obiettivo è solo ottenere grafica, suoni o dati OBB da un download non riuscito, utilizza 7-Zip. 7-Zip è più aggressivo dello strumento ZIP di Windows Explorer e spesso ti consente di "Ignorare errori" per estrarre file scaricati solo parzialmente.

Scansione approfondita del tuo APK

Carica il file sul nostro analizzatore per vedere se la struttura è valida o se il manifest è illeggibile.

Analizza lo stato dei file

Conclusione

Un "errore di analisi" è la rinuncia del sistema operativo. Utilizzando gli strumenti sopra menzionati, riprendi il controllo. Anche se non puoi sempre "aggiustare" un'app danneggiata per farla funzionare, puoi quasi sempre recuperare i dati all'interno. Per ulteriori suggerimenti sulla gestione di file di grandi dimensioni, consulta la nostra guida su Unione degli APK divisi o Estrazione dei dati di gioco OBB.

Progettato e documentato dal signor Shaefale Sviluppatore capo e architetto di pacchetti Android • Verificato su Android 12-15

Mst Shaefale mantiene la fusione XAPK/APKS lato client, il parser del manifest binario e gli strumenti di firma APK v1+v2 su xapktoapk.com. Hai notato un comando obsoleto o una modifica del sistema operativo? Invia una nota editoriale.