android v4 v7問題

一.v4包與V7包的介紹
1.android-support-v4 是谷歌推出的兼容包,最低兼容Android1.6的系統,裏面有相似ViewPager等控件。ViewPager在Android 1.6如下的版本是不自帶的,因此要實現ViewPager須要使用v4包中的ViewPager。還有v4 的fragment。android

2.android-support-v7是谷歌推出的版本兼容包,最低兼容Android2.1的系統,這個包一般和appcompat-v7這個工程一塊兒使用。 
appcompat-v7這個工程可讓開發者統一開發,在任何系統版本下保證兼容性。涉及的內容有Theme,value,佈局,新的控件,新的動畫實現方式,api

特別注意: 
包含了support-v4的所有內容,開發Android工程時,要兼容低版本都要導入v7工程。app

android studio在建立工程的時候默認導入了v7工程,而且將style使用了兼容style,給開發者提供了極大的方便。而且最新的v7包增長了不少material design的兼容類和素材,請及時更新。ide

3.android-support-v13是谷歌推出的版本兼容包,最低兼容Android3.2的系統。當初是爲了開發平板作設計的。(價值不大)佈局

v7版本適用於任何版本的開發,保證了兼容性,因此在使用的時候必定要採用。gradle

compile ‘com.android.support:appcompat-v7:27.0.2’ 
testCompile ‘junit:junit:4.12’動畫

二.v4包與v7包的衝突解決
1.在實際項目中常見此類錯誤: 
Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’. 
com.Android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException:ui

Jar包衝突,而後看了一下,項目庫中的libs下,依賴了一個v4的jar包,而主工程中又依賴了一個v7的庫而致使的衝突 
(有時候,就是引入的第三依賴裏,引入的v4與你引入的衝突,或者v7, 
還有時候,你引入的工程依賴,裏,也有v4,注意你要將他們保持版本同樣)設計

解決方式一:
因爲項目中的v4 jar通常比較舊,因此果斷將v4包從libs目錄下刪除,從新添加在線的依賴庫v4包,在build.gradle中添加依賴:orm

compile ‘com.android.support:support-v4:27.0.2’

注意此時的v4包的版本號要和主工程module的v7包的版本要一致,(通常狀況下相同版本的依賴包不會衝突),而後從新build工程就ok了

解決方式二:(也使用第三方其餘依賴重複引用v4)
不用刪除項目庫中的V4包,直接在主工程Module的build.gradle文件中添加以下:

compile(‘com.android.support:appcompat-v7:27.0.2’) { 
exclude module: ‘support-v4’ 

//compile ‘com.android.support:support-v4:27.0.2’ 
compile ‘com.android.support:appcompat-v7:27.0.2’ 
apt ‘com.zhy:mpermission-compiler:1.0.0’//鴻神 權限管理 
//鴻神 權限管理 v4衝突了 
compile(‘com.zhy:mpermission-api:1.0.0’) { 
exclude module: ‘support-v4’ 

默認狀況下v7中是包含V4包的,exclude 的意思就是從v7包中去除v4包這樣就能夠解決衝突了…

項目中,最好,用依賴,不用jar包;  

相關文章
相關標籤/搜索