https://medium.com/androiddevelopers/jetpack-compose-before-and-after-8b43ba0b7d4f
... 인용글의 하단
과일 비유는 제쳐두고, 저에게 가장 큰 시사점은 Compose가 대부분의 개발자 메트릭에 긍정적인(또는 중립적인) 영향을 미칠 것이라는 것입니다. 이를 염두에 두고 Compose를 사용하여 개발자 생산성이 크게 향상됨에 따라 Compose가 Android에서 UI 개발의 미래라는 것은 당연하게 느껴집니다.
...
다른 이야기는 다 접어두고 라도... 인용글의 마지막 부분에 있는 저 문장 (개발자 생산성이 크게 향상됨에 따라 Compose가 Android 에서 UI개발의 미래라는 것은 당연하게 느껴진다.) 때문에 라도...
새로 배워야할 것만 같다.
여태 만들어 왔던 앱들은 layout 기반에서 UI을 구현하다 보니... 나름의 편리함(?)도 있기는 했으나, 그 안에서만 구현을 해 왔던 것이다. 그래서 다이나믹 하고 유연한 UI구현은 좀 어렵지 않나 하는 생각이 든다.
물론 그것이 나쁘다거나, 그런 건 아니다. 다만, 앞으로 가는 길에 도움이 되려면 새로운 것들에 대한 도전(?)을 해야 한다는 것이지...
그러다 보니, 난 아직도 내가 그리는 화면들이 그렇게 퀄리티 있어 보이지 않는 다는 것에 동의 한다. 구글링 만으로 배워 보기에는 아직 무리수가 있는 것 같기는 하다.
그래도 이제라도 배워 봐야 겠다.
안드로이드 개발자 가이드에서 퍼옴...
Jetpack 라이브러리 모든 라이브러리 탐색
* 인기 있고 자주 사용하는 라이브러리가 먼저 나열됩니다.
activity * | Activity에 기반하여 빌드된 구성 가능한 API에 액세스합니다. |
appcompat * | 이전 API 버전의 플랫폼에서 새 API에 액세스할 수 있습니다(대부분 머티리얼 디자인 사용). |
appsearch * | 사용자를 위한 맞춤 인앱 검색 기능을 빌드합니다. |
camera * | 모바일 카메라 앱을 빌드합니다. |
compose * | 모양과 데이터 종속 항목을 설명하는 구성 가능한 함수를 사용하여 프로그래매틱 방식으로 UI를 정의합니다. |
databinding * | 레이아웃의 UI 구성요소를 선언적 형식을 사용하여 앱의 데이터 소스에 결합합니다. |
fragment * | Activity 내에서 호스팅되는 여러 개의 독립적인 화면으로 앱을 분할합니다. |
hilt * | Dagger Hilt의 기능을 확장하여 androidx 라이브러리에서 특정 클래스의 종속 항목 삽입을 사용 설정합니다. |
lifecycle * | 활동이나 프래그먼트의 현재 수명 주기 상태를 기반으로 동작을 조정할 수 있는 수명 주기 인식 구성요소를 빌드합니다. |
Material Design Components * | 맞춤설정이 가능한 Android용 모듈식 머티리얼 디자인 UI 구성요소입니다. |
navigation * | 인앱 UI를 빌드 및 구조화하고 딥 링크를 처리하며 화면 간에 이동합니다. |
paging * | 페이지에 데이터를 로드하여 RecyclerView에 표시합니다. |
room * | SQLite 데이터베이스에서 지원하는 영구 데이터를 생성, 저장 및 관리합니다. |
test * | Android에서 테스트합니다. |
work * | 지연 가능한 제약 조건 기반 백그라운드 작업을 예약하고 실행합니다. |
ads | Play 서비스 유무에 관계없이 광고 ID를 가져옵니다. |
annotation | 도구 및 다른 개발자가 앱의 코드를 이해하는 데 도움이 되는 메타데이터를 노출합니다. |
arch.core | LiveData와 함께 사용할 수 있는 JUnit 테스트 규칙을 포함한 다른 arch 종속 항목의 도우미입니다. |
asynclayoutinflater | 레이아웃을 비동기식으로 확장하여 UI에서 버벅거림을 방지합니다. |
autofill | 확장 힌트를 통해 자동 완성 정확도를 개선합니다. |
benchmark | Android 스튜디오 내에서 코드 성능을 정확하게 측정합니다. |
biometric | 생체 인식 또는 기기 사용자 인증 정보로 인증하고 암호화 작업을 실행합니다. |
browser | 사용자의 기본 브라우저에 웹페이지를 표시합니다. |
car-app | Android Auto용 내비게이션, 주차, 충전 앱을 빌드합니다. |
cardview | 둥근 모서리와 그림자로 머티리얼 디자인 카드 패턴을 구현합니다. |
collection | 크기가 작은 기존 컬렉션 및 새로운 컬렉션이 메모리에 미치는 영향을 줄입니다. |
compose.animation | Jetpack Compose 애플리케이션에서 애니메이션을 빌드하여 사용자 환경에 풍부함을 더합니다. |
compose.compiler | Kotlin 컴파일러 플러그인으로 최적화를 사용 설정하고 @Composable 함수를 변환합니다. |
compose.foundation | 즉시 사용 가능한 구성요소를 사용해 Jetpack Compose 애플리케이션을 작성하고 기초를 확장해 나만의 디자인 시스템 요소를 빌드합니다. |
compose.material | 즉시 사용 가능한 머티리얼 디자인 구성요소로 Jetpack Compose UI를 빌드합니다. 이는 Compose를 고급 수준에서 사용하는 첫 단계이며, www.material.io에 설명된 것과 동일한 구성요소를 제공합니다. |
compose.material3 | 차세대 머티리얼 디자인인 머티리얼 디자인 3 구성요소로 Jetpack Compose UI를 빌드합니다. 머티리얼 3은 업데이트된 테마 설정 및 구성요소, Material You 맞춤설정 기능(동적 색상 등)을 포함하며 새로운 Android 12의 시각적 스타일 및 시스템 UI와 일관되도록 설계되었습니다. |
compose.runtime | Compose의 프로그래밍 모델과 상태 관리를 위한 기본 구성요소 및 타겟팅용 Compose 컴파일러 플러그인 핵심 런타임입니다. |
compose.ui | 레이아웃, 그리기, 입력 등 기기와 상호작용할 때 필요한 Compose UI의 기본적인 구성요소입니다. |
concurrent | 코루틴을 사용하여 작업을 기본 스레드 외부로 이동하고 ListenableFuture를 활용합니다. |
constraintlayout | 상대 위치에 따라 유연한 방식으로 위젯의 위치와 크기를 지정합니다. |
contentpager | 백그라운드 스레드에서 ContentProvider 데이터를 로드하고 페이징합니다. |
coordinatorlayout | AppBarLayout 및 FloatingActionButton과 같은 최상위 애플리케이션 위젯을 배치합니다. |
core | 최신 플랫폼 기능과 API를 타겟팅하는 동시에 이전 기기도 지원합니다. |
cursoradapter | ListView 위젯에 커서 데이터를 노출합니다. |
customview | 맞춤 뷰를 구현합니다. |
Datastore | 비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장하여 SharedPreferences의 일부 단점을 극복합니다. |
documentfile | 파일 문서를 확인합니다. |
draganddrop | 다른 앱 또는 앱 내에서 드래그 앤 드롭 데이터를 허용하고 일관된 드롭 타겟 어포던스를 표시합니다. |
drawerlayout | 머티리얼 디자인 창 위젯을 구현합니다. |
dynamicanimation | 물리학 기반 애니메이션 API를 사용하여 자연스러운 애니메이션을 만듭니다. |
emoji | 현재 및 이전 기기에 이모티콘을 표시합니다. |
emoji2 | 현재 및 이전 기기에 이모티콘을 표시합니다. |
enterprise | 엔터프라이즈 지원 애플리케이션을 만듭니다. |
exifinterface | 이미지 파일 EXIF(데이터) 태그를 읽고 씁니다. |
games | 앱에서 기본적으로 Android 게임 SDK를 사용하여 Frame Pacing과 같은 복잡한 게임 작업을 실행합니다. |
glance | Jetpack Compose 스타일의 API를 사용하여 원격 표면의 레이아웃을 빌드합니다. |
gridlayout | 그리드 레이아웃을 구현합니다. |
health | 플랫폼에 구애받지 않는 방식으로 성능 기준에 적합한 상태 애플리케이션을 만듭니다. |
heifwriter | Android 기기에서 사용 가능한 코덱을 사용하여 이미지 또는 이미지 컬렉션을 HEIF 형식으로 인코딩합니다. |
interpolator | 이전 플랫폼에서 애니메이션 보간기를 사용합니다. |
jetifier | 지원 중단된 라이브러리의 종속 항목을 그에 대응하는 AndroidX 종속 항목으로 이전하는 독립형 도구입니다. |
leanback | D패드에 적합한 위젯과 템플릿 프래그먼트를 사용하여 Android TV 기기용 앱을 개발합니다. |
legacy | 이 아티팩트와 아티팩트의 클래스는 지원 중단되었습니다. Android 8부터 백그라운드 확인 제한으로 인해 이 클래스는 더 이상 유용하지 않습니다. |
loader | 구성 변경 후에도 유지되는 UI 데이터를 로드합니다. |
localbroadcastmanager | 이 아티팩트와 아티팩트의 클래스는 지원 중단되었습니다. 대신 LiveData 또는 반응형 스트림을 사용하세요. |
media | 다른 앱과 미디어 콘텐츠 및 컨트롤을 공유합니다. media2로 대체되었습니다. |
media2 | 다른 앱과 미디어 콘텐츠 및 컨트롤을 공유합니다. |
media3* | 미디어 사용 사례를 위한 지원 라이브러리입니다. |
mediarouter | 일반 사용자 인터페이스를 사용하여 원격 수신 기기에서 미디어 표시 및 재생을 사용 설정합니다. |
multidex | Android 5 이전 기기에 여러 dex 파일이 있는 애플리케이션을 배포합니다. |
측정항목 | 애플리케이션의 다양한 런타임 측정항목을 추적 및 보고합니다. |
palette | 이미지에서 대표적인 색상 팔레트를 추출합니다. |
percentlayout | 이 아티팩트와 아티팩트의 클래스는 지원 중단되었습니다. 대신 ConstraintLayout 및 연결된 레이아웃을 사용하세요. |
preference | 기기 저장소와 상호작용하거나 UI를 관리할 필요 없이 대화형 설정 화면을 빌드합니다. |
앱에서 사진, 문서 및 기타 그래픽과 이미지를 인쇄합니다. | |
profileinstaller | ART에서 읽을 컴파일 추적을 라이브러리가 미리 채울 수 있습니다. |
recommendation | Android TV 런처 홈 화면에 콘텐츠를 홍보합니다. |
recyclerview | 메모리 사용량을 최소화하면서 UI에 많은 양의 데이터를 표시합니다. |
remotecallback | 개발자가 PendingIntent를 더 쉽게 제공할 수 있는 래퍼를 만듭니다. |
resourceinspection | Android 스튜디오의 Live Layout Inspector에 맞춤 뷰 속성을 표시합니다. |
savedstate | 프로세스가 종료되면 UI 상태를 저장하고 프로세스가 다시 시작되면 복원하는 플러그형 구성요소를 작성합니다. |
security | 키를 안전하게 관리하고 파일 및 sharedpreference를 암호화합니다. |
sharetarget | 바로가기를 직접 공유 타겟으로 사용하기 위해 이전 버전과의 호환성을 제공합니다. |
slice | 앱 외부에 템플릿 UI 요소를 표시합니다. |
slidingpanelayout | 슬라이딩 창 UI 패턴을 구현합니다. |
startup | 앱을 시작할 때 구성요소를 초기화하는 간단하고 성능 기준에 부합하는 방법을 구현합니다. |
sqlite | 로컬 SQLite 데이터베이스로 작업합니다. 가능하면 대신 Room을 사용하세요. |
swiperefreshlayout | 스와이프하여 새로고침 UI 패턴을 구현합니다. |
textclassifier | 대화, 링크, 선택 및 기타 유사한 구성을 텍스트로 식별합니다. |
tracing | 시스템 트레이스 버퍼에 트레이스 이벤트를 씁니다. |
transition | 시작 및 종료 레이아웃에서 UI 모션에 애니메이션을 적용합니다. |
tvprovider | Android TV 채널을 제공합니다. |
vectordrawable | 벡터 그래픽을 렌더링합니다. |
versionedparcelable | 프로세스 간에 전달되거나 안전하게 유지될 수 있는 안정적이고 간단한 바이너리 직렬화 형식을 제공합니다. |
viewpager | 스와이프할 수 있는 형식으로 뷰 또는 프래그먼트를 표시합니다. 가능하면 viewpager2를 대신 사용하세요. |
viewpager2 | 스와이프할 수 있는 형식으로 뷰 또는 프래그먼트를 표시합니다. |
wear | Wear OS by Google 스마트시계용 애플리케이션을 만듭니다. |
wear.compose | 웨어러블용 기기, 크기, 모양 및 탐색 동작을 지원하는 기능을 제공하여 웨어러블 기기용 Jetpack Compose 애플리케이션을 작성합니다. |
wear.tiles | Wear OS by Google 스마트시계용 애플리케이션을 만듭니다. |
wear.watchface | Wear OS by Google 스마트시계용 애플리케이션을 만듭니다. |
webkit | Android 5 이상에서 최신 WebView API로 작업합니다. |
window | 폴더블 기기와 같은 다양한 기기 폼 팩터를 지원할 수 있습니다. |
https://developer.android.com/jetpack
하나씩 배워보자. 시간이 걸리더라도...
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 앱 만들기 : Jetpack Compose 와 xml 의 차이 (0) | 2022.04.09 |
---|---|
안드로이드 앱 만들기 : 오늘도 jetpack compose 에 헤메이다... (3) | 2022.04.07 |
안드로이드 앱 만들기 : firebase 의 appcheck 는 뭘까 ? (3) | 2022.03.30 |
안드로이드 앱 만들기 : 인앱 업데이트 는 어떻게 ? (3) | 2022.03.26 |
안드로이드 앱 만들기. 카카오 API V2 로 이전 (8) | 2022.03.21 |