/ KOTLIN

번역: 코틀린 안드로이드 익스텐션의 미래 (The Future of Kotlin Android Extensions)

Android Developers Blog의 The Future of Kotlin Android Extensions를 번역한 글로, 원문의 의미를 크게 벗어나지 않는 수준의 의역 및 부가 설명이 포함되어 있습니다.

2017년에 출시된 코틀린 안드로이드 익스텐션 (kotlin-android-extensions) 플러그인 (Android KTX와 혼동하지 마세요!)은 안드로이드 앱 개발을 더욱 편리하게 해주는 기능을 제공합니다. 이 플러그인에서 제공하는 기능은 다음과 같습니다.

  • Synthetics: kotlinx.android.synthetic 바인딩을 통해 findViewById()를 대체할 수 있습니다.
    • 역주: XML 레이아웃에 선언된 뷰의 ID를 직접 코드에서 참조하는 기능입니다. 자세한 내용은 이전 포스트를 참고하세요.
  • Parcelize: @Parcelize 어노테이션을 통해 복잡한 코드 없이 Parcelable 인터페이스를 손쉽게 구현할 수 있습니다.
    • 역주: 액티비티/서비스 등 안드로이드 내 컴포넌트에서 복잡한 형태의 데이터를 전달하려면 Parcelable 인터페이스를 구현해야 합니다. Parcelable 인터페이스는 객체를 해체/조립하는 코드를 포함하기에, 이를 수동으로 구현시 구현 과정에서 버그가 생기기 쉽습니다.

그 이후로, 안드로이드 팀은 안드로이드 빌드 도구와 밀접하게 통합되어 있으면서도 코틀린 synthetics (findViewById()를 대체할 수 있는 기능)과 동일한 기능을 수행할 수 있는 안드로이드 뷰 바인딩 (View Binding)을 출시하였습니다.

코틀린 Synthetics 기능을 대체할 수 있는 뷰 바인딩 라이브러리를 출시한 이후에도, 같은 플러그인 내에 포함되어 있는 Parcelize 기능은 여전히 사용을 권장하고 있었습니다. (역주: 때문에, Synthetics 기능을 사용해 오던 기존 사용자들은 View Binding으로 교체하는 대신 기존 구현을 그대로 유지할 수 있었습니다)

그러는 사이에 Synthetics 기능의 몇몇 단점이 부각되기 시작했는데요, 그 예는 다음과 같습니다.

  • 전역 (Global) 네임스페이스를 오염 (pollute)시킵니다.
  • 널 여부 (nullability) 정보를 제공하지 않습니다.
  • 코틀린 코드에서만 동작합니다.

젯브레인 팀이 안드로이드 코틀린 익스텐션 플러그인의 개발 주체이기는 하지만, Synthetics 기능의 존치 여부에 따른 장점과 단점에 대해서는 안드로이드 팀도 함께 고민했습니다. API를 가능한 오핸 기간동안 유지보수하는 것도 중요하지만, 모범 사례 (Best Practices)를 제공하여 개발자 분들이 건강한 코드를 작성할 수 있게 함으로써 궁긍적으로 앱 사용자들을 행복하게 해주는 것도 중요하기에, 결코 쉽지 않은 고민이였습니다.

내년 중으로, 안드로이드 및 젯브레인 팀은 새롭게 권장되는 구현인 뷰 바인딩 사용을 장려하기 위해 코틀린 Synthetics 기능을 폐기할 예정입니다. 이와 관련한 구체적인 사항은 다음과 같습니다.

  • Parcelize 기능의 API 및 어노테이션은 유지되므로 계속해서 사용할 수 있습니다. 단, 어노테이션 패키지 이름이 kotlinx.parcelize로 변경되며 android-kotlin-extension 대신 kotlin-parcelize 플러그인을 대신 사용해야 합니다. Parcelize에 대한 추가 내용은 안드로이드 개발자 문서에서 확인할 수 있습니다.
  • Synthetics 기능을 사용하는 중이라면, 이를 View Binding으로 마이그레이션 해야 합니다. 자세한 내용은 마이그레이션 가이드를 참고하세요.

안드로이드 코틀린 익스텐션은 오늘 출시된 코틀린 1.4.20을 시점으로 폐기(deprecated) 처리되며, 2021년 9월 즈음에는 코틀린 릴리즈에서 완전히 제거될 예정입니다. 장기적으로, kotlin-parcelize 플러그인은 지속적으로 유지보수할 예정이므로 플러그인에 문제가 있다면 안드로이드 스튜디오 버그 트래커를 통해 문제를 제보해 주세요!

kunny

커니

안드로이드와 오픈소스, 코틀린(Kotlin)에 관심이 많습니다. 한국 GDG 안드로이드 운영자 및 GDE 안드로이드로 활동했으며, 현재 구글에서 애드몹 기술 지원을 담당하고 있습니다.

Read More