Видаліть усі невикористані ресурси з проекту Android


386

Я хочу видалити всі невикористані макети, рядки, малюнки, кольори тощо з мого каталогу res для Android. Чи є інструменти, які дадуть мені список файлів, і я можу видалити зі свого сховища та елементи в конкретних файлах (наприклад, невикористані рядкові записи), які більше не використовуються?

Відповіді:


734

Ви можете легко шукати невикористані ресурси в Android Studio. Просто натисніть CtrlAltShiftiі введіть " невикористані ресурси" " (без лапок). Це виконає ворсинку. Супер простий спосіб запускати команди lint (та інші речі з IDE).

АБО

У меню Android Studio > Refactor > Видалити невикористані ресурси ...

Виберіть ресурси, які потрібно видалити. Ви можете виключити ресурси, які ви хочете зберегти, клацнувши правою кнопкою миші на елемент ресурсу.

Використовуйте Do Refactor, щоб видалити всі ресурси відразу.

Оновлення: використовувати OptionShiftiдля mac


55
cmd + Alt + Shift для mac
Jesus Dimrix

5
@MikeMilla Клацніть правою кнопкою миші на файлах, які ви бажаєте видалити, і натисніть на опцію "Застосувати виправлення ліній". Щоб видалити кілька файлів за один раз, виберіть їх.
Сакет Джайн

28
Зауважте, що використання цього підходу також видалить будь-який ресурс, який використовувався програмно.
Прокаш Саркар

23
Зламали весь мій проект ... Не такий розумний хід
егорікем

7
За допомогою AS 3.0 ця функція видалить використаний файл макета. Краще зробіть резервну копію чи git-фіксування перед тим, як спробувати.
StoneLam

99

З ADT 16 ви можете використовувати Android Lint . Це дійсно дивовижний інструмент.

Android Lint - це новий інструмент для ADT 16 (та інструментів 16), який сканує джерела проектів Android на предмет потенційних помилок.

Ось кілька прикладів типів помилок, які він шукає:

  • Відсутній переклад (і невикористаний переклад)
  • Проблеми з функціонуванням макета (усі проблеми, які знаходив старий інструмент для компонування та багато іншого)
  • Невикористані ресурси
  • Невідповідні розміри масивів (коли масиви визначаються у кількох конфігураціях)
  • Проблеми з доступністю та інтернаціоналізацією (рядки з твердим кодом, відсутність вмісту, опис тощо)
  • Проблеми зі значками (як відсутність щільності, копії піктограм, неправильні розміри тощо)
  • Проблеми з юзабіліті (наприклад, не вказуючи тип введення в текстовому полі)
  • Маніфестні помилки та багато іншого.

Однак у нього є деякі проблеми (не знаю, чи вони вже виправлені), і якщо ви хочете видалити сотні нібито невикористаних ресурсів, я б рекомендував кілька разів вручну компілювати проект під час видалення ресурсів, щоб переконатися, що Lint не зробив приберіть щось необхідне.


10
Я б не покладався в значній мірі на те, що Lint пропонує використовуватись як невикористані ресурси, особливо якщо ви робите багато пошуку ресурсів у своєму коді замість xml. У цьому випадку Lint знайде багато ресурсів, які не використовуються, хоча вони є.
MrJre

61
В Android Studio ви можете Analyze > Inspect Code...знайти ряд речей, включаючи невикористані декларації та методи .
Джошуа Пінтер

8
Приклад, якщо ви хочете використовувати командний рядок:lint --check UnusedResources <project-path>
espinchi

41
Але як їх видалити?
Мартін Пфеффер

1
Чи є спосіб видалити всі Extra Translationsразом / автоматично?
rishabhmhjn

41

Оскільки підтримка ADT в Eclipse закінчилася, ми повинні використовувати Android Studio.

У Android Studio 2.0+ використання Refactor > Remove Unused Resources...

введіть тут опис зображення


2
Схоже, що таким чином видаляються ресурси, які використовуються програмно
THZ

1
На наступному кроці не забудьте переглянути, інакше деякі використані файли також видаляються.
Каран-Шарма

38

Система збірки Gradle для Android підтримує "скорочення ресурсів": автоматичне видалення ресурсів, які не використовуються під час збирання, у пакувальному додатку. Окрім видалення ресурсів у вашому проекті, які фактично не потрібні під час виконання, це також видаляє ресурси з бібліотек, від яких ви залежите, якщо вони насправді не потрібні вашій програмі.

Щоб увімкнути це, додайте рядок shrinkResources true у файл gradle.

   android {
        ...

        buildTypes {
            release {
                minifyEnabled true //Important step
                shrinkResources true
            }
   }
}

Перевірте офіційну документацію тут,

http://tools.android.com/tech-docs/new-build-system/resource-shrinking


