Manifest合并失败:版本冲突导致构建任务执行失败求助
解决Manifest合并失败:Support库版本冲突问题
嘿,我之前也碰到过一模一样的问题!这是因为你的项目里引入的不同Android Support库版本不统一,导致Manifest合并时,两个库的android.support.VERSION元数据“打架”了——一个是26.0.2,一个是26.1.0,系统不知道该优先用哪个。
给你两个可行的解决办法,第二个更推荐,能从根源上避免这类问题:
方法一:按提示用tools:replace强制覆盖
直接修改你的AndroidManifest.xml:
- 先在根
<manifest>标签里添加tools命名空间,否则会报命名错误:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" <!-- 添加这行 --> package="你的应用包名"> - 在
<application>标签里添加(或修改已有的)meta-data标签,指定你要保留的版本并强制覆盖冲突值:
这样Manifest合并工具就会用你指定的版本值,覆盖掉其他依赖库带来的冲突值。<application ...> <!-- 其他原有内容 --> <meta-data android:name="android.support.VERSION" android:value="26.1.0" <!-- 建议选较高的版本,比如这里的26.1.0 --> tools:replace="android:value" /> </application>
方法二:统一所有Support库的版本(更推荐)
这种方法能从根源上解决版本不一致问题,后续升级维护也更省心:
- 打开项目根目录的
build.gradle文件(注意是根目录的,不是单个module下的),在buildscript块里定义统一的Support库版本:buildscript { ext { support_lib_version = '26.1.0' // 把所有Support库统一用这个版本 } repositories { google() jcenter() } // 其他原有配置... } - 打开module下的
build.gradle,把所有Support库的依赖都换成用这个变量引用:
同步一下项目,所有Support库就都是同一个版本了,自然不会再出现Manifest合并冲突。dependencies { implementation "com.android.support:support-v13:$support_lib_version" implementation "com.android.support:design:$support_lib_version" // 其他所有com.android.support开头的依赖都按这个格式修改 }
另外提一句,如果你的项目已经具备迁移条件,更建议直接切换到AndroidX——把所有旧的Support库换成AndroidX依赖(比如androidx.appcompat:appcompat:1.6.1这类),AndroidX本身做了版本统一优化,能彻底避免旧Support库的版本问题。
内容的提问来源于stack exchange,提问作者ansar abbas
相关产品推荐
相关产品推荐

