[Android] 2018 Google IO - AndroidX - 새로운 패키지 정리

그동안 com.android.support.* 또는 android.support.*와 작년에 공개한 Android Architecture Component에서 사용하던 android.arch.*의 패키지 명을 안드로이드 라이브러리 28.0.0부터 새로운 androidx.* 패키지 명으로 교체한다고 한다.

Android Jetpack으로 통합해서 제공하려고 하니 기존 support 라이브러리와 architecture 라이브러리 등을 통합 관리해서 정리된 모습을 보여주고 싶은듯하다.

다행히도 이러한 패키지 명을 교체하는데 있어서 개발자가 공들여야 할 부분은 크지 않다.

구글 블로그에서 AndoridX에 대한 자세한 내용 확인이 가능하다.

android-x

AndroidX Refactoring

Android Studio 3.2 이상부터 androidx 패키지 명 대응을 위한 refactoring 도구가 포함되어있다. (이 글을 작성하는 시점에는 일부 오류가 있다고 하는데 다음 Canary 15 이상을 기대하라고 한다.)

Android Studio Refactor > Refactor to AndroidX 메뉴를 통해 한 번에 변환이 가능하다.

refactor-to-andoridx

변경하기 전의 dependencies는 아래와 같다.

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

refactor to AndroidX 후에는 아래와 같이 dependencies 변경이 일어난다.

변경 중 아래와 같은 창이 나타나니 참고 가능하다.

refactor

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
    implementation 'com.google.android.material:material:1.0.0-alpha1'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha1'
}

다만 현재 Canary 인점과 Android 28 Preview 상태인 점에 따라 compile 정보는 아래와 같이 적용해야 하고, 특히 compileSdkVersion 'android-P'을 지정해야 한다.

android {
    compileSdkVersion 'android-P'
    defaultConfig {
        applicationId "com.example.taehwankwon.myapplication"
        minSdkVersion 21
        targetSdkVersion 27
    }
}

변경 예정인 패키지들

AndroidX refactoring에서 변경하는 library 정보를 확인할 수 있다.

com.android.support.*, android.support.*, android.arch.*의 패키지들이 모두 androidx라는 이름으로 교체되며, 기존 중구난방인 버전 정보도 모두 2.0.0-alpha1부터 다시 배포된다.

package-change

그리고 기존 패키지에 대한 맵핑도 androidx로 교체하는 게 있으니 위 링크를 확인하면 되겠다.

class-mappings

마무리

AndroidX 패키지 명 교체하는 방법을 간단하게 확인하였다, 자세한 내용은 refactoring 링크를 통해 어떠한 패키지가 변경되어있는지 확인하길 바란다.