构建失败,缺少“包”关键属性

如何解决构建失败,缺少“包”关键属性

我正在尝试生成签名的 apk,但一直收到此错误。我在谷歌上搜索错误,但没有想出任何可靠的东西。任何帮助都会很棒。谢谢。

Task :app:processReleaseManifest Failed [com.facebook.android:audience-network-sdk:6.4.0] /Users/xxxx/.gradle/caches/transforms-2/files-2.1/1208b0b00589b6f8b9220695fa10ec7b/audience-network-sdk-6.4.0/AndroidManifest.xml:12:9-55 Error:  Missing 'package' key attribute on element package at [com.facebook.android:audience-network-sdk:6.4.0] AndroidManifest.xml:12:9-55 [com.facebook.android:audience-network-sdk:6.4.0] /Users/xxxx/.gradle/caches/transforms-2/files-2.1/1208b0b00589b6f8b9220695fa10ec7b/audience-network-sdk-6.4.0/AndroidManifest.xml Error:  Validation Failed,exiting

See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.


Execution Failed for task ':app:processReleaseManifest'.
> Manifest merger Failed with multiple errors,see logs

解决方法

这可能是因为 Android 团队对 Gradle 进行了一些更改。现在,如果您的 Gradle 版本低于 4.1,您可能会看到以下一个或多个错误:

  • Android 资源链接失败 /Users/sample/AndroidStudioProjects/MyApp/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml:18:错误:在 <queries> 中发现意外元素 <manifest>立>
  • 清单合并因多个错误而失败,请参阅日志
  • 错误:缺少元素包上的“包”关键属性

为了解决这些问题,他们建议做以下两件事之一:

1.将您的 Gradle 升级到 4.1 或更高版本

只需通过更改类路径中的版本来更新您的 build.gradle 文件。

buildscript {
    repositories {
        // Gradle 4.1 and higher include support for Google's Maven repo using
        // the google() method. And you need to include this repo to download
        // Android Gradle plugin 3.0.0 or higher.
        google()
        ...
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.0' //change it here
    }
}

2.将您的 Gradle 更新到与您当前版本兼容的版本

如果您不想将您的 Gradle 更新到最新版本,您可以通过将其更改为与您正在使用的版本等效的 dot 版本来坚持使用当前版本,而不必担心兼容性问题。

您当前的版本 点释放等效
4.1.* 无需升级
4.0.* 4.0.1
3.6.* 3.6.4
3.5.* 3.5.4
3.4.* 3.4.3
3.3.* 3.3.3

例如,如果您在 4.0.0 上运行您的应用程序,您只需在 build.gradle 文件中将其更改为 4.0.1:

 buildscript {

    repositories {
        google()
        jcenter()
    }

    dependencies {
        // classpath 'com.android.tools.build:gradle:4.0.0'
        classpath 'com.android.tools.build:gradle:4.0.1'
    }
}

如果您的应用依赖于第三方 API 或旧的 Gradle 版本,Google 建议使用第二个选项。

不过,我们知道并非所有人都准备好升级到最新版本,您可能会依赖旧版本的 Gradle 或与 4.1 不兼容的库。

您可以详细了解他们的 official post here 中的变化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?