Rimuovi tutte le risorse non utilizzate da un progetto Android


386

Voglio rimuovere tutti i layout, le stringhe, i disegni, i colori, ecc. Non utilizzati dalla mia directory di ricerca Android. Esistono strumenti che mi daranno un elenco di file che posso rimuovere dal mio repository ed elementi all'interno di file specifici (ad esempio voci di stringa non utilizzate) che non vengono più utilizzate?

Risposte:


734

Puoi facilmente cercare risorse non utilizzate da Android Studio. Basta premere CtrlAltShiftie digitare " risorse non utilizzate " (senza virgolette). Questo eseguirà lanugine. Modo semplicissimo per eseguire comandi lint (e altre cose da IDE).

O

Nel menu di Android Studio > Refactor > Rimuovi risorse non utilizzate ...

Seleziona le risorse che desideri rimuovere. È possibile escludere le risorse che si desidera conservare facendo clic con il pulsante destro del mouse sull'elemento della risorsa.

Usa Do Refactor per rimuovere tutte le risorse contemporaneamente.

Aggiornamento: utilizzare OptionShiftiper mac


55
cmd + Alt + Maiusc per mac
Jesus Dimrix

5
@MikeMilla Fai clic con il pulsante destro del mouse sui file che desideri eliminare e fai clic sull'opzione "Applica correzioni Lint". Per eliminare più file in una volta sola, selezionali.
Saket Jain,

28
Si noti che l'utilizzo di questo approccio rimuoverà anche qualsiasi risorsa utilizzata a livello di programmazione.
Prokash Sarkar,

23
Ho rotto il mio intero progetto ... Non una mossa così saggia
egorikem,

7
Con AS 3.0, questa funzione rimuove alcuni file di layout utilizzati. Meglio fare un backup o git commit prima di provare questo.
StoneLam

99

Da ADT 16 puoi usare Android Lint . È uno strumento davvero straordinario.

Android Lint è un nuovo strumento per ADT 16 (e Strumenti 16) che analizza le origini del progetto Android alla ricerca di potenziali bug.

Ecco alcuni esempi dei tipi di errori che cerca:

  • Traduzioni mancanti (e traduzioni non utilizzate)
  • Problemi di prestazioni del layout (tutti i problemi che il vecchio strumento layoutopt trovava e altro)
  • Risorse non utilizzate
  • Dimensioni array incoerenti (quando le matrici sono definite in più configurazioni)
  • Problemi di accessibilità e internazionalizzazione (stringhe codificate, contenuto mancante Descrizione, ecc.)
  • Problemi relativi alle icone (come densità mancanti, icone duplicate, dimensioni errate, ecc.)
  • Problemi di usabilità (come non specificare un tipo di input in un campo di testo)
  • Manifest errori e molti altri.

Tuttavia, ha alcuni problemi (non so se sono già corretti) e se vuoi eliminare centinaia di risorse apparentemente inutilizzate, ti consiglio di compilare manualmente il progetto più volte durante la rimozione delle risorse per essere sicuro che Lint non lo abbia fatto rimuovere qualcosa necessario.


10
Non farei molto affidamento su ciò che Lint sta proponendo come risorse inutilizzate, specialmente se fai molte ricerche di risorse nel tuo codice anziché in xml. In questo caso Lint troverà molte risorse che non vengono utilizzate mentre in realtà lo sono.
MrJre

61
In Android Studio, è possibile utilizzare Analyze > Inspect Code...per trovare una serie di cose, tra cui dichiarazioni e metodi non utilizzati .
Joshua Pinter,

8
Un esempio, se si desidera utilizzare la riga di comando:lint --check UnusedResources <project-path>
espinchi il

41
Ma come eliminarli?
Martin Pfeffer,

1
C'è un modo per eliminare tutto Extra Translationsinsieme / automaticamente?
rishabhmhjn,

41

Poiché il supporto per ADT in Eclipse è terminato, dobbiamo utilizzare Android Studio.

