AndroidManifest.xml 中的软件包名称被 build.gradle 中的 applicationId 覆盖。如何避免这种情况?

The package name in the AndroidManifest.xml is overridden by applicationId in build.gradle. How to avoid this?

提问人:Exact Match 提问时间:11/1/2023 更新时间:11/1/2023 访问量:53

问:

AndroidManifest.xml 中的软件包名称被 build.gradle 中的 applicationId 覆盖。如何避免这种情况。我只想更改我的 ApplicationID,但它覆盖了 Manfiest 文件中的包。这对我来说是个问题。

有什么方法可以避免它。我只想更改 ApplicationID 并希望包名称保持不变。

我尝试手动重置清单文件中的包名称,但是当我构建应用程序时,它会覆盖它。

android build.gradle gradle-kotlin-dsl 应用程序 ID

评论

0赞 David Wasser 11/1/2023
应用程序 ID 和包名称(在清单中)是一回事。

答:

1赞 Bv2124 11/1/2023 #1

我认为您正在尝试单独更改应用程序名称或应用程序 Bundle ID,如果您想更改应用程序名称,它更简单,只需在此处更改即可

Project_Folder/android/app/src/main/res/values/strings.xml

然后,每当您发布 APK 或在调试模式下安装时,它都会像现在这样。如果要更改捆绑 ID,则需要在以下几个地方进行更改:-

  1. Project_Folder/android/app/build.gradle(命名为应用 ID)
  2. Project_Folder/android/app/BUCK ( package = '你的旧 ID' )
  3. Project_Folder/android/app/src/main/AndroidManifest.xml ( package = '你的旧 ID' )
  4. Project_Folder/android/app/src/main/java/com/fmstechnician/MainApplication.java
  5. Project_Folder/android/app/src/main/java/com/fmstechnician/MainActivity.java

注意:- 不要一次全部替换它(它可能会破坏构建),只需逐页替换它,然后您可以使用新的捆绑 ID 实现新应用程序

0赞 hata 11/1/2023 #2

不能在清单中设置从 AGP 7.3 开始的包名称。

来自 Android 开发者指南

在基于 Gradle 的构建系统中,从 AGP 7.3 开始,不要将 包值直接放在源清单文件中。

Android 开发者文档中有关 AGP

在大多数情况下,应将命名空间和应用程序 ID 保留为 与默认相同。但是,您可能需要更改 命名空间,如果你要重新组织你的代码或避免 命名空间冲突。

在这些情况下,通过更新模块文件中的属性来更改命名空间,而与 应用程序 ID。在执行此操作之前,请确保您的应用程序 ID 是显式定义的,因此更改命名空间不会同样 更改应用程序 ID。有关命名空间的详细信息 可能会影响应用程序 ID,请参阅设置应用程序 ID。namespacebuild.gradle.kts

如果您对 和 Gradle 有不同的名称,则构建工具会将应用程序 ID 复制到应用的 生成结束时的最终清单文件。因此,如果在生成后检查文件,则会设置该属性 添加到应用程序 ID。合并清单的属性为 Google Play 商店和 Android 平台的实际目标 识别您的应用。namespaceapplicationIdAndroidManifest.xmlpackagepackage

因此,您可以在模块的文件中设置属性,而不是 Manifest 的包名称。namespacebuild.gradle.kts