AndroidX Migration
안드로이드 개발 시 하위 버전 호환성을 유지하기 위해 안드로이드 운영 체제에 포함된 API 및 구글이 제공하는 Support Library의 사용은 필수적입니다.
Figure 1 : Support Library
Support Library는 v4, v7, v13과 같이 명확하지 않은 버전명을 사용해 왔으며, 이는 각각 API 4, 7, 13을 지원함을 의미합니다.
하지만, v13이 v4를 포함하는 업데이트 버전으로 해석될 수 있는 여지가 있으며, 특히 support v4는 24.2.0 버전부터 API 8 이하 지원을 중단하였습니다.
AndroidX
이러한 배경을 기반으로, AndroidX 프로젝트가 등장하였습니다.
AndroidX는 Android 팀이 jetpack 내에서 라이브러리를 개발, 테스트, 패키지화, 버전 관리 및 릴리즈를 용이하게 하기 위해 사용하는 오픈 소스 프로젝트로 기존에 사용 중인 Android Support Library를 크게 개선하여 재구성한 것입니다.
Android의 모든 패키지는 'androidx'라는 문자열로 시작하는 일관된 네임스페이스에 있습니다.
지원 라이브러리 패키지는 상응하는 androidx 패키지에 매핑되어있습니다.
기존 클래스와 빌드 아티팩트를 새로운 클래스와 아티팩트로 완전히 전환하고자 하는 경우, Package Refactoring 페이지를 참조하는 것이 권장됩니다.
AndroidX 패키지는 Android Support Library와는 달리 독립적으로 유지 보수 및 업데이트가 가능합니다.
AndroidX 패키지는 version 1.0.0부터 시작하는 엄격한 Semantic versioning을 사용합니다.
AndroidX 라이브러리를 프로젝트에서 독립적으로 업데이트 할 수 있습니다.
버전 28.0.0은 Android Support Library의 마지막 릴리즈이며, 더 이상의 android.support 라이브러리 릴리즈는 계획되어 있지 않습니다.
새로운 기능 개발은 모두 androidX 네임스페이스 내에서 이루어집니다.
Migrate
Android Studio 3.2 이상 버전에서는 간편하게 마이그레이션을 진행할 수 있는 메뉴를 제공합니다.
Figure 2 : Refector > Migrate to AndroidX
리팩토링 과정에서는 다음 두 가지 플래그가 사용됩니다. 이는 기본적으로 gradle.properties 파일에서 true로 설정됩니다.
android.useAndroidX = true;
Android 플러그인이 지원 라이브러리 대신 적절한 AndroidX 라이브러리를 사용하도록 설정합니다.
android.enableJetifier = true;
Android 플러그인이 기존 타사 라이브러리를 자동으로 AndroidX로 마이그레이션하기 위해 바이너리를 다시 작성하도록 설정합니다.
이는 안드로이드 애플리케이션 개발 과정에서의 효율성과 호환성을 높이는 중요한 단계입니다.
Example
기존 Support Library를 migration 한 예시입니다.