什么是android支持庫
打開你的Andriod Studio,工程中app模塊的build.gradle拖到底,看到類似這些內容:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support:exifinterface:27.1.1'
implementation 'com.android.support:support-v4:27.1.1'
}
里面帶有com.android.support
字樣的,就是android支持庫(support library)了。
拿最常見的appcompat來說,有-v4和-v7這樣的“版本”信息在,但是又不是SDK version開頭的版本,很暈,對吧?
v4和v7都是為了兼容性考慮的,從android sdk 28開始,又出現了androidx;如果新建的是andriod sdk 29的工程:
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
...
}
那么,還必須把android支持庫都遷移到androidx。
什么時候需要遷移android支持庫到androidx
現在(2020年1月15日)新建的AS工程,默認用的compileSdkVersion 29,這要求必須用androidx而不是android.support:gradle直接報編譯錯誤。
我不想降級compileSdkVersion到27,雖然我知道這很可能是可以解決問題的。為什么不肯將就一下?因為androidx其實就是為了解決android支持庫的v4和v7等一系列頭疼的版本號的問題的。用androidx,代表未來。持續用過時的技術,尤其是google加持的技術,沒有什么好下場的。
怎么從android支持庫遷移到androidx
我們不需要手動修改app的build.gradle中每一個dependencies,Android Studio還沒有那么傻缺。
步驟1:gradle配置
在gradle.properties
中添加:
android.useAndroidX=true
android.enableJetifier=true
步驟2:自動遷移dependencies
Android Studio菜單欄->Refactor->Migrate to AndroidX
會提示確認是否refactor(重構),選擇do refactor,過一會兒就好了。
步驟3:Java代碼遷移到androidx
找到各種import,比如:
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
這幾句現在是報錯狀態,移除它,然后重新alt+enter來導入。