React Native安装OneSignal后Android依赖版本冲突致Manifest合并失败
解决React Native安装OneSignal后的Manifest合并冲突问题
我之前在React Native项目里集成OneSignal时也碰到过完全一样的问题!这本质是依赖版本冲突:OneSignal引入的com.android.support:support-v4:26.1.0和你项目里已有的com.android.support:cardview-v7:26.0.1使用了不同版本的Android Support库,导致AndroidManifest合并时版本号“打架”。
给你两个亲测有效的解决办法:
方法一:通过Gradle强制统一所有Support库版本
这是我个人更推荐的方案,能一劳永逸解决所有Support库版本冲突:
- 打开项目根目录下的
android/build.gradle文件 - 在
allprojects代码块的repositories上方,添加这段配置:
subprojects { project.configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex') ) { details.useVersion "26.1.0" } } } }
- 这段代码会强制让所有依赖的Android Support库都使用26.1.0版本,彻底消除版本不一致的问题。
方法二:修改AndroidManifest.xml手动覆盖版本
如果你不想全局统一版本,也可以直接在Manifest里指定要使用的版本:
- 打开
android/app/src/main/AndroidManifest.xml - 先在根标签
manifest里添加tools命名空间(不然tools:replace会报错):
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名">
- 然后在
<application>标签内添加这个meta-data标签,用来覆盖冲突的版本值:
<meta-data android:name="android.support.VERSION" android:value="26.1.0" tools:replace="android:value" />
两种方法选一个就行,之后重新执行react-native run-android应该就能正常构建了。
内容的提问来源于stack exchange,提问作者Mizlul
相关产品推荐
相关产品推荐

