添加Admob模块后,对本机“执行任务失败:':app:processDebugManifest”

时间:2019-06-23 15:14:44

标签: android react-native npm admob

使用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!请帮忙!

1 个答案:

答案 0 :(得分:1)

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

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

要解决此问题,请确定所有yr react-native程序包,并检查它们是否具有已强制更新为androidx的最新版本的依赖项(在play services发行说明下列出)。如果项目中有android目录,其中包含build.gradles,请尝试cd android,然后运行./gradlew app:dependencies --scan。这将生成一个指向报告的唯一链接,供您检查每个软件包的依赖性。扩展依赖项,并确保完全扩展时的本地本机包不包含任何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。这不适用于本机库。因此,在确定项目中具有的所有依赖项都可以迁移到androidx之前,请勿将软件包升级到androidx。