遷移android支持庫到androidx


什么是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來導入。

refs

Androidx初嘗及其新舊包對照表


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM