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

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

Спасибо

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

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

Ответ 1

От Android Gradle Build System, начиная с версии 0.7.0:

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

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

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

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

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

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

Ответ 2

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

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

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

compile 'com.android.support:support-compat:24.2.0'

Ответ 4

Хотя 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'
        }
}