Android 앱 개발을 위한 Google의 UI 도구 키트인 Jetpack Compose가 이제 알파 버전입니다. Android의 표준 뷰와 완벽하게 상호 운용됩니다.
앱을 개발할 때 다양한 방법이 있습니다. 개발할 플랫폼, 사용하려는 프로그래밍 언어 등을 선택할 수 있습니다.
2019년 가을, 구글은 소개 Kotlin을 사용하여 Android에서 UI를 구축하기 위한 새로운 프레임워크입니다. 지금까지는 잦은 주요 변경 사항과 수많은 누락된 기능이 있는 개발 단계에 있었습니다. 하지만 오늘 Google은 Jetpack Compose를 알파 릴리스 상태로 푸시했습니다. 이는 프로덕션 품질 프로젝트에 사용되는 데 한 단계 더 가까워졌다는 의미입니다.
Jetpack Compose란 무엇인가요?
Android 앱을 구축할 때 일반적으로 처리해야 할 두 가지 주요 구성 요소가 있습니다. 즉, 논리 기반 항목의 경우 코드입니다. 레이아웃의 경우 XML입니다. 기본적으로 Android는 코드에는 Java를 사용하고 레이아웃에는 자체 XML 태그 세트를 사용합니다.
많은 사람들에게 Java와 XML은 괜찮습니다. 특히 단순한 앱의 경우 더욱 그렇습니다. 그러나 두 시스템 모두에는 한계와 성가심이 있습니다. Kotlin이 도입되면서 공식적인 (및 권장) Android 개발용 언어를 사용하게 되면서 Android 앱을 만드는 코딩 측면이 훨씬 쉬워졌습니다. 내장된 Null 보호 및 확장 기능과 같은 Kotlin의 편리한 기능을 사용하면 코드가 더욱 깔끔하게 보이고 읽기 쉬워집니다.
하지만 Kotlin은 Android의 레이아웃에서 아무것도 변경하지 않았습니다. 복잡한 레이아웃을 만들려면 여전히 XML 파일을 만들고 거기에서 디자인해야 했습니다. 여기에는 코드와 XML 간의 본질적인 분리를 포함하여 몇 가지 주목할만한 단점이 있습니다. 예를 들어, 코드에 상수 문자열이 있는 경우 XML에서 이를 참조할 수는 없으므로 해당 문자열이 코드에서 변경되면 XML에서도 이를 업데이트해야 한다는 것을 기억해야 합니다.
Jetpack Compose를 입력하세요. 이는 점점 더 복잡해지는 Android의 XML 레이아웃 디자인 프로세스에 대한 Google의 답변입니다. 앱의 UI를 XML로 디자인하는 대신 코드에서 바로 디자인할 수 있습니다. 코드 기반 레이아웃을 생성할 수는 있지만 일반적으로 XML보다 유지 관리가 어렵고 쉽게 손상되는 라이브러리가 포함됩니다. 반면 Compose는 Kotlin 내에서 바로 작동하도록 설계되었습니다. 더 이상 XML이 필요하지 않습니다.
Jetpack Compose는 또한 XML 레이아웃의 표준 명령형 디자인에서 상당히 급진적으로 벗어났습니다. 대신 개발자에게 해당 논리를 구현하는 대신 데이터가 변경될 때 자체적으로 업데이트되는 선언적 레이아웃이 있다는 점에서 React 또는 Flutter와 더 유사합니다.
지원되는 것
Jetpack Compose는 현재 알파 버전입니다. 그게 무슨 뜻이에요? 글쎄, 많은 것들이 있습니다.
뷰와의 상호 운용성
Kotlin이 Java와 완벽하게 상호 운용 가능한 것처럼 Jetpack Compose도 Android의 표준 뷰와 완벽하게 상호 운용 가능합니다. 이것은 꽤 많은 것을 의미합니다.
우선, 원하는 경우 Jetpack Compose로 마이그레이션하는 것이 훨씬 더 쉬울 것입니다. 모든 맞춤 뷰와 레이아웃을 컴포저블로 변환할 필요 없이 Compose에서 새 레이아웃과 구성요소를 만들 수 있습니다. '레거시' 뷰를 사용하는 라이브러리가 있지만 앱이 Compose로 설계되었나요? 괜찮아요. 뷰를 컴포저블 함수에 바로 추가할 수 있습니다. 아직 Compose로 전환하지 않았지만 컴포저블을 사용하는 라이브러리를 사용하고 싶으신가요? 이번에도 문제 없습니다. 컴포저블을 레이아웃에 바로 넣기만 하면 됩니다.
테마 설정은 레이아웃 상호 운용성만큼 플러그 앤 플레이가 아닙니다. 하지만, 구글이 도서관을 만들었어요 표준 XML 테마를 Compose 호환 테마로 조정하여 중앙 집중화를 유지하고 중복을 방지하는 데 도움이 됩니다.
애니메이션
Jetpack Compose가 Android의 View 프레임워크와 마찬가지로 애니메이션을 지원한다는 점을 제외하면 여기서는 할 말이 많지 않습니다. 마음껏 이동하고, 크기를 조정하고, 회전할 수 있습니다.
게으른 목록
게으른 목록은 기본적으로 RecyclerView의 Compose 버전입니다. 필요한 만큼만 항목을 배치하여 RAM을 절약하고 성능을 향상시킵니다. 물론 Compose이므로 목록을 구현하는 것이 훨씬 더 간단합니다.
제약 레이아웃
Android에서 가장 강력한 뷰 중 하나는 ConstraintLayout입니다. 이를 통해 하위 뷰를 서로 상대적으로 배치하고 크기를 지정하고 가중치를 부여하는 동시에 특정 애니메이션을 더 쉽게 만들 수 있습니다. Compose에서 이 기능이 손실될까봐 걱정되셨다면 걱정하실 필요가 없습니다. 이 기능도 여기에 있기 때문입니다.
머티리얼 UI 구성요소
또 다른 강력한 뷰 세트는 Google의 Material Components 라이브러리입니다. 여기에 있는 대부분의 내용은 기본 보기 프레임워크에서 찾을 수 있는 표준 보기 및 레이아웃입니다. 그러나 추가 기능을 제공하고 테마 지정을 더 쉽게 만들기 위해 조정되거나 래핑되었으며 Compose에도 적용되었습니다.
테스트
앱 개발에서 중요한 부분은 앱을 테스트하는 것입니다. 간단한 앱의 경우 앱을 설치하고 사용하여 수동으로 이 작업을 수행할 수 있습니다. 그러나 더 복잡한 프로젝트는 대부분의 어려운 작업을 수행하는 자동화된 테스트 프레임워크를 통해 큰 이점을 얻을 수 있습니다. Jetpack Compose는 자동화된 테스트를 지원하므로 앱을 최대한 안정적으로 만들 수 있습니다.
접근성 기능
접근성은 우리 사회의 중요한 부분입니다. 우리 기술에 접근성 기능이 없다면 많은 사람들은 휴대폰, 텔레비전 등이 제공하는 혜택을 누릴 수 없게 될 것입니다. Jetpack Compose는 아직 알파 버전이므로 접근성 지원이 완전하지 않습니다. 하지만 Google에서는 개발 중에 이를 염두에 두고 있으며 기본적인 지원은 이미 제공되어 있습니다.
안드로이드 스튜디오
하지만 Jetpack Compose의 모든 기능이 Jetpack Compose 자체에 포함되어 있는 것은 아닙니다. Android Studio와 Kotlin에는 더 쉬운 구성을 위한 플러그인과 확장 기능도 있습니다.
Kotlin 컴파일러 플러그인
Kotlin JVM과 마찬가지로 Android Studio에는 Compose 함수를 Android가 실제로 이해하고 따를 수 있는 코드로 적절하게 변환하는 컴파일러 플러그인이 있습니다.
대화형 미리보기
표준 XML 레이아웃과 마찬가지로 Android Studio에는 Jetpack Compose용 레이아웃 미리보기가 함께 제공됩니다. 현재는 일부 측면에서 XML 미리보기만큼 편리하지는 않지만 미리보기를 업데이트하고 전용 미리보기 기능을 만듭니다. 여기에는 한 가지 주목할만한 이점이 있습니다. 바로 대화형입니다. 미리보기.
대화형 미리보기는 일반적인 미리보기일 뿐이지만 인터렉티브. 미친, 나도 알아. 하지만 이것이 의미하는 바는 실제로 텍스트 상자에 텍스트를 입력하고, 버튼을 클릭하고, 컴포저블을 배포하지 않고도 컴포저블과 상호작용할 수 있다는 것입니다.
단일 컴포저블 배포
실제 장치에서 레이아웃이 어떻게 작동하는지 확인하기 위해 실제로 레이아웃을 배포(예: 설치)하려는 경우 이 기능이 도움이 될 수 있습니다. 일반 XML 레이아웃을 사용하면 레이아웃이 실제 세계에서 어떻게 작동하는지 확인하려면 전체 앱을 빌드하고 설치해야 합니다. 테스트하려는 레이아웃이 기본 화면에 없으면 해당 레이아웃에 도달하기 위해 많은 탭을 수행했을 수 있습니다.
그리고 바로 여기에서 단일 컴포저블만 배포하는 기능이 활용됩니다. 앱을 빌드하고 설치한 다음 테스트 중인 레이아웃으로 이동할 필요 없이 레이아웃을 배포하기만 하면 됩니다. Android 스튜디오는 배포한 컴포저블을 표시하는 래퍼 활동을 생성하고 엽니다. 이를 통해 테스트 및 설계가 훨씬 더 빨라질 수 있으며 요소 상호 작용과 관련된 문제를 격리하는 데에도 도움이 될 수 있습니다.
코드 완성
귀하의 IDE에 코드 완성 기능이 없다면 IDE이기도 합니까? 아뇨. 아뇨, 그렇지 않아요. 따라서 Android Studio는 Jetpack Compose의 전체 코드 완성을 지원합니다.
이것이 Jetpack Compose가 제공하는 전부는 아니지만 위의 기능과 동작은 Google이 이 프레임워크를 얼마나 강력하게 원하는지 보여줍니다. 그리고 아직 알파 단계이지만 이전의 "개발" 상태보다 한 단계 앞서 있습니다. 저처럼 Jetpack Compose 사용을 미루고 계셨다면, 이제 다시 시도해 볼 시간이 될 것입니다.