删除命名空间的软件包名称时出现 Android 清单合并错误

Android Manifest merge error when removing package name for namespace

提问人:Bitwise DEVS 提问时间:4/7/2022 更新时间:8/12/2023 访问量:36616

问:

根据这个文档,我们不再需要在AndroidManifest.xml中提供包名,而是在build.gradle中使用命名空间,在那里我们可以定义我们的包名。

package="org.sample.domain" found in source AndroidManifest.xml: C:\Users\user\Desktop\Projects\Sample\app\libs\sample\src\main\AndroidManifest.xml.
Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace
This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information.

但是在这样做时,“合并清单”选项卡显示错误,指出我没有提供包名称。我同时尝试了两者,但警告版本再次显示。

enter image description here

安卓 android-studio android-gradle-plugin android-manifest

评论

0赞 nitinkumarp 4/7/2022
在该文档中,没有一行说明您可以从清单文件中完全排除包属性。合并清单包属性可能会根据命名空间或 applicationId 而更改,但它不会声明要一起删除包属性。
0赞 Bitwise DEVS 4/7/2022
@nitinkumarp如果 package 属性已弃用,它的替代品是什么?
0赞 nitinkumarp 4/7/2022
请检查此文档 developer.android.com/guide/topics/manifest/manifest-element 它未被弃用。
0赞 Bitwise DEVS 4/7/2022
@nitinkumarp是的,但奇怪的是 Gradle 构建正在抱怨它
0赞 nitinkumarp 4/7/2022
你能在这里添加这个错误吗?

答:

15赞 guenter47 10/16/2022 #1

从清单中删除 package 元素并将其作为命名空间插入到 §build.gradle§(:app) 中:

android {
    ...
    ...
    namespace 'your.package.name'
}
35赞 Robin 1/21/2023 #2

从模块文件中的元素中删除属性package="com.your.unique.package.name"<manifest>AndroidManifest.xmlapp

将其添加到应用程序模块 build.gradle,即使用build.gradle(:app)namespace

android {
     ...
     namespace 'com.your.unique.package.name'
}

🔴 注意:如果您的项目是多模块,则必须对其他每个模块执行此操作。

评论

0赞 Robin 5/2/2023
您是否检查过其他模块?@AlexMandelias
0赞 Alex Mandelias 5/4/2023
回到这个问题,我看到,在与 gradle 构建相关的绝望时刻,我点击了它,因为 OP 提出的问题略有不同,而您的答案与我的问题不符。我只会删除原始评论以避免任何混淆,我很抱歉。编辑:原来我无法编辑我的其他评论。编辑2:嗯,我会删除它
0赞 Saqib Hussain 8/12/2023 #3

以上两个答案都是正确的,但如果您使用的是任何其他模块,那么也请在那里声明命名空间。我正在使用本机模板模块。

注意:将项目作为文件打开,然后您将看到其他模块或其构建文件。