2
shrinkResources потрібно активувати захисну програму. У мене проблеми із включенням захисника :-(
Tixeon

shrinkResources враховується лише в тому випадку, якщо minifyEnabled є правдивим minifyEnabled true
Eldhopj

16

Ми відкриваємо джерело інструменту, який видаляє всі невикористані ресурси у вашому андроїд-проекті на основі вихідних даних. Його можна знайти тут: https://github.com/KeepSafe/android-resource-remover


як я використовую це для видалення невикористаного ресурсу з мого проекту студії Android.
Яміні

15

Остерігайтеся, якщо ви використовуєте безліч ароматизаторів, коли бігаєте ворсинки. Линт може давати помилкові невикористані ресурси залежно від обраного вами аромату.


Як цього уникнути?
NickUnuchek

Досі я не знайшов способу зробити це. За винятком запущеної ворсинки для кожного аромату, а потім маркування предметів невикористаними для обох ароматів.
MRodrigues

8

В Android Studio 2.0 і вище в меню виберіть Refactor -> натисніть Видалити невикористані ресурси ...

(або)

також доступний ярлик

Натисніть Ctlr + Alt + Shift + i одне діалогове вікно з’явиться, потім введіть невикористаний , ви знайдете кількість варіантів вибору та видалення невикористаних ресурсів


7

В Android Studio,

Аналіз -> Запустити перевірку за назвою

(Ярлик для Mac shift + команда + опція + i, Ctrl + Shift + A у Windows / Linux).

І введіть "невикористані ресурси".

Таким чином ви можете видалити невикористані ресурси, змінні, символи, локалізацію, бібліотеки .. і т.д.

Виберіть потрібний огляд зі списку, а потім оберіть область обстеження -> ОК введіть тут опис зображення


6

Увага розробників Android Wear : "Видалити невикористані ресурси" видалить файл xml, де ви оголосите ім'я можливості (res / values ​​/ wear.xml), і телефон не зможе підключитися до годинника. Я витратив години, намагаючись з’ясувати цю помилку у своєму додатку.


А також він видаляє, наприклад, круглі піктограми mipmap.
artem

Правильно. Взагалі "Видалити невикористані ресурси" взагалі не слід рекомендувати, оскільки це може створити безліч помилок, які не можна відстежувати.
steliosf

4

Щоб перевірити string.xml.

Це легко (принаймні в моїй версії Eclipse)

У програмі Eclipse для Android (у мене версія v22.6.2-1085508)

  • Клацніть лівою кнопкою миші на назві проекту в "Пакетному досліднику"
  • Виберіть "Інструменти Android".
  • Виберіть "Запуск Lint: Перевірте на поширені помилки".

Тепер, коли ви відкриєте strings.xml, ви побачите, що невикористана рядок виділяється.

Ви можете виправити інші потенційні проблеми.


+1 приємне рішення, друже. Це дозволяє запускати лінзи і для вибраних чеків - саме те, що мені потрібно було .... (пс майже те саме з Android Studio: клацніть правою кнопкою миші в Project Explorer, виберіть " Аналіз" , виберіть " Перевірити код" або " Запустити перевірку за іменем" : D
Trinimon

Це не дуже допомагає у видаленні цих невикористаних рядків. Чи пропонуєте ви видалити їх вручну, як і раніше?
Стен

"Лінт" - це справді відмінний спосіб "очистити свій проект". Ви все одно повинні їх видалити вручну, але вони виділяються, і ви відразу бачите, що вони не використовуються. Це кілька хвилин роботи для проекту середнього розміру. :)
Габріель Кляйн

3

Можливо, корисний Andround Unused Resources - це програма Java, яка сканує ваш проект на невикористані ресурси. Невикористані ресурси зайве займають місце, збільшують час збирання та захаращують список автозаповнення IDE.

Щоб використовувати його, переконайтеся, що ваш робочий каталог є коренем вашого проекту Android, і запустіть:

java -jar AndroidUnusedResources.jar

https://code.google.com/p/android-unused-resources/


1
де б я ніколи не говорив, він постійно говорить, що це не коректний корінь проекту
kingston

2

Коли ми визначаємо ресурси скорочення, то справді ми можемо також визначити, які ресурси ми хочемо зберегти, а які ні, я не додав xml-файл у папку res / raw з назвою hold.xml

перш ніж продовжувати генерувати єдину підписану збірку та перевірити в інструменті аналізатора apk, який покаже файл dravable-xhdpi-v4 має messenger_button_send_round_shadow.png, який я хочу видалити для цього тесту

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
       tools:shrinkMode="strict"
       tools:discard="@drawable/com_facebook_button_icon_blue.png,
       @drawable/com_facebook_button_icon_white.png,
       @drawable/com_facebook_button_like_icon_selected.png,
       @drawable/messenger_button_send_round_shadow.png,
       @drawable/messenger_*"  />

виконуючи messenger_ * всі файли, починаючи з месенджера імен у папці, що витягується, буде видалено або навпаки, я визначає конкретний файл, який потрібно видалити

так що ви можете видалити файли з бібліотеки самостійно, ви також можете видалити макети за допомогою @ layout / name name, якщо цей макет використовувався у макеті тощо.


1

Тут справді чудові відповіді, які пропонують хороші інструменти

Але якщо ви збираєтесь видалити png-малюнки (або інші файли зображень) ), вам слід також розглянути можливість переміщення всіх папок Dravable-xxxx зі свого проекту у тимчасову папку, а потім перевстановити всі та поглянути на збірку список повідомлень, який підкаже, які з них відсутні.

Це може бути особливо корисно, якщо ви хочете отримати огляд ресурсів, які ви ефективно використовуєте, і, можливо, замінити їх шрифтом піктограми або ресурсами svg, можливо, за допомогою бібліотеки Android Iconics .


це забирає багато часу, але я згоден, це теж рішення. Я роблю це зараз
Діка

0

Програма перегляду активів Android призначена для візуального огляду графіки, запакованої (як малюнки), у вашому .apk (ви також можете просто завантажити zip-файл у свою папку res, якщо вам зручніше):

http://www.cellebellum.net/AndroidAssetsViewer/

Тож для видалення невикористаних ресурсів це може бути добре в поєднанні з чеками Lint, щоб переконатися, що все, що там має бути. Це також допомагає виявити кілька інших можливих проблем із вашими чернетками: неправильне відро, неправильна графіка тощо.


0

Після запуску Lint в Android Studio і пошуку всіх невикористаних ресурсів, ви можете натиснути один з них на вкладці Огляд. Він містить деяку деталь щодо проблеми та кілька варіантів її вирішення. Один з них - Видалити всі невикористані ресурси. Вибравши цю опцію, видаляються всі невикористані ресурси.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.