У мене є величезний проект Android з багатьма рядками, заявленими в strings.xml. Я хотів видалити невикористані рядки в strings.xml.
Чи є простий спосіб зробити це?
У мене є величезний проект Android з багатьма рядками, заявленими в strings.xml. Я хотів видалити невикористані рядки в strings.xml.
Чи є простий спосіб зробити це?
Відповіді:
В Android Studio :
Меню -> Аналіз -> Запуск перевірки за назвою -> Невикористані ресурси
Установіть прапорець Маски (и) файлів і поставте strings.xmlв текстовому полі.
tools:ignore="UnusedResources"
Ось ще одне рішення, яке досить легко. У меню Android Studio перейдіть до
Рефакторинг> Видалити невживані ресурси ... .
Клацніть Попередній перегляд, щоб побачити, що є невикористаними ресурсами, і вибірково їх видаліть.
У моєму випадку "Запустити перевірку по імені" не спрацювало, незважаючи на те, що я використовував "Видалити невикористані ресурси".
Рішення:
У мене немає поняття, чому "Видалити невикористані ресурси" працює одним способом, а не іншим.
З 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`
якщо [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; тоді
echo $ resourcefile: $ stringname
фі
зроблено
зроблено
для імені ресурсу в `find res / dravable * -тип f -name '*. ???'`; робити
resource = `echo $ resourcename | базове ім'я xargs | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .dravable \. $ {resource} "src | egrep -v ': 0 $' | wc -l`
count2 = `grep -rc" @drawable / $ {resource} "res / layout | egrep -v ': 0 $' | wc -l`
count3 = `grep -rc" @dravable / $ {resource} "res / dravable * / *. 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`
якщо [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0]; тоді
echo $ ім'я ресурсу
фі
зроблено
для імені ресурсу в `find res / layout / *. xml`; робити
resource = `echo $ resourcename | базове ім'я xargs | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .layout \. $ {resource} "src | egrep -v ': 0 $' | wc -l`
якщо [$ count1 -eq 0]; тоді
echo $ ім'я ресурсу
фі
зроблено
Це дає мені такий вихід:
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знайти невикористані рядки, кольори ...