当前位置: 首页 > 知识库问答 >
问题:

Android studio:为什么在AndroidManifest中同时指定MinSDK版本和targetSdkVersion。xml和构建。格拉德尔?

谷德本
2023-03-14

我刚刚发现Android studio有点奇怪:它在构建中有一些配置选项。覆盖AndroidManifest中指定内容的gradle文件。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"/>

我真的不喜欢在两个不同的文件中传播相同的设置,所以我想知道我是否可以安全地从构建中删除它。gradle或AndroidManifest。xml以及在哪里保留它更有意义。

共有2个答案

马泓
2023-03-14

来自Android文档:

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

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

闾丘晨
2023-03-14

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

您可以保持清单不变,并在build.gradle中进行所有配置。您可以安全地删除

<uses-sdk></uses-sdk>

来自清单以及版本代码。

 类似资料:
  • 我刚刚将一个项目从Exclipse迁移到Android Studio。文件有一个部分,包括: 在<code>AndroidManifest.xml</code>的<code>uses-sdk</code>元素中也存在同样的情况。 当两个设置同时存在时,哪些设置受到尊重?此外,我应该从中删除它们吗?我的项目必须至少支持Api-8。如果从清单文件中删除部分,在旧平台上会有什么不同吗?

  • 谷歌刚刚开源了它的构建工具Bazel。这个工具和Gradle有什么不同?它能做什么是Gradle做不到的,它做什么更好,Gradle做什么更好?

  • 我正在开发Android,并尝试实现GPS和谷歌地图。 构建。gradle(模块:app)如下所示 但它在编译com时显示了错误。Android支持:appcompat-v7:26' 。错误是 但是我在构建中没有看到任何版本25。gradle。我错过什么了吗?提前谢谢。

  • 在这个论坛的帮助下,我刚刚修复了一个错误,即“清单合并失败”。解决方案是将工具:替换为工具:ingore在

  • 我正在尝试让我现有的Android项目与渐变和智能J 12一起工作。以前,我曾让它与maven一起工作,但这似乎不像gradle那样灵活,而且据我所知,我需要的子文件夹更少。 我的Android项目分为干净的java库(:core)和实际的应用程序(:Android)。这两个项目都在我的主项目文件夹中。 我认为,用这个实现gradle工作的理想解决方案是将(:core)和(:android)项目视

  • 最近我用maven写了一个项目,但是我有一个关于maven版本的问题pom.xml. 如果我写这样的依赖 版本会是什么 > 作为另一个项目中的依赖项,该项目使用foo-bar-1.0.0