VIZWing Document Help

AndroidX Migration

안드로이드 개발 시 하위 버전 호환성을 유지하기 위해 안드로이드 운영 체제에 포함된 API 및 구글이 제공하는 Support Library의 사용은 필수적입니다.

Figure 1 : Support Library

migration_001.png

    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

    migration_002.png

      리팩토링 과정에서는 다음 두 가지 플래그가 사용됩니다. 이는 기본적으로 gradle.properties 파일에서 true로 설정됩니다.

      android.useAndroidX = true;
      Android 플러그인이 지원 라이브러리 대신 적절한 AndroidX 라이브러리를 사용하도록 설정합니다.

      android.enableJetifier = true;
      Android 플러그인이 기존 타사 라이브러리를 자동으로 AndroidX로 마이그레이션하기 위해 바이너리를 다시 작성하도록 설정합니다.

      이는 안드로이드 애플리케이션 개발 과정에서의 효율성과 호환성을 높이는 중요한 단계입니다.

      Example

      기존 Support Library를 migration 한 예시입니다.

      migration_003.png
        Last modified: 15 7월 2024