У меня огромный проект Android со множеством строк, объявленных в strings.xml. Я хотел удалить неиспользуемые строки в strings.xml.
Есть ли простой способ сделать это?
У меня огромный проект Android со множеством строк, объявленных в strings.xml. Я хотел удалить неиспользуемые строки в strings.xml.
Есть ли простой способ сделать это?
Ответы:
На Android Studio :
Меню -> Анализ -> Запустить проверку по имени -> Неиспользуемые ресурсы
Установите флажок File mask (s) и вставьте strings.xmlв текстовое поле.
tools:ignore="UnusedResources"
Вот еще одно решение, которое довольно легко. В меню Android Studio перейдите в
Refactor> Удалить неиспользуемые ресурсы ... .
Нажмите « Просмотр», чтобы увидеть, что такое неиспользуемые ресурсы, и выборочно удалить их.
В моем случае «Запуск проверки по имени» не работал, несмотря на то, что я использовал «Удалить неиспользуемые ресурсы».
Решение:
Я понятия не имею, почему «Удалить неиспользуемые ресурсы» работает одним способом, но не другим.
С ADT 16 вы можете сделать это максимально просто. Обновите до ADT 16 и используйте Android Lint . Это действительно удивительный инструмент. Он может найти все неиспользованные ресурсы (не только строки) и многое другое. С его официального сайта:
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>
Чтобы проверить string.xml.
Это легко (по крайней мере, в моей версии Eclipse)
В Eclipse для Android (у меня версия v22.6.2-1085508)
Теперь, когда вы откроете strings.xml, вы увидите, что неиспользуемая строка подсвечивается.
Вы можете исправить другие потенциальные проблемы.
В Android Studio Press
Ctlr + Alt + Shift + I
Выберите -> Неиспользуемые ресурсы.
Здесь отображаются неиспользуемые неиспользуемые строки и значки.
Спасибо Счастливого кодирования :)
Вот как я это сделал с Android 3.3.
Проверьте все несохраненные изменения в вашем хранилище.
Примечание: попробуйте построить проект. Если компиляция завершится неудачно, наиболее вероятно, что эти strings.xml ссылаются из некоторого макета / меню xmls, которые сами по себе не используются. Таким образом, эти макеты XMLS также могут быть удалены вручную!
Сборка и запуск. Тест!
Запустите этот скрипт из корня вашего проекта.
для файла ресурсов в `find res / values / *. xml`; делать
для имени строки в `grep '. * / \ 1 / g'`; делать
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]; затем
echo $ resourcefile: $ stringname
фи
сделано
сделано
для имени ресурса в `find res / drawable * -type f -name '*. ???'`; делать
resource = `echo $ resourcename | xargs базовое имя | 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]; затем
echo $ resourcename
фи
сделано
для имени ресурса в `find res / layout / *. xml`; делать
resource = `echo $ resourcename | xargs базовое имя | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .layout \. $ {resource} "src | egrep -v ': 0 $' | wc -l`
if [$ count1 -eq 0]; затем
echo $ resourcename
фи
сделано
Это дает мне такой вывод:
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, выбравProduction classes->app->valuesнайти неиспользуемые строки, цвета ...