Eu tenho um grande projeto Android com muitas strings declaradas strings.xml. Eu queria remover cordas não utilizadas strings.xml.
Existe alguma maneira fácil de fazer isso?
Eu tenho um grande projeto Android com muitas strings declaradas strings.xml. Eu queria remover cordas não utilizadas strings.xml.
Existe alguma maneira fácil de fazer isso?
Respostas:
No Android Studio :
Menu -> Analisar -> Executar inspeção por nome -> Recursos não utilizados
Marque a caixa de seleção Máscara (s) de arquivo e coloque strings.xmlno campo de texto.
tools:ignore="UnusedResources"
Aqui está outra solução que é bastante fácil. No menu do Android Studio, vá para
Refactor> Remover recursos não utilizados ... .
Clique em Visualizar para ver quais são os recursos não utilizados e removê-los seletivamente.
No meu caso, "Executar inspeção por nome" não funcionou, apesar de eu estar usando "Remover recursos não utilizados".
Solução:
Não faço idéia por que "Remover recursos não utilizados" funciona de uma maneira, mas não da outra.
Com o ADT 16, você pode fazer o mais simples possível. Atualize para o ADT 16 e use o Android Lint . É uma ferramenta realmente incrível. Ele pode encontrar todos os recursos não utilizados (não apenas as strings) e muito mais. Do seu site oficial:
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>
Para verificar string.xml.
É fácil (pelo menos na minha versão do Eclipse)
No Eclipse para Android (eu tenho a versão v22.6.2-1085508)
Agora, quando você abrir o arquivo strings.xml, verá que a seqüência não utilizada está destacada.
Você pode corrigir outros problemas em potencial.
No Android Studio Press
Ctlr + Alt + Shift + i
Selecione -> Recursos não utilizados
não utilizados. Mostra seqüências de caracteres e ícones não utilizados.
Obrigado Feliz codificação :)
Foi assim que fiz no Android 3.3.
Faça check-in de alterações não salvas no seu repositório.
Nota: Tente criar o projeto. Se a compilação falhar, é mais provável que essas strings.xml estejam sendo consultadas em alguns xmls de layout / menu, os quais não são utilizados. Portanto, esses xmls de layout também podem ser excluídos manualmente!
Construa e execute. Teste!
Execute este script a partir da raiz do seu projeto.
para arquivo de recursos em `find res / values / *. xml`; Faz
para stringname em `grep '. * / \ 1 / g'`; Faz
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`
if [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; então
echo $ resourcefile: $ stringname
fi
feito
feito
para resourcename em `find res / drawable * -type f -name '*. ???' '; Faz
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`
if [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; então
echo $ resourcename
fi
feito
para resourcename em `find res / layout / *. xml`; Faz
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]; então
echo $ resourcename
fi
feito
Isso me dá esse tipo de saída:
res / valores / activity_strings.xml: activity_more res / valores / activity_strings.xml: activity_as_reply_to res / valores / db_strings.xml: sql_backlog_count res / valores / db_strings.xml: sql_backlog_update_last_resend ...
Custom scope, escolhendoProduction classes->app->valuespara encontrar cordas não utilizadas cores ...