У меня огромный проект Android со многими строками, объявленными в strings.xml
. Я хотел удалить неиспользуемые строки в strings.xml
.
Есть ли простой способ сделать это?
У меня огромный проект Android со многими строками, объявленными в strings.xml
. Я хотел удалить неиспользуемые строки в strings.xml
.
Есть ли простой способ сделать это?
В Android Studio:
Меню → Анализ → Запуск проверки по имени → Неиспользуемые ресурсы
Установите флажок "Файловая маска" и поставьте strings.xml
в текстовое поле.
В моем случае "Run Inspection by Name" не работал, несмотря на то, что я использовал "Удалить неиспользуемые ресурсы".
Решение:
Я не знаю, почему "Удалить неиспользуемые ресурсы" работает в одном направлении, но не в другом.
С 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.
Вот еще одно решение, которое довольно легко. В меню Android Studio перейдите в
Refactor> Удалить неиспользуемые ресурсы....
Нажмите " Просмотр", чтобы увидеть, что такое неиспользуемые ресурсы, и выборочно удалить их.
Взгляните на мой вопрос: Узнайте, используется ли ресурс
Поскольку никто не имел реального ответа, я запрограммировал script для поиска неиспользуемых ресурсов, который также содержит строки.
Надеюсь, что это поможет.
Перейдите по ссылке: http://code.google.com/p/android-unused-resources/. у него есть инструмент AndroidUnusedResources.jar. запустите это и получите неиспользуемые строки или любые оставшиеся ресурсы.
Чтобы проверить 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 также могут быть удалены вручную!
Сборка и запуск. Тестовое задание!
Запустите этот script из корня вашего проекта.
for resourcefile in `find res/values/*.xml`; do for stringname in `grep '.*/\1/g'`; do 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 ]; then echo $resourcefile : $stringname fi done done for resourcename in `find res/drawable* -type f -name '*.???'`; do 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 ]; then echo $resourcename fi done for resourcename in `find res/layout/*.xml`; do 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 ]; then echo $resourcename fi done
Он дает мне такой вывод:
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 ...
Только для отсутствующего перевода:
Используя InteliJ, щелкните панель панели вашего InteliJ: "Проанализируйте" > "Запустить проверку по имени" > Введите: Неполный перевод