일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 안드로이드 리싸이클러뷰
- MVVM
- 안드로이드 아키텍처 컴포넌트
- RxJava
- 안드로이드 mvvm예제
- 안드로이드 앱 아키텍처 가이드라인 예시
- 안드로이드 의존성주입
- 코루틴
- 안드로이드 Espresso
- 안드로이드 앱 아키텍처 가이드라인
- 스타트업 코딩테스트
- 안드로이드 hilt
- 안드로이드 클린 아키텍처
- 안드로이드 JUnit
- Hilt
- android DI
- Android App Architecture Guideline
- android clean architecture
- Koin
- 안드로이드 테스트코드
- sharedFlow
- 안드로이드 앱 아키텍처 가이드라인 설명
- Android MVVM
- 리싸이클러뷰 최적화
- android memory leak
- coroutine
- 안드로이드 mvvm
- 안드로이드 최적화
- 안드로이드 앱 아키텍처 가이드라인 사용법
- 안드로이드 Mockito
- Today
- Total
안드로이드 연구소
[안드로이드 개발 공식 가이드라인] 안드로이드 아키텍처 컴포넌트 본문
지난 게시물에서 MVVM이
왜 많은 안드로이드이 선택하게되었는지 알아보았다.
간단히 말하면 구글에서 안드로이드 아키텍처 컴포넌트(줄여서 AAC)라는 걸 내놓았는데
MVVM과 찰떡궁합이였기 때문이었다.
그렇다면 구글에서는 안드로이드 아키텍처 컴포넌트를 왜 발표하였을까?
Q1. ChatGPT, 구글은 왜 안드로이드 아키텍처 컴포넌트를 만들게된 배경에 대해서 말해줘.
안드로이드 아키텍처 컴포넌트가 출시되기 전에는
Android 앱을 설계하는 공식 권장 방법이 없었으며
개발자는 종종 MVP, MVC 등과 같은 다양한 패턴을 사용했습니다.
Android 앱의 복잡성이 증가함에 따라
코드베이스를 관리하고 안정성과 신뢰성을 보장하기가 더 어려워졌습니다.
또 복잡한 사용자 인터페이스를 처리하고,
데이터 지속성 및 동기화를 관리하고,
이벤트 및 백그라운드 작업을 처리할 수 있는 필요성 느꼈습니다.
이제는 표준화된 접근 방식의 필요성이 점점 더 분명해졌습니다.
안드로이드 아키텍처 구성요소는 2017년 Google에 도입되어서
개발자가 확장성, 유지 관리 및 테스트 가능성이 더 높은 앱을 설계하는 데
사용할 수 있는 일련의 빌딩 블록 및 가이드라인을 제공하여 이러한 문제를 해결하도록 설계되었습니다.
이러한 구성 요소에는 DataBinding, LiveData, ViewModel, Room, Paging 등이 있습니다.
소개된 이후 Android 아키텍처 구성 요소는
Android 개발자 사이에서 점점 더 인기를 얻었으며 Android 앱 개발에 널리 사용됩니다.
2017년 이전에는 구글에서 제안한 안드로이드 설계 가이드라인이 존재하지 않아서
커져가는 코드를 설계관점이나 성능적으로 관리하기가 어려웠고
앱 개발을 위한 새로운 기능들이 많이 필요한 시점이었네요.
이를 보고만 있을 수 없었던 구글은 2017년 중구난방으로 작성되던 안드로이드 설계 방법을
안드로이드 아키텍처 컴포넌트라는 안드로이드 개발 가이드라인을 제안하여
- 커져가는 코드를 유지 보수가 쉽고
- 테스트 가능성을 높였고
- 앱개발에 필요한 신기능들을 추가하였습니다.
우리는 어떤것들이 있는지 한번 알아보겠습니다.
Q2. 그렇다면 안드로이드 아키텍처 컴포넌트에는 어떤 것들이 있는지 말해줘.
DataBiding: UI 컴포넌트를 앱 아키텍처의 데이터 소스에 바인딩할 수 있는 라이브러리입니다
LiveData: 데이터가 변경될 때 관찰자에게 알리는 관찰 가능한 데이터 홀더
ViewModel: UI 관련 데이터를 관리하고 구성 변경을 유지하는 수명 주기 인식 구성 요소입니다.
Lifecycle: 앱 구성 요소의 수명 주기를 관리하기 위한 일련의 클래스 및 인터페이스를 제공하는 라이브러리입니다.
Room: SQLite의 전체 기능을 제공하면서 보다 강력한 데이터베이스 액세스를 허용하는 라이브러리입니다.
Paging: 대규모 데이터 세트를 통해 페이징 구현을 단순화하는 라이브러리입니다.
ViewBinding: 개발자가 findViewById를 사용하지 않고도 뷰와 상호 작용하는 코드를 보다 쉽게 작성할 수 있는 기능입니다.
Navigation: 앱 내 탐색 구현을 단순화하는 라이브러리입니다.
WorkManager: 지연 가능한 비동기 작업을 예약하는 간단하고 일관된 방법을 제공하는 라이브러리입니다.
Security: 앱 데이터 및 사용자 개인 정보를 보호하는 기능을 제공하는 라이브러리 집합입니다.
App Startup: 시작 시 앱의 구성 요소를 초기화하는 일관되고 안정적인 방법을 제공하는 라이브러리입니다.
저도 ViewBinding을 많이 사용하고 있었는데도 AAC에 포함되어있는지 몰랐네요.
이만큼 우리도 모르게 이미 안드로이드 개발에 많이 스며 들었네요.
DataBiding, LiveData, ViewModel은 MVVM아키텍처를 만드는데 너무나 기본이 되는 요소들입니다.
Lifecycle, Room, Paging 기존 안드로이드에서 할 수 없었던 던 장벽을 허물어준 신기술 같은 요소들입니다.
그 외 Navigation, WorkManager, Security, App Startup등은 저도 처음들 보는 것들이네요.
우선 가장 근간이 되는 DataBiding, LiveData, ViewModel 세 요소를 사용해서 MVVM의 패턴을 적용한 샘플을 만들어보겠습니다.
그 다음 Lifecycle, Room, Paging을 적용해보도록 하겠습니다.
그 외에 요소들은 시간이 남으면 다루어 보겠습니다.
그렇다면 이제 본격적으로 AAC를 사용하여서 MVVM만들어볼까요?
'안드로이드 연구소 > MVVM+AAC' 카테고리의 다른 글
[MVVM만들기] Lifecycle (1) | 2023.05.15 |
---|---|
[MVVM만들기] http통신(Retrofit2) (0) | 2023.05.12 |
[MVVM만들기] DataBinding (0) | 2023.05.12 |
[MVVM만들기] ViewModel + LiveData (0) | 2023.05.12 |
[안드로이드 개발 공식 가이드라인] 왜 구글은 안드로이드에서 MVVM을 사랑하였는가? (0) | 2023.05.11 |