Студия Android: почему minSdkVersion и targetSdkVersion указаны как в AndroidManifest.xml, так и в build.gradle?

Я только что обнаружил что-то странное в студии Android: у него есть некоторые параметры конфигурации в файле build.gradle, которые переопределяют то, что указано в файле AndroidManifest.xml.

Например, у меня были следующие строки в build.gradle:

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 10
    }
...
}

который переопределял соответствующий тег в AndroidManifest.xml:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="8"/>

Мне не очень нравятся одинаковые настройки в двух разных файлах, поэтому мне интересно, могу ли я безопасно удалить его либо из build.gradle, либо AndroidManifest.xml, и там, где имеет смысл хранить его.

Ответ 1

Gradle переопределяет значения манифеста, и я предпочитаю обновлять файл build.gradle, а не манифест. Вероятно, это правильный способ, используя Gradle. Gradle поддерживает вкусы продуктов, которые можно контролировать с помощью IDE, и эти вкусы продукта могут изменить многие вещи в нашем манифесте, например, имя пакета, код версии, имя версии, целевой SDK и многие другие. Затем одним щелчком мыши в Android Studio вы можете изменить многие свойства и сгенерировать еще один apk.

Вы можете оставить манифест таким, какой он есть, и выполнить всю конфигурацию в build.gradle. Вы можете безопасно удалить

<uses-sdk></uses-sdk>

из манифеста, а также коды версий.