Библиотека поддержки Android значительно увеличивает размер APK

Я использую библиотеку поддержки AppCompat в своем проекте Android. AppCompat имеет множество рисунков и ресурсов, которые я не использую в своем приложении. Эти ненужные файлы увеличивают мое приложение с 900K до уровня 2M, что мне не нравится.
Есть ли способ исключить эти файлы при создании APK-файла? Или я должен запутать библиотеку в своем коде вместо создания зависимости? Я использую Gradle в Android Studio.

Спасибо

EDIT 1 Я уже использую proguard. но proguard не может знать, например, что я не хочу иметь drawable-xxxhdpi или values-it.

EDIT 2 Я также использую Android Lint, который не может мне помочь, потому что я не имею прямого доступа к коду lib, и Android добавляет их при создании файла APK.


person Keyhan Asghari    schedule 09.01.2014    source источник
comment
Вы уже пробовали Proguard? proguard.sourceforge.net/index.html   -  person Ernir Erlingsson    schedule 09.01.2014
comment
Да пользуюсь уже. но proguard не может знать, например, что я не хочу иметь drawable-xxxhdpi или values-it.   -  person Keyhan Asghari    schedule 09.01.2014
comment
Вы пытались добавить jar библиотеки поддержки в качестве зависимости от папки libs и добавить -libraryjars libs в конфигурацию proguard?   -  person Yaroslav Mytkalyk    schedule 09.01.2014
comment
Это может помочь, когда вам вообще не нужны ресурсы совместимости приложений. Я просто хочу исключить некоторые из них, которые мне не нужны.   -  person Keyhan Asghari    schedule 09.01.2014
comment
@KeyhanAsghari Использование github.com/marcoRS/lint-cleaner-plugin может решить вашу проблему.   -  person MohammadReza    schedule 10.09.2014


Ответы (4)


Начиная с версии 24.2.0, библиотека поддержки v4 был разделен на несколько более мелких модулей.

Итак, помимо использования shrinkResources и proguardFiles, также убедитесь, что вы используете только те модули, которые нужны вашему приложению. например

Если ваше приложение использует только утилиты Compat, такие как NotificationCompat, ContextCompat или ResourcesCompat и т. д., используйте только модуль compat:

compile 'com.android.support:support-compat:24.2.0'
person User31689    schedule 27.08.2016

Из системы сборки Android Gradle, начиная с версии 0.7.0:

Новая опция вкуса продукта (и defaultConfig) позволяет фильтровать ресурсы с помощью опции -c aapt. Вы можете передавать одно значение (resConfig) или несколько значений (resConfigs) через DSL. Все значения из конфигурации и вариантов по умолчанию объединяются и передаются в aapt. См. «базовый» образец. В «базовом» образце:

defaultConfig {
    ...
    resConfig "en"
    resConfigs "nodpi", "hdpi"
}

Итак, попробуйте следующее, чтобы достичь того, о чем вы просили:

productFlavors {
    ...
    frOnly {
        resConfig "fr"
    }
    ...
}

Обратите внимание, что вы также можете включить *dpi, port, land и т. д.

Ответ получен от: Android Studio экспортирует строки из библиотеки поддержки в APK благодаря Primoz990

person Keyhan Asghari    schedule 06.11.2014
comment
Это выглядит полезно, но насколько вы улучшили размер APK-файла релизной сборки? - person Sam; 20.11.2016
comment
@ Сэм, я точно не помню, но их было много. Перед добавлением этого конфига мой APK был полон большого количества папок локализации (значения-*,...), которых я не хотел. - person Keyhan Asghari; 20.11.2016

Уменьшение ресурсов также может быть для вас вариантом. Он доступен с версии 0.14, но будьте осторожны — в нем все еще есть некоторые недостатки, такие как защита ресурсов при использовании сжимаемых ресурсов< /а>

person ligi    schedule 07.11.2014

Хотя OP выяснил, что он использует proguard, я хотел бы опубликовать некоторый код, если он кому-то поможет, потому что я могу уменьшить свое приложение с 3,8 МБ до 3,1 МБ, используя принятый ответ, а затем до 1,8 МБ через proguard. Я использовал эту конфигурацию в моем файле build.gradle на уровне приложения:

buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
}
person atulkhatri    schedule 09.10.2015