如果我们已经在 app/build.gradle 中设置了 AndroidManifest.xml 中的 versionCode 和 versionName,那么它需要啥?

Posted

技术标签:

【中文标题】如果我们已经在 app/build.gradle 中设置了 AndroidManifest.xml 中的 versionCode 和 versionName,那么它需要啥?【英文标题】:What is the need of versionCode and versionName in AndroidManifest.xml if we already set it in app/build.gradle?如果我们已经在 app/build.gradle 中设置了 AndroidManifest.xml 中的 versionCode 和 versionName,那么它需要什么? 【发布时间】:2021-07-20 13:35:03 【问题描述】:

我们真的需要在androidManifest.xml 中包含android:versionCodeandroid:versionName 吗?

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.my.application"
  android:versionCode="1"
  android:versionName="1.0.0">

这些值在我的 App/build.gradle 中的defaultConfig 下标明。我认为将它们放入 AndroidManifest 没有任何价值。我从同事那里收到的论点是,这个值稍后会在用户点击时显示在 AppInfo 中。

根据Android docs,我也没有在 Android Manifest 中看到任何关于设置这些设置的亮点。

【问题讨论】:

你不需要它们。 Gradle 将覆盖这些值。 【参考方案1】:

如official doc中所述:

要为您的应用定义版本信息,在 Gradle 构建文件中设置版本设置值。然后,这些值会在构建过程中合并到您应用的清单文件中。

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

【讨论】:

我之前实际上已经阅读过该链接,显然我忽略了您在此处突出显示的那些提到超级清晰的点。谢谢@Gabriele!

以上是关于如果我们已经在 app/build.gradle 中设置了 AndroidManifest.xml 中的 versionCode 和 versionName,那么它需要啥?的主要内容,如果未能解决你的问题,请参考以下文章

FAILURE:构建失败并出现异常。 * 其中:构建文件 'D:\AProjects\flutter_app\android\app\build.gradle' 行:24

无法解析 Flutter 应用程序的 android/app/build.gradle 文件中的符号 GradleException

FAILURE:构建失败并出现异常。 * 其中:构建文件 'C:\Users\mayev\dev\remplazo\Chronos\android\app\build.gradle' 行:81

Android开发-kotlin基本使用(一)

安卓RecyclerView详解

Android Studio JNI编程