108

我刚刚发现了一些关于 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.gradle保留AndroidManifest.xml它更有意义的地方。

4

2 回答 2

116

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

您可以保留清单原样并在build.gradle. 您可以安全地删除

<uses-sdk></uses-sdk>

从清单以及版本代码。

于 2013-11-15T14:04:39.417 回答
1

来自 Android 文档:

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

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

于 2018-04-25T14:48:15.160 回答