In Android Studio 2.0+ utilizzare Refactor > Remove Unused Resources...

inserisci qui la descrizione dell'immagine


2
Sembra che in questo modo rimuova le risorse utilizzate a livello di programmazione
THZ,

1
Non dimenticare di rivedere nel passaggio successivo, altrimenti verranno eliminati anche alcuni file utilizzati.
Karan Sharma,

38

Il sistema di compilazione Gradle per Android supporta la "riduzione delle risorse": la rimozione automatica delle risorse che non vengono utilizzate, al momento della creazione, nell'app in pacchetto. Oltre a rimuovere risorse nel progetto che non sono effettivamente necessarie in fase di esecuzione, ciò rimuove anche le risorse dalle librerie da cui dipendi se non sono effettivamente necessarie dall'applicazione.

Per abilitare ciò aggiungi la riga shrinkResources true nel tuo file gradle.

   android {
        ...

        buildTypes {
            release {
                minifyEnabled true //Important step
                shrinkResources true
            }
   }
}

Controlla la documentazione ufficiale qui,

http://tools.android.com/tech-docs/new-build-system/resource-shrinking


2
shrinkResources deve essere abilitato proguard. Ho problemi ad abilitare proguard :-(
Tixeon,

shrinkResources viene preso in considerazione solo se minifyEnabled è true minifyEnabled true
Eldhopj


15

Fai attenzione se stai usando più gusti quando esegui lint. Lint può dare false risorse inutilizzate a seconda del sapore che hai selezionato.


Come evitarlo?
NickUnuchek,

Fino ad ora, non ho trovato il modo di farlo. Tranne l'esecuzione di lanugine per ciascun sapore e quindi la marcatura degli articoli inutilizzati su entrambi i gusti.
MRodrigues

8

In Android Studio 2.0 e versioni successive nel menu selezionare Refactor -> fare clic su Rimuovi risorse non utilizzate ...

(o)

collegamento disponibile anche

Premi Ctlr + Alt + Maiusc + i una finestra di dialogo apparirà, quindi digita inutilizzato , troverai il numero di opzioni seleziona e rimuovi risorse inutilizzate


7

In Android Studio,

Analizza -> Esegui ispezione per nome

(Collegamento per Mac shift + comando + opzione + i, Ctrl + Maiusc + A su Windows / Linux).

E digitare "risorse non utilizzate".

In questo modo è possibile rimuovere risorse non utilizzate, variabili, simboli, localizzazione, librerie ... ecc.

Selezionare l'ispezione desiderata dall'elenco, quindi selezionare ambito di ispezione -> OK inserisci qui la descrizione dell'immagine


6

Attenzione sviluppatori Android Wear : "Rimuovi risorse non utilizzate" eliminerà il file xml in cui si dichiara il nome della funzionalità (res / valori / wear.xml) e il telefono non sarà in grado di connettersi all'orologio. Ho passato ore a cercare di capire questo bug nella mia app.


Inoltre, rimuove le icone mipmap rotonde, ad esempio.
Artem

Corretta. In generale, "Rimuovi risorse inutilizzate" non dovrebbe essere affatto raccomandato poiché potrebbe creare molti bug non rintracciabili.
steliosf,

4

Per controllare string.xml.

È facile (almeno nella mia versione di Eclipse)

In Eclipse per Android (ho la versione v22.6.2-1085508)

  • Fare clic con il tasto sinistro del mouse sul nome del progetto in "Esplora pacchetti"
  • Seleziona "Strumenti Android".
  • Seleziona "Esegui Lint: verifica errori comuni".

Ora quando apri strings.xml, vedrai che la stringa non utilizzata è evidenziata.

Puoi risolvere altri potenziali problemi.


+1 bella soluzione, amico. Permette di eseguire lanugine anche per i controlli selezionati - esattamente ciò di cui avevo bisogno .... (ps quasi lo stesso con Android Studio: tasto destro del mouse in Esplora progetti, selezionare Analizza , selezionare Ispeziona codice o Esegui ispezione per nome ): D
Trinimon

Questo non aiuta molto a rimuovere quelle stringhe inutilizzate. Suggerisci di rimuoverli manualmente come prima?
Stan,

"Lint" è davvero un ottimo modo per "ripulire il tuo progetto". Devi ancora rimuoverli manualmente, ma sono evidenziati e vedi immediatamente che non vengono utilizzati. Sono necessari pochi minuti per un progetto di medie dimensioni. :)
Gabriel Klein,

