低版本AndroidStudio項目升級到高版本

之前的android個人項目有一年多沒有維護了,盡兩年的重心也主要是小程序開發及.net,.net core相關開發,android從8以後開發比較少了,主要是維護,而因爲電腦一直沒換,所以維護也僅僅是解決部分bug,沒有做大版本升級...

近一個月來,不管是公司電腦還是個人電腦都換了,然後重新安裝了新的as及相關插件,於是,打開舊項目就有很多問題了,最初是原項目gradle版本過低,新裝的5.4.1,項目中用到的是3.5.3,編譯時老提示最低編譯版本爲26,然後又是butterknife版本用了10.2.1,然後提示對應build sdk要用28,於是,又有一大堆問題需要去解決。

Android * IT老五

這裏記錄下Android低版本升級到高版本後的幾個問題及解決方案:

問題一:butterknife10.2.1與android Api 28.0.0 support-v4/v7庫衝突問題

因爲太久沒搞android,所以這一問題花了些時間去處理,後來出現了androidx替代v4/v7包,於是找到了對應的解決方案:gradle.properties中增加下面兩句(其實28新建項目會帶有這兩句,只是我這是老項目,所以沒有,需要手動添加)

android.useAndroidX=true
android.enableJetifier = true

然後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

問題二:butterknife的@Bind(R .id .xxx)找不到

用@BindView(R .id .xxx)替換,全局替換下即可

問題三:java.lang.BootstrapMethodError: Exception from call site #0 bootstrap method問題

這裏需要在build.gradle的android節點下增加

compileOptions{
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

以及,Refactor菜單,點擊Migrate to Androidx...

問題四:Flag android.useDeprecatedNdk is no longer supported and will be removed in the next...

這裏去掉gradle.properties中的android.useDeprecatedNdk=true,換成在build.gradle中使用cmake即可

問題五:butterknife.bind()後,控件對象還是null

在gradle中應用butterknife,應該以下兩句都有

implementation 'com.jakewharton:butterknife:10.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'

問題六:Glide的crossfade沒有該方法

使用 .transition(withCrossFade()) 替代 .crossFade()


其實還有很多其他問題,只是這幾個問題是剛解決的,還留有一些記憶,就先記錄下來,後續再彙總其他問題

個人博客: IT老五 簡書:ThinkinLiu

IT老五(it-lao5):關注公衆號,一起源創,一起學習!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章