androidv7v4
① 低版本AndroidStudio項目升級到高版本
近一個月來,不管是公司電腦還是個人電腦都換了,然後重新安裝了新的as及相關插件,於是,打開舊項目就有很多問題了,最初是原項目gradle版本過低,新裝的5.4.1,項目中用到的是3.5.3,編譯時老提示最低編譯版本為26,然後又是butterknife版本用了10.2.1,然後提示對應build sdk要用28,於是,又有一大堆問題需要去解決。
這里記錄下 Android 低版本升級到高版本後 的幾個問題及解決方案:
因為太久沒搞android,所以這一問題花了些時間去處理,後來出現了androidx替代v4/v7包,於是找到了對應的解決方案:gradle.properties中增加下面兩句(其實28新建項目會帶有這兩句,只是我這是老項目,所以沒有,需要手動添加)
然後gradle sync,之前用到v4/v7的地方會報錯,這里我也暫時沒啥好方法,只有一個個改,能想到的簡單點的操作有兩點:1.使用ctrl+R替換,2.用alt+enter自動添加import;這里需要注意的是不僅僅是類中需要改,布局文件中,AndroidManifest.xml中也可能要改。
ps: 後來發現這里有比較輕松的解決方法,在gradle和build sdk切換為高版本後使用Migrate to Androidx自動替換v4/v7位androidx, https://www.jianshu.com/p/f7a7a8765294
用@BindView(R .id .xxx)替換,全局替換下即可
這里需要在build.gradle的android節點下增加
以及,Refactor菜單,點擊 Migrate to Androidx ...
這里去掉gradle.properties中的android.useDeprecatedNdk=true,換成在build.gradle中使用cmake即可
在gradle中應用butterknife,應該以下兩句都有
使用 .transition(withCrossFade()) 替代 .crossFade()
其實還有很多其他問題,只是這幾個問題是剛解決的,還留有一些記憶,就先記錄下來,後續再匯總其他問題
2020.05.24 12:03:52
② Android Support v4,v7,v13的區別和應用場景
android support是android的開發兼容包,一定要隨時更新,裡面會有很多新的控制項提供使用。v7自帶v4的包,v13自帶v7的包。比如ViewPager是後面android 11才推出的控制項。低於android11的系統要使用就要採用v4包中的ViewPager,以此類推
v4是最低支持android 4
v7是最低支持android 7
v13是最低支持android 13
③ Android 應用只支持4.0以上還需要support v7兼容包么
若要兼容低版本,則相當於不能使用新版sdk里存在,而舊版本sdk里不存在的內置控制項(一般都在android.widget包里),因為若運行在低版本系統的手機上,會找不到類。
如果想使用怎麼辦呢?這時向下兼容包就發揮作用了,v4的目的是把新的sdk里的控制項和特性帶給1.6+,v7的目的是把新的sdk里的控制項和特性帶給2.1+,這確實是谷歌很負責任的一個行為,要知道iOS就任性的不做向下兼容(要麼你別想用,要麼你給我更新系統!)
建議使用新版sdk的兼容包里的兼容性控制項(一般在android.support.v_.widget包中,兼容包也會跟著sdk內置控制項的特性升級而有所變化,每個版本盡量兼容最新的特性,所以盡量使用跟構建sdk相同版本的兼容包以獲得最多特性支持,可以在對應版本的android SDK的目錄下找到)。
如果基於4.0以上,則兼容包中對應的絕大多數控制項都已經在構建sdk中存在,不需要使用兼容包,畢竟sdk里內置的比support這種為了照顧低版本系統的功能肯定要更強大。
這里說絕大多數,是因為像ViewPager這種常用的控制項確實一直任性的只存在於v4 support中,而原生內置sdk中一直沒有同位體存在。如果你想使用的話還是得引入v4 support(當然也可以去github找個其他的開源實現方式)。
④ Android Support v4,v7,v13的區別和應用場景
android-support-v4 是谷歌推出的兼容包,最低兼容Android1.6的系統,裡面有類似ViewPager等控制項。ViewPager在Android 1.6以下的版本是不自帶的,所以要實現ViewPager需要使用v4包中的ViewPager。其餘控制項同理。
android-support-v7是谷歌推出的版本兼容包,最低兼容Android2.1的系統,這個包通常和appcompat-v7這個工程一起使用。
appcompat-v7這個工程可以讓開發者統一開發,在任何系統版本下保證兼容性。涉及的內容有Theme,value,布局,新的控制項,新的動畫實現方式,包含了support-v4的全部內容,開發Android工程時,要兼容低版本都要導入v7工程。android studio在創建工程的時候默認導入了v7工程,並且將style使用了兼容style,給開發者提供了極大的方便。並且最新的v7包增加了很多material design的兼容類和素材,請及時更新。
android-support-v13是谷歌推出的版本兼容包,最低兼容Android3.2的系統。當初是為了開發平板做設計的。Android 3.x系統都是平板專用系統,但是3.x系統失敗了。所以使用v13的包沒有任何價值。
v7版本適用於任何版本的開發,保證了兼容性,所以在使用的時候一定要採用。
不要再用Eclipse做Android開發,ADT已經沒有更新過了,Android Studio是Android開發的首選工具,支持5.0開發,更好的開發享受。(1.3正式版將會有非常大的變化,非常期待)
⑤ android之AndroidX介紹
Android系統版本不斷地迭代更新,每個版本中都會加入很多新的API進去,但是新增的API在老版系統中並不存在,因此凱襪這就出現了一個向下兼容的問題。
比如,當Android系統發布到3.0版本的時候,突然意識到了平板電腦的重要性,因此為了讓Android可以更好地兼容平板,Android在3.0系統(API 11)中加入了Fragment功能。
但是Fragment的作用並不只局限於平板,以前的老系統中也想使用這個功能該怎麼辦?於是Android推出了Android Support Library,用於提供向下兼容的功能。
比如熟知的support-v4庫,appcompat-v7庫都是盯遲激屬於Android Support Library的。
v4在這里指的是Android API版本號,對應的系統版本是1.6。
support-v4的意思就是這個庫中提供的API會向下兼容到Android 1.6系統。
appcompat-v7指的是將庫中提供的API向下兼容至API 7,也就是Android 2.1系統。
但是慢慢隨著時間的推移,什麼1.6、2.1系統早就已旦嘩經被淘汰了,現在Android官方支持的最低系統版本已經是4.0.1,對應的API版本號是15。
Android團隊也意識到這種命名已經非常不合適了,於是對這些API的架構進行了一次重新的劃分,推出了AndroidX。因此,AndroidX本質上其實就是對Android Support Library進行的一次升級。
升級內容主要在於以下兩個方面:
一個AndroidX完整的依賴庫格式如下所示: