Mam ogromny projekt na Androida z wieloma ciągami zadeklarowanymi w strings.xml. Chciałem usunąć nieużywane ciągi w strings.xml.
Czy jest na to łatwy sposób?
Mam ogromny projekt na Androida z wieloma ciągami zadeklarowanymi w strings.xml. Chciałem usunąć nieużywane ciągi w strings.xml.
Czy jest na to łatwy sposób?
Odpowiedzi:
W Android Studio :
Menu -> Analiza -> Uruchom inspekcję według nazwy -> Nieużywane zasoby
Zaznacz pole wyboru Maski plików i umieść je strings.xmlw polu tekstowym.
tools:ignore="UnusedResources"
Oto inne rozwiązanie, które jest dość łatwe. W menu Android Studio przejdź do
Refactor> Usuń niewykorzystane zasoby ... .
Kliknij Podgląd, aby zobaczyć, jakie są nieużywane zasoby i selektywnie je usunąć.
W moim przypadku „Uruchom inspekcję według nazwy” nie działało, mimo że korzystałem z opcji „Usuń nieużywane zasoby”.
Rozwiązanie:
Nie mam pojęcia, dlaczego „Usuń nieużywane zasoby” działa w jedną stronę, ale nie w drugą.
Z ADT 16 możesz to zrobić tak prosto, jak to tylko możliwe. Zaktualizuj do ADT 16 i użyj Android Lint . To naprawdę niesamowite narzędzie. Może znaleźć wszystkie nieużywane zasoby (nie tylko ciągi znaków) i wiele innych. Z jego oficjalnej strony:
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>
Aby sprawdzić string.xml.
To łatwe (przynajmniej w mojej wersji Eclipse)
W Eclipse na Androida (mam wersję v22.6.2-1085508)
Teraz, kiedy otworzysz strings.xml, zobaczysz, że nieużywany ciąg jest podświetlony.
Możesz rozwiązać inne potencjalne problemy.
W Android Studio Press
Ctlr + Alt + Shift + i
Wybierz -> Nieużywane zasoby
Pokazuje nieużywane nieużywane ciągi i ikony.
Dzięki Miłego kodowania :)
Tak to zrobiłem z Androidem 3.3.
Sprawdź wszelkie niezapisane zmiany w swoim repozytorium.
Uwaga: spróbuj zbudować projekt. Jeśli kompilacja się nie powiedzie, najprawdopodobniej ten plik strings.xml jest wywoływany z niektórych plików XML układu / menu, które same nie są używane. Więc te pliki XML układu można również usunąć ręcznie!
Buduj i uruchamiaj. Test!
Uruchom ten skrypt z katalogu głównego projektu.
dla pliku zasobów w `find res / values / *. xml`; robić
dla stringname w `grep '. * / \ 1 / g'`; robić
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]; następnie
echo $ resourcefile: $ stringname
fi
Gotowe
Gotowe
dla resourcename w `find res / drawable * -type f -name '*. ???' ''; robić
zasób = `echo $ nazwa_zasobu | xargs basename | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .drawable \. $ {zasób} "src | egrep -v ': 0 $' | wc -l`
count2 = `grep -rc" @drawable / $ {zasób} "res / layout | egrep -v ': 0 $' | wc -l`
count3 = `grep -rc" @drawable / $ {resource} "res / drawable * / *. xml | egrep -v ': 0 $' | wc -l`
count4 = `grep -rc" @drawable / $ {zasób} "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]; następnie
echo $ resourcename
fi
Gotowe
dla resourcename w `find res / layout / *. xml`; robić
zasób = `echo $ nazwa_zasobu | xargs basename | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .layout \. $ {zasób} "src | egrep -v ': 0 $' | wc -l`
if [$ count1 -eq 0]; następnie
echo $ resourcename
fi
Gotowe
Daje mi taki wynik:
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, wybierającProduction classes->app->valuesaby znaleźć nieużywane struny, kolory ...