添加新Activity后触发:app:processDebugManifest任务执行失败求助
解决Manifest合并时的Support库版本冲突问题
这个问题我太熟悉了——就是不同依赖库引用了不同版本的Android Support库,导致Manifest合并时出现版本值冲突。下面给你几个可行的解决思路:
1. 统一所有Support库的版本(最推荐)
这是从根源上解决问题的方法,能避免后续再出现类似冲突。你可以在Module级别的build.gradle里用一个变量统一管理Support库的版本:
// 在文件开头定义版本变量 ext { supportLibVersion = '26.1.0' // 选一个你想用的版本,这里用冲突里的高版本示例 } dependencies { // 所有Support库都用这个变量引用 implementation "com.android.support:design:${supportLibVersion}" implementation "com.android.support:support-v4:${supportLibVersion}" // 其他比如appcompat-v7、recyclerview-v7等也统一用这个版本 }
这样所有依赖的Support库版本就一致了,Manifest自然不会再出现冲突。
2. 用tools:replace强制指定版本
如果暂时不想统一版本,可以通过Manifest的tools:replace属性强制覆盖冲突的meta-data值:
首先,在Manifest的根标签里添加tools命名空间(如果还没加的话):
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名">
然后在Manifest里添加对应的meta-data标签,强制指定你想要保留的版本:
<meta-data android:name="android.support.VERSION" android:value="26.1.0" <!-- 这里填你要保留的版本值 --> tools:replace="android:value" />
这样Manifest合并时就会用你指定的版本覆盖冲突的条目。
3. 排查并排除冲突的依赖
如果是新添加的Activity引入的第三方库带来了高版本的support-v4,你可以找到那个库,排除它自带的support-v4引用,让它使用项目里统一的版本:
比如假设新引入的库是com.example:some-library:1.0.0,就在build.gradle里这样写:
implementation('com.example:some-library:1.0.0') { exclude group: 'com.android.support', module: 'support-v4' }
这样这个第三方库就会使用你项目中已有的support-v4版本,不会再引入冲突的版本。
内容的提问来源于stack exchange,提问作者troubledcoder
相关产品推荐
相关产品推荐

