一 注意事項:
1.1 遷移前提
- Android Studio build.gradle classpath 3.2.0及以上;
- gradle 插件版本 4.6及以上;
- compileSdkVersion 28及以上;
- buildToolsVersion 28.0.2及以上;
1.2 注意幾個換了名字的依賴庫
com.android.support:design ->
com.google.android.material:material:1.0.0-rc01
com.android.support:support-compat ->
androidx.core:core:1.0.0
二 遷移AndroidX
2.1 遷移AndroidX配置
gradle.properties
#表示當前項目啓用androidx
android.useAndroidX=true
#表示將依賴包也遷移到androidx
android.enableJetifier=true
2.2 Android Studio -> Refactor ->Migrate to AndroidX
後, 全局替換幾個常見的包,其它的地方可以先運行 報錯的地方刪除support依賴,自動導入即可
其次檢查 xml佈局文件和.java/.kt 文件 是否也需要替換,比如含 RecyclerView 、Toolbar、CardView 、Fragment的控件的layout.
import android.support.v7.widget.LinearLayoutManager; ->
import androidx.recyclerview.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView.ViewHolder;->
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
2.3 ButterKnife 處理 參考如下
當ButterKnife8.8.1碰到AndroidX怎麼辦
app/build.gradle
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
//kapt "com.jakewharton:butterknife-compiler:10.0.0" //kotlin
}
2.4 引入第三方的庫 ,其中使用了RecyclerView 、Toolbar、CardView 、Fragment等,
如果後續支持AndroidX的 ,修改一下依賴即可,如
me.yokeyword:fragmentation:1.3.7 ->
me.yokeyword:fragmentationx:1.0.1
如果不支持,需要先下載源碼 再本地依賴,再將該第三方庫 Migrate to AndroidX
如 cn.bingoogolapple:bga-baseadapter:1.2.7@aar
2.5 編譯時依賴庫下載不下來時
可以先在 build.gradle 中添加一個如下aliyun阿里雲Maven倉庫 嘗試一下是否可以解決(跟這個無關的 最好也添加一下這個鏡像,速度會提升不少)
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }