刚刚在写自己的应用后台管理APP,在设计界面的时候想到可以用CardView去做效果,于是就开始从项目管理里面去依赖,然后悲剧发生了。
1,报错日志:
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.0-alpha1) from [com.android.support:cardview-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38
is also present at [com.android.support:design:25.3.1] AndroidManifest.xml:27:9-31 value=(25.3.1).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:22:5-24:41 to override.
思考:
大概意思是CardView中能在这个25.3.1的版本里面使用。
2,查找原因:
在搜索引擎上面飞速搜索了一下,发现没有案例说这事,难道问题太基础了?
看了自己的配置文件:
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:cardview-v7:26.0.0-alpha1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
compile 'com.jakewharton:butterknife:8.4.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.google.code.gson:gson:2.8.0'
compile 'org.greenrobot:eventbus:3.0.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'io.reactivex:rxjava:1.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
看了语法并没有错,也确实可以依赖进来。
然后仔细思考了一下,会不会是要跟support包一致才可以。
3,解决问题
于是马上行动:
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
//compile 'com.android.support:cardview-v7:26.0.0-alpha1'
compile 'com.android.support:cardview-v7:25.3.1'
略
Sync Now
编译通过。
4,总结:
所以还真有必须基于support包来依赖的官方包。
涨知识了。