2016-08-08 2 views
1

В настоящее время я пытаюсь удалить неиспользуемые графические ресурсы из приложения во время компиляции. Я знаю, что Android Studio может помочь мне вручную удалить неиспользуемые, но мне нужно уметь их удалять во время компиляции; таким образом, я могу запустить Proguard для удаления неиспользуемых классов, а затем удалить любые изображения, на которые ссылаются эти классы.Удалить неиспользуемые ресурсы из приложения Android во время компиляции

Прямо сейчас я могу это сделать, что заставляет меня неиспользованная изображение сократилась до 1х1 черной точки:

android { 
    buildTypes { 
     release { 
      minifyEnabled true 
      shrinkResources true 
     } 
    } 
} 

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

Редакция:

Редактирование: только для уточнения, мне понадобились бы ресурсы, которые были бы «неиспользуемы» Proguard для удаления или переименования.

ответ

0

ProGuard (или новый компилятор Jack) только сжимает и обфускает байт-код. Инструмент сокращения ресурсов впоследствии удаляет или заменяет неиспользуемые файлы ресурсов.

Коммерческое расширение ProGuard DexGuard сокращает, оптимизирует и обфускает байт-код, манифест Android, ресурсы, файлы ресурсов, файлы активов и собственные библиотеки. Насколько мне известно, это единственный инструмент, который анализирует и оптимизирует все содержимое одновременно. Например, он действительно удаляет неиспользуемые классы и соответствующие неиспользуемые ресурсы и файлы ресурсов.

[мы разрабатываем ProGuard и DexGuard на GuardSquare]

+0

Привет, Эрик, большое спасибо за ваш ответ.Я понимаю, что Proguard не удаляет ресурсы, поскольку эта задача выполняется другим инструментом. Я также понимаю, что Dexguard фактически удалит (не оптимизирует, а удалит) все неиспользуемые изображения, верно? –

+0

Правильно, DexGuard удаляет неиспользуемые изображения. Оптимизация для примера включает в себя включение констант ресурсов в код и другие ресурсы. –

+0

Большое спасибо Эрик. Вы были очень полезны –

0

Чтобы удалить неиспользуемые ресурсы, вы можете использовать инструмент Android Lint от ADT 16. Это поможет вам не только удалить неиспользуемые ресурсы, но и найти потенциальные ошибки.

http://tools.android.com/tips/lint

Вы также можете включить ProGuard в режиме выпуска

Инструмент ProGuard усадки, оптимизирует и запутывает код путем удаления неиспользуемого кода и переименования классов, полей и методов с семантический неясными названиями. В результате получается меньший размер .apk-файла, который сложнее перестроить.

http://developer.android.com/tools/help/proguard.html

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

+0

Привет Shanto, я верю, как Lint и «Удалить неиспользуемые ресурсы» инструменты из Android Studio одинаковы. Как сказано, мне нужно что-то, чтобы автоматически удалить эти ресурсы во время компиляции; их удаление вручную не является вариантом, так как некоторые ресурсы, оставшиеся неиспользованными после применения Proguard, также должны быть удалены. Спасибо за внимание, хотя –

0

Если вы ищете какие-то утилиты, вы можете использовать https://code.google.com/archive/p/android-unused-resources/

или https://github.com/KeepSafe/android-resource-remover

Надеются, что это помогает.

+0

Привет, но оба инструмента должны быть запущены перед компиляцией, и поэтому не будут удалять ресурсы, которые стали «неиспользуемыми» после запуска Proguard, не так ли? –