提问人:Exact Match 提问时间:11/1/2023 更新时间:11/1/2023 访问量:53
AndroidManifest.xml 中的软件包名称被 build.gradle 中的 applicationId 覆盖。如何避免这种情况?
The package name in the AndroidManifest.xml is overridden by applicationId in build.gradle. How to avoid this?
问:
AndroidManifest.xml 中的软件包名称被 build.gradle 中的 applicationId 覆盖。如何避免这种情况。我只想更改我的 ApplicationID,但它覆盖了 Manfiest 文件中的包。这对我来说是个问题。
有什么方法可以避免它。我只想更改 ApplicationID 并希望包名称保持不变。
我尝试手动重置清单文件中的包名称,但是当我构建应用程序时,它会覆盖它。
答:
我认为您正在尝试单独更改应用程序名称或应用程序 Bundle ID,如果您想更改应用程序名称,它更简单,只需在此处更改即可
Project_Folder/android/app/src/main/res/values/strings.xml
然后,每当您发布 APK 或在调试模式下安装时,它都会像现在这样。如果要更改捆绑 ID,则需要在以下几个地方进行更改:-
- Project_Folder/android/app/build.gradle(命名为应用 ID)
- Project_Folder/android/app/BUCK ( package = '你的旧 ID' )
- Project_Folder/android/app/src/main/AndroidManifest.xml ( package = '你的旧 ID' )
- Project_Folder/android/app/src/main/java/com/fmstechnician/MainApplication.java
- Project_Folder/android/app/src/main/java/com/fmstechnician/MainActivity.java
注意:- 不要一次全部替换它(它可能会破坏构建),只需逐页替换它,然后您可以使用新的捆绑 ID 实现新应用程序
不能在清单中设置从 AGP 7.3 开始的包名称。
来自 Android 开发者指南:
在基于 Gradle 的构建系统中,从 AGP 7.3 开始,不要将 包值直接放在源清单文件中。
Android 开发者文档中有关 AGP:
在大多数情况下,应将命名空间和应用程序 ID 保留为 与默认相同。但是,您可能需要更改 命名空间,如果你要重新组织你的代码或避免 命名空间冲突。
在这些情况下,通过更新模块文件中的属性来更改命名空间,而与 应用程序 ID。在执行此操作之前,请确保您的应用程序 ID 是显式定义的,因此更改命名空间不会同样 更改应用程序 ID。有关命名空间的详细信息 可能会影响应用程序 ID,请参阅设置应用程序 ID。
namespace
build.gradle.kts
如果您对 和 Gradle 有不同的名称,则构建工具会将应用程序 ID 复制到应用的 生成结束时的最终清单文件。因此,如果在生成后检查文件,则会设置该属性 添加到应用程序 ID。合并清单的属性为 Google Play 商店和 Android 平台的实际目标 识别您的应用。
namespace
applicationId
AndroidManifest.xml
package
package
因此,您可以在模块的文件中设置属性,而不是 Manifest 的包名称。namespace
build.gradle.kts
评论