Удалите все неиспользуемые ресурсы из проекта Android

Я хочу удалить все неиспользуемые макеты, строки, чертежи, цвета и т.д. из каталога Android res. Есть ли какие-либо инструменты, которые дадут мне список файлов, и я могу удалить из своего репозитория и элементов в файлах специфики (например, неиспользуемые строковые записи), которые больше не используются?

Ответ 1

Вы можете легко искать неиспользуемые ресурсы из Android Studio. Просто нажмите Ctrl Alt Shift i и введите "неиспользуемые ресурсы" (без кавычек). Это выполнит пух. Супер простой способ запуска команд lint (и других вещей из IDE).

ИЛИ

В Android Studio Menu > Refactor > Удалить неиспользуемые ресурсы...

Выберите ресурсы, которые вы хотите удалить. Вы можете исключить ресурсы, которые хотите сохранить, щелкнув правой кнопкой мыши элемент ресурса.

Используйте Do Refactor для одновременного удаления всех ресурсов.

Обновление: используйте Option Shift i для Mac

Ответ 2

С ADT 16 вы можете использовать Android Lint. Это действительно потрясающий инструмент.

Android Lint - это новый инструмент для ADT 16 (и инструментов 16), который сканирует источники проекта Android для возможных ошибок.

Ниже приведены примеры типов ошибок, которые он ищет:

  • Отсутствующие переводы (и неиспользуемые переводы)
  • Проблемы с производительностью макета (все проблемы, используемые старым инструментом layoutopt, и многое другое)
  • Неиспользуемые ресурсы
  • Несогласованные размеры массива (когда массивы определены в нескольких конфигурациях)
  • Проблемы доступности и интернационализации (жестко закодированные строки, отсутствующий контентОписание и т.д.)
  • Проблемы с иконками (например, отсутствие плотности, дубликаты значков, неправильные размеры и т.д.).
  • Юзабилити (например, не указывая тип ввода в текстовом поле)
  • Ошибки манифеста и многое другое.

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

Ответ 3

Так как поддержка ADT в Eclipse закончилась, мы должны использовать Android Studio.

В Android Studio 2.0 + используйте Refactor > Remove Unused Resources...

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

Ответ 4

Система сборки 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

Ответ 5

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

Ответ 6

Остерегайтесь, если вы используете несколько флейворов при запуске lint. Lint может давать ложные неиспользуемые ресурсы в зависимости от выбранного вами вкуса.

Ответ 7

В Android Studio 2.0 и выше в меню выберите "Рефакторинг" → нажмите "Удалить неиспользуемые ресурсы"...

(или)

доступен также

Нажмите Ctlr + Alt + Shift + i одно диалоговое окно будет apper, затем введите unused, вы найдете количество вариантов выбор и удаление неиспользуемых ресурсов

Ответ 8

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

Ответ 9

В Android Studio

Анализ → Запустить проверку по имени

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

И введите "неиспользованные ресурсы".

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

Выберите нужный контроль из списка, затем выберите область контроля → ОК enter image description here

Ответ 10

Чтобы проверить string.xml.

Это легко (по крайней мере, в моей версии Eclipse)

В Eclipse для Android (у меня есть версия v22.6.2-1085508)

  • Щелкните левой кнопкой мыши по имени проекта в "Проводнике пакетов"
  • Выберите "Инструменты Android".
  • Выберите "Run Lint: проверьте наличие общих ошибок".

Теперь, когда вы открываете strings.xml, вы увидите, что неиспользуемая строка выделена.

Вы можете исправить другие потенциальные проблемы.

Ответ 11

Возможно, полезно Andround Unused Resources - это приложение Java, которое сканирует ваш проект на неиспользуемые ресурсы. Неиспользованные ресурсы бесполезно занимают место, увеличивают время сборки и загромождают список автозаполнения IDE.

Чтобы использовать его, убедитесь, что ваш рабочий каталог является корнем вашего Android-проекта и выполните:

java -jar AndroidUnusedResources.jar

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

Ответ 12

Когда мы определяем ресурсы усадки true, мы можем также определить, какие ресурсы мы хотим сохранить, а какие нет Я добавил файл xml в папку res/raw с именем keep.xml

прежде чем продолжать генерировать одну подписанную сборку и проверить в инструменте анализатора apk, который покажет drawable-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_ * все файлы, начинающиеся с имени messenger в папке с возможностью переноса, будут удалены или по-другому, я определяю, какой файл будет удален

чтобы вы могли удалять файлы из библиотеки. вы также можете удалить макеты с помощью @layout/layout name если этот drawable был использован макетом и так....

Ответ 13

Там действительно отличные ответы, предлагающие хорошие инструменты

Но если вы намерены удалить png-drawables (или другие файлы изображений), вам также следует переместить все папки drawable-xxxx из вашего проекта во временную папку, а затем выполнить перестроить все и посмотреть список сообщений сборки, который скажет вам, какие из них отсутствуют.

Это может быть особенно полезно, если вы хотите получить обзор того, какие ресурсы вы используете эффективно и, возможно, замените их шрифтом значка или ресурсами svg, возможно, с помощью Android Iconics.

Ответ 14

Средство просмотра приложений Android предназначено для визуального осмотра упакованной графики (в виде чертежей) внутри вашего .apk(вы также можете просто загрузить zip файл своей папки res, если хотите):

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

Итак, для удаления неиспользуемых ресурсов это может хорошо работать в тандеме с проверками Lint, чтобы убедиться, что все, что должно быть там, есть. Это также поможет вам выявить несколько других потенциальных проблем с вашими чертежами: неправильным ведром, неправильной графикой и т.д.

Ответ 15

После запуска Lint в Android Studio и поиска всех неиспользуемых ресурсов вы можете щелкнуть один из них на вкладке "Инспекция". Он содержит некоторые сведения об этой проблеме и несколько вариантов ее устранения. Один из них - "Удалить все неиспользуемые ресурсы". При выборе этой опции удаляются все неиспользуемые ресурсы.