Android studio:为什么minSdkVersion和targetSdkVersion都在AndroidManifest.xml和build.gradle中指定?

时间:2013-11-15 09:20:39

标签: android android-studio

我刚发现一些关于Android studio的奇怪之处:它在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.gradleAndroidManifest.xml中删除,并且更有意义保持它。

2 个答案:

答案 0 :(得分:105)

Gradle会覆盖清单值,我更喜欢更新build.gradle文件而不是清单。可能这是使用Gradle的正确方法。 Gradle支持可以通过IDE控制的产品风格,这些产品风格可以改变我们的Manifest中的许多东西,如包名称,版本代码,版本名称,目标SDK和许多其他东西。然后在Android Studio中单击一下,您就可以更改许多属性并生成另一个apk。

您可以按原样保留清单,并在build.gradle中执行所有配置。您可以安全地删除

<uses-sdk></uses-sdk>

来自清单以及版本代码。

答案 1 :(得分:0)

来自Android文档:

  

注意:如果您的应用直接在元素中定义应用版本,则Gradle构建文件中的版本值将覆盖清单中的设置。此外,在Gradle构建文件中定义这些设置允许您为应用程序的不同版本指定不同的值。为了获得更大的灵活性并避免在合并清单时潜在的覆盖,您应该从元素中删除这些属性,并在Gradle构建文件中定义您的版本设置。

https://developer.android.com/studio/publish/versioning.html#appversioning