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

我刚刚发现了Android studio的一些奇怪之处:在build.gradle文件中有一些configuration选项覆盖了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删除它,并保持它更有意义。

Gradle重写清单值,我更喜欢更新build.gradle文件而不是清单。 也许这是使用Gradle的正确方法。 Gradle支持可以通过IDE进行控制的产品风格,这些产品风格可以在我们的清单(如包名称,版本代码,版本名称,目标SDK等等)中更改很多东西。 然后通过在Android Studio中单击一下即可更改许多属性并生成另一个apk。

您可以保持原样,并在build.gradle执行所有configuration。 你可以安全地删除

 <uses-sdk></uses-sdk> 

从清单和版本代码。