繁体   English   中英

添加 Admob 模块后反应原生“任务执行失败:':app:processDebugManifest'

[英]React native "Execution failed for task: ':app:processDebugManifest' after adding Admob module

使用 React Native 项目并准备发布但遇到此错误:

Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@appComponentFactory 
value=(android.support.v4.app.CoreComponentFactory) from 
[com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
    is also present at [androidx.core:core:1.0.0] 
AndroidManifest.xml:22:18-86 value= 
(androidx.core.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:7:5-117 to override.

在使用“npm i --save react-native-admob@next”通过 npm 添加“react-native-admob”模块之前工作正常

为了完成项目,我需要运行 admob! 请帮忙!

您遇到此问题是因为您的依赖项取决于 android 支持库。 有些有名为例如的旧版本。 ' com.android.support.. ',而有些依赖于名称为'androidx.core....'的较新的 androidX 库。 在同一个项目中同时拥有 com.android.support 和 androidx 库将阻止应用程序构建。

此问题可能源于 6 月 17 日对 google play 服务的更新,其中包括对 android 支持库的重大更改。 https://developers.google.com/android/guides/releases

要解决此问题,请识别所有 react-native 包并检查它们是否具有已强制更新到提供 androidx.js 的最新版本的依赖项(在播放服务发行说明下列出)。 如果项目中有包含 build.gradles 的 android 文件夹,请尝试 cd android,然后运行 ​​./gradlew app:dependencies --scan。 这会生成一个指向报告的唯一链接,供您检查每个包的依赖关系。 扩展您的依赖项并确保在完全扩展时 react-native 包不包含任何 androidx 文件。 检查所有路径,testCompileClasspath、testRuntimeClassPath....

如果您确实有受影响的依赖项,则需要强制这些包使用带有 com.android.support 的旧版本。 这个问题链接有几个关于如何实施的建议。 https://github.com/facebook/react-native/issues/25292

几天前,我通过在我的 app/build.gradle 中执行与此类似的操作解决了我们构建中发生的这个问题:

implementation(project(':react-native-camera')){
  exclude group: 'com.google.android.gms'
}

您可能还需要声明一些顶级配置以强制 google play 服务和 firebase 使用特定版本。

androidx 上的官方文档建议人们切换到使用较新的库 androidx,并告诉您将 androidX 和 Jettifier 启用为 true。 对于 react-native 库,这不能 100% 工作。 因此,在确定项目中的所有依赖项都符合迁移到 androidx 的条件之前,不要将软件包升级到 androidx。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM