Tengo un gran proyecto de Android con muchas cadenas declaradas strings.xml. Quería eliminar cadenas no utilizadas strings.xml.
¿Hay alguna manera fácil de hacerlo?
Tengo un gran proyecto de Android con muchas cadenas declaradas strings.xml. Quería eliminar cadenas no utilizadas strings.xml.
¿Hay alguna manera fácil de hacerlo?
Respuestas:
En Android Studio :
Menú -> Analizar -> Ejecutar inspección por nombre -> Recursos no utilizados
Marque la casilla de verificación Máscaras de archivo y colóquelas strings.xmlen el campo de texto.
tools:ignore="UnusedResources"
Aquí hay otra solución que es bastante fácil. En el menú de Android Studio, vaya a
Refactor> Eliminar los recursos no utilizados ... .
Haga clic en Vista previa para ver cuáles son los recursos no utilizados y eliminarlos selectivamente.
En mi caso, "Ejecutar inspección por nombre" no funcionó, a pesar de que estaba usando "Eliminar recursos no utilizados".
Solución:
No tengo idea de por qué "Eliminar recursos no utilizados" funciona de una manera pero no de la otra.
Con ADT 16 puedes hacerlo lo más simple posible. Actualice a ADT 16 y use Android Lint . Es una herramienta realmente asombrosa. Puede encontrar todos los recursos no utilizados (no solo cadenas) y muchos más. Desde su sitio 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.
Es fácil (al menos en mi versión de Eclipse)
En Eclipse para Android (tengo la versión v22.6.2-1085508)
Ahora, cuando abra strings.xml, verá que la cadena no utilizada está resaltada.
Puede solucionar otros problemas potenciales.
En Android Studio Press
Ctlr + Alt + Mayús + i
Seleccione -> Recursos no utilizados
Le muestra cadenas e iconos no utilizados.
Gracias feliz codificación :)
Así es como lo hice con Android 3.3.
Registre cualquier cambio no guardado en su repositorio.
Nota: intente construir el proyecto. Si la compilación falla, lo más probable es que estos strings.xml se refieran desde algún diseño / menú xmls, que no se utilizan. ¡Así que esos xmls de diseño también se pueden eliminar manualmente!
Construye y corre. ¡Prueba!
Ejecute este script desde la raíz de su proyecto.
para el archivo de recursos en `find res / values / *. xml`; hacer
para stringname en `grep '. * / \ 1 / g' '; hacer
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 [$ cuenta1 -eq 0 -a $ cuenta2 -eq 0 -a $ cuenta3 -eq 0 -a $ cuenta4 -eq 0 -a $ cuenta5 -eq 0]; luego
echo $ resourcefile: $ stringname
fi
hecho
hecho
para resourcename en `find res / drawable * -type f -name '*. ???' '; hacer
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 [$ cuenta1 -eq 0 -a $ cuenta2 -eq 0 -a $ cuenta3 -eq 0 -a $ cuenta4 -eq 0 -a $ cuenta5 -eq 0]; luego
echo $ resourcename
fi
hecho
para resourcename en `find res / layout / *. xml`; hacer
resource = `echo $ resourcename | xargs basename | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .layout \. $ {resource} "src | egrep -v ': 0 $' | wc -l`
si [$ cuenta1 -eq 0]; luego
echo $ resourcename
fi
hecho
Me da este tipo de salida:
res / values / activity_strings.xml: activity_more res / values / activity_strings.xml: activity_as_reply_to res / values / db_strings.xml: sql_backlog_count res / values / db_strings.xml: sql_backlog_update_last_resend ...
Custom scope, eligiendoProduction classes->app->valuespara encontrar cadenas no utilizadas, colores ...