Ho un enorme progetto Android con molte stringhe dichiarate in strings.xml. Volevo rimuovere le stringhe inutilizzate strings.xml.
C'è un modo semplice per farlo?
Ho un enorme progetto Android con molte stringhe dichiarate in strings.xml. Volevo rimuovere le stringhe inutilizzate strings.xml.
C'è un modo semplice per farlo?
Risposte:
Su Android Studio :
Menu -> Analizza -> Esegui ispezione per nome -> Risorse non utilizzate
Selezionare la casella Maschera / e file e inserirla strings.xmlnel campo di testo.
tools:ignore="UnusedResources"
Ecco un'altra soluzione abbastanza semplice. Nel menu di Android Studio vai a
Refactor> Rimuovi risorse inutilizzate ... .
Fare clic su Anteprima per vedere quali sono le risorse non utilizzate e rimuoverle selettivamente.
Nel mio caso "Esegui ispezione per nome" non ha funzionato, nonostante il fatto che stavo usando "Rimuovi risorse non utilizzate".
Soluzione:
Non ho idea del perché "Rimuovi risorse non utilizzate" funzioni in un modo ma non nell'altro.
Con ADT 16 puoi farlo nel modo più semplice possibile. Aggiorna ad ADT 16 e usa Android Lint . È uno strumento davvero straordinario. Può trovare tutte le risorse inutilizzate (non solo stringhe) e molte altre. Dal suo sito ufficiale:
Here are some examples of the types of errors that it looks for:
- Missing translations (and unused translations)
- Layout performance problems (all the issues the old layoutopt tool used to find, and more)
- Unused resources
- Inconsistent array sizes (when arrays are defined in multiple configurations)
- Accessibility and internationalization problems (hardcoded strings, missing contentDescription, etc)
- Icon problems (like missing densities, duplicate icons, wrong sizes, etc)
- Usability problems (like not specifying an input type on a text field)
- Manifest errors
and many more.
Warning: The resource R.string.... appears to be unused [UnusedResources] [lint] <string name="...">some text</string>
Per controllare string.xml.
È facile (almeno nella mia versione di Eclipse)
In Eclipse per Android (ho la versione v22.6.2-1085508)
Ora quando apri strings.xml, vedrai che la stringa non utilizzata è evidenziata.
Puoi risolvere altri potenziali problemi.
In Android Studio Stampa
CTLR + Alt + Maiusc + i
Seleziona -> Risorse
non utilizzate Mostra le stringhe e le icone non utilizzate.
Grazie Buona codifica :)
Ecco come l'ho fatto con Android 3.3.
Controlla eventuali modifiche non salvate nel tuo repository.
Nota: prova a creare il progetto. Se la compilazione fallisce, è molto probabile che questi strings.xml vengano richiamati da alcuni layout / menu xmls, che essi stessi non vengono utilizzati. Quindi questi xmls di layout possono anche essere eliminati manualmente!
Costruisci ed esegui. Test!
Esegui questo script dalla radice del tuo progetto.
per file di risorse in "trova res / valori / *. xml"; fare
per stringname in `grep '. * / \ 1 / g'`; fare
count1 = `grep -rc" R.string. $ {stringname} "src | egrep -v ': 0 $' | wc -l`
count2 = `grep -rc" @string / $ {stringname} "res / layout | egrep -v ': 0 $' | wc -l`
count3 = `grep -rc" @string / $ {stringname} "res / menu | egrep -v ': 0 $' | wc -l`
count4 = `grep -rc" @string / $ {stringname} "AndroidManifest.xml | egrep -v '^ 0 $' | wc -l`
count5 = `grep -rc" @string / $ {stringname} "res / xml | egrep -v ': 0 $' | wc -l`
se [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; poi
echo $ resourcefile: $ stringname
fi
fatto
fatto
per resourcename in `find res / drawable * -type f -name '*. ???'`; fare
resource = `echo $ resourcename | xargs basename | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .drawable \. $ {resource} "src | egrep -v ': 0 $' | wc -l`
count2 = `grep -rc" @drawable / $ {resource} "res / layout | egrep -v ': 0 $' | wc -l`
count3 = `grep -rc" @drawable / $ {resource} "res / drawable * / *. xml | egrep -v ': 0 $' | wc -l`
count4 = `grep -rc" @drawable / $ {resource} "res / menu | egrep -v ': 0 $' | wc -l`
count5 = `grep -rc" @drawable / $ {resource} "AndroidManifest.xml | egrep -v '^ 0 $' | wc -l`
se [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; poi
echo $ resourcename
fi
fatto
per resourcename in `find res / layout / *. xml`; fare
resource = `echo $ resourcename | xargs basename | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .layout \. $ {resource} "src | egrep -v ': 0 $' | wc -l`
if [$ count1 -eq 0]; poi
echo $ resourcename
fi
fatto
Mi dà questo tipo di output:
res / valori / activity_strings.xml: activity_more res / valori / activity_strings.xml: activity_as_reply_to res / valori / db_strings.xml: sql_backlog_count res / valori / db_strings.xml: sql_backlog_update_last_resend ...
Custom scope, scegliendoProduction classes->app->valuesper trovare stringhe, colori inutilizzati ...