3

Forse utile Andround Unused Resources è un'applicazione Java che scansionerà il tuo progetto alla ricerca di risorse non utilizzate. Le risorse inutilizzate occupano inutilmente spazio, aumentano i tempi di compilazione e ingombrano l'elenco di completamento automatico dell'IDE.

Per usarlo, assicurati che la tua directory di lavoro sia la radice del tuo progetto Android ed esegui:

java -jar AndroidUnusedResources.jar

https://code.google.com/p/android-unused-resources/


1
dove mai l'ho messo continua a dire che non è la radice del progetto corretta
Kingston,

2

Quando definiamo le risorse di riduzione vera quella volta, possiamo anche definire quali risorse vogliamo mantenere e quali no ho aggiunto il file xml nella cartella res / raw chiamata keep.xml

prima di andare oltre, genera un singolo build firmato e controlla lo strumento analizzatore apk che mostrerà drawable-xhdpi-v4 ha messenger_button_send_round_shadow.png che voglio rimuovere per questo test

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
       tools:shrinkMode="strict"
       tools:discard="@drawable/com_facebook_button_icon_blue.png,
       @drawable/com_facebook_button_icon_white.png,
       @drawable/com_facebook_button_like_icon_selected.png,
       @drawable/messenger_button_send_round_shadow.png,
       @drawable/messenger_*"  />

facendo messenger_ * verranno rimossi tutti i file a partire da name messenger nella cartella disegnabile o viceversa ho definito un file specifico da rimuovere

in questo modo puoi rimuovere i file dalla libreria da solo, puoi anche rimuovere i layout con @ layout / nome layout se quel disegno è stato usato dal layout e così ....


1

Ci sono risposte davvero eccellenti qui che suggeriscono buoni strumenti

Ma se hai intenzione di rimuovere png-drawables (o altri file di immagine ), dovresti anche considerare di spostare tutte le cartelle drawable-xxxx dal tuo progetto in una cartella temporanea, quindi fare una ricostruzione di tutto e dare un'occhiata alla build lista dei messaggi che ti dirà quali mancano.

Questo può essere particolarmente utile se vuoi avere una panoramica di quali risorse stai effettivamente usando e magari sostituirle con un font icona o risorse svg, possibilmente con l'aiuto della libreria Android Iconics .


questo richiede tempo, ma concordo anche questa è una soluzione. Lo sto facendo proprio ora
Dika,

0

Android Assets Viewer è progettato per aiutare a ispezionare visivamente la grafica imballata (come drawable) all'interno del tuo .apk (puoi anche caricare un file zip della cartella res se preferisci):

http://www.cellebellum.net/AndroidAssetsViewer/

Quindi, per rimuovere risorse inutilizzate, questo potrebbe funzionare bene insieme ai controlli Lint per assicurarsi che tutto ciò che dovrebbe essere lì sia. Ti aiuta anche a identificare alcuni altri potenziali problemi con i tuoi disegni: secchio sbagliato, grafica errata, ecc.


0

Dopo aver eseguito Lint in Android Studio e aver trovato tutte le risorse non utilizzate, è possibile fare clic su una di esse dalla scheda Ispezione. Fornisce alcuni dettagli sul problema e alcune opzioni per risolverlo. Uno di questi è Rimuovi tutte le risorse non utilizzate. Selezionando quell'opzione si eliminano tutte le risorse non utilizzate.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.