2012-09-28 14 views
6

Ho bisogno di estrarre l'icona dell'app da un file apk. Ho solo bisogno di un'icona, non voglio estrarre tutto il resto nell'apk. I file sono facili da mettere in attesa, ma come faccio a determinare quale file di icona è l'icona dell'app corretta. Immagino che questo sia memorizzato nella tabella delle risorse? Quindi immagino che quello di cui ho bisogno sia in realtà leggere la tabella delle risorse e spero che dalla tabella delle risorse possa determinare il nome del file dell'icona che posso quindi estrarre dall'app.Estrai icona app dal file apk

Ho bisogno di un semplice strumento per questo, so di apktool che può estrarre l'intero file apk, ma questo non è quello che voglio dal

  • fa un lof di altre cose che non ho bisogno (decompilare, decomprimere altri file, ecc)

  • ci vuole un sacco di tempo per eseguire

c'è qualche altro strumento che posso usare solo per entrare in possesso del percorso del file icona?

Tutti i suggerimenti sono apprezzati

EDIT: Per chiarire, io non sto cercando di fare questo sul dispositivo. Sto cercando di farlo su un PC.

+0

In realtà si un Scarica l'icona app come drawable dopo programmatica che si può convertire in bitmap e salvarla nella memoria del dispositivo. – Dharmendra

+0

@dharmendra, in realtà sto cercando di farlo su un servizio web, non sul dispositivo reale. Lo chiarirò nella domanda –

risposta

10

aapt strumento fornito con Android SDK, trovato sotto platform-tools dovrebbe darvi i dettagli necessari. apktool ships with aapt.

aapt d --values badging payload.apk

Utilizzando questa uscita, è possibile estrarre il file sull'icona di apk (che è un file zip).

0

L'origine di apktool è disponibile. Poiché l'estrazione delle risorse e la decompilazione del codice sono molto diverse, sospetto che sarebbe facile modificarlo per rimuovere la decompilazione del codice per ridurlo a ciò che ti serve.

Per quanto riguarda la determinazione del nome del file icona, si basa che sui contenuti della AndroidManifest.xml, ma potrebbe essere necessario per tenere conto di più versioni di l'icona in base alla densità dello schermo, l'orientamento, la configurazione di lingua, ecc

+0

Grazie per la risposta. Ho anche pensato in questi termini e ho iniziato il lavoro per estrarre la parte manifesta di decompilazione da apktool. Ma sarebbe molto bello trovare alcuni strumenti che facciano questo fuori dalla scatola. Speravo che ci fosse un tale strumento da qualche parte. –

5

Per quanto ne so (e anche secondo Wikipedia), I file APK sono pacchetti ZIP file formattati. Quindi penso che puoi semplicemente usare qualsiasi strumento di decompressione per decomprimere il file apk e prendere l'icona che vuoi. Per l'icona di avvio, è sufficiente aprire il file AndroidManifest.xml e dare un'occhiata alla proprietà android:icon di <application>. Probabilmente sembra qualcosa in questo modo:

android:icon="@drawable/ic_launcher"

Il file di icona sarebbe allora res/drawable-<dim>/ic_launcher.png, dove <dim> può essere una qualsiasi delle ldpi, mdpi, hdpi, xhdpi che si distinguono per le diverse risoluzioni. L'immagine più grande sarebbe in xhdpi o hdpi.

+0

Grazie per la risposta, ma sfortunatamente il file AndroidManisfest.xml è compilato in un formato binario. Se qualcuno può trovare una piccola utility che decompilerebbe AndroidManifest.xml questa sarebbe una buona soluzione. –

7
  • Rinominare il file .apk per .zip
  • Unzip con uno strumento come 7zip
  • Trova le icone come file PNG sotto: /res/drawable-hdpi/icon.png

Edit: Si noti che questo file è non presente in tutti i file apk ma nella maggior parte di essi. Non sono riuscito a trovare una soluzione migliore oltre ad estrarre tutti i file .png e selezionarne uno dall'elenco.

+0

Questa non è la soluzione corretta poiché non è possibile determinare il nome dell'icona e possono esserci molte icone in un'app. icon.png non significa necessariamente che è l'icona dell'app. –

+0

Sì, ho modificato la mia risposta. Penso che non ci sia un modo per trovare quello giusto; per mio uso personale, estrao tutti i file sul server ed elenco tutti i file .png, quindi seleziono uno di loro. – adrianTNT

5
//if your apk is not installed ..only having .apk on sdcard 
    String APKFilePath = "mnt/sdcard/myapkfile.apk"; //For example... 
    PackageManager pm = getPackageManager(); 
    PackageInfo pi = pm.getPackageArchiveInfo(APKFilePath, 0); 

    // the secret are these two lines.... 
    pi.applicationInfo.sourceDir  = APKFilePath; 
    pi.applicationInfo.publicSourceDir = APKFilePath; 
    // 

    Drawable APKicon = pi.applicationInfo.loadIcon(pm); 
    String AppName = (String)pi.applicationInfo.loadLabel(pm); 

è possibile fare riferimento questo link

Get-apk icon

0

È inoltre possibile utilizzare APK Icon Editor per questo scopo.

Sebbene estrae l'intero contenuto dell'APK nella cartella temporanea, consente di modificare, sostituire o semplicemente icone di estrazione. APK Icon Editor utilizza aapt (con la risposta kxb), agendo come involucro di semplificazione su di esso.

Lo strumento è open source, scritto in C++/Qt. Sono disponibili i binari per Windows.

1

Questa funzione bash estrae l'icona e la visualizza con preview. Se non si è su un Mac, è possibile utilizzare il comando display da ImageMagick.

preview-android-icon() { unzip -p $1 $(aapt d --values badging $1 | sed -n "/^application: /s/.*icon='\([^']*\).*/\1/p") > /tmp/$$.png && preview /tmp/$$.png; } 

usare in questo modo:

preview-android-icon /path/to/your.apk