Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- ViewModel
- okHttp
- LRU
- Java
- Kotiln
- Android
- 백준 15686
- 웹 크롤링
- kotlin
- Clean Architecture
- 셀레니움
- TabLayout
- github api
- FragmentStateAdapter
- 데이터바인딩
- python3
- 필답고사
- 안드로이드 플랫폼
- TODO
- RETROFIT
- 안드로이드 API
- gson
- AndroidX
- ViewPager2
- 통계대학원
- Android 컴파일
- RecyclerView
- 수리통계
- Devexpress
- REST API
Archives
- Today
- Total
그냥 가끔의 기록장
[Kotlin] Android 톺아보기 1-2. Android 아키텍처 본문
목차
1-1 Android 개요 https://soeun-87.tistory.com/38
지난글에 이어 계속 안드로이드 숲 보기를 해보자. 간단히 안드로이드의 아키텍처에 대해 알아보자.
1. 안드로이드 아키텍처
(1) 안드로이드 개발부터 앱의 실행까지
- 소스코드 작성
- apk 파일 생성: 여기까지가 Android Studio로 한다.
- 소스코드를 바이트코드 (안드로이드 Runtime이 이해할 수 있는 코드)로 변환 후 APK 매니저에서 키와 조합해 최종 APK 파일(안드로이드 설치 파일의 확장자명)을 생성함 == 빌드
- 여기서 잠깐!!
- 빌드: 소스 코드를 기계어로 변환 후 라이브러리와 연결해 실제 실행 파일로 만드는 과정
- 컴파일: 사람이 읽을 수 있는 소스 코드를 컴퓨터가 읽을 수 있는 기계어로 변환하는 과정
- 안드로이드에서의 빌드
- 안드로이드에서는 컴파일이 두 단계로 구성됨. 1단계는 바이트코드 단계로, 소스 코드와 리소스, 라이브러리까지 한 번에 컴파일 됨 (이때 생성된 파일은 폰에서 바로 실행할 수 없음) 2단계는 1단계에서 생성된 파일로 APK 파일을 생성함 (APK 파일은 폰에서 바로 실행 가능)
- 여기서 잠깐!!
- 소스코드를 바이트코드 (안드로이드 Runtime이 이해할 수 있는 코드)로 변환 후 APK 매니저에서 키와 조합해 최종 APK 파일(안드로이드 설치 파일의 확장자명)을 생성함 == 빌드
- App 업로드 (구글 플레이 스토어에 앱 업로드)
- 앱의 보안 및 동작에 대해 구글이 심사
- App 등록 (구글 플레이 스토어에 앱 등록)
- 사용자 시점: 앱 선택 및 설치
- 구글 플레이 스토어가 접속한 안드로이드 폰의 플랫폼 버전을 확인 후, 설치 가능한 앱 목록만 보여줌
- AOT 컴파일 / 설치 권한 체크: APK 파일 설치 시 리눅스에서 실행 가능한 파일로 사용자의 안드로이드 폰 내부에서 한 번 더 컴파일 함. 이 과정을 통해 실행 속도가 빨라지고, 사용자에게 앱 기능에서 필요한 권한을 요청함
- 사용자 시점: 안드로이드 스마트폰에서 앱 실행
- JIT 컴파일 / 실행 권한 체크
2. Jetpack, View binding, Coroutine 개요
(1) JetPack
- 안드로이드의 모든 버전과 기기에서 일관되게 동작하는 라이브러리
- 장점
- 하위 버전 호환성: 비정상 종료 및 메모리 누수 방지 가능
- 반복되는 코드 제거: 백그라운드 작업, lifecycle 관리 등의 코드 제거
- 낮은 복잡도: 모든 버전 및 기기에서 일관된 동작으로 코드의 복잡도를 낮춤
(2) View Binding
- findViewById()와 코틀린 익스텐션 대체
- Activity, Fragment, Adapter에서 각각 사용법이 다름
// 1. Activity에서 viewBinding
val binding by lazy { 레이아웃파일명Binding.inflate(layoutInflater) }
// 2. Fragment에서 viewBinding
// onCreateView() 안에서 사용
val binding = 레이아웃파일명Binding.inflate(LayoutInflater.from(container.context), container, false)
// 3. Adapter에서 viewBinding
val binding = 레이아웃파일명Binding.inflate(LayoutInflater.from(parent.context), parent, false)
(3) Coroutine
- 동시성 프로그래밍이 가능하며, 하나의 스레드에 여러개의 코루틴이 존재할 수 있어 코루틴이 변경되어도 스레드 변경과 달리 성능저하가 일어나지 않음
안드로이드 개발을 한다했지만, 컴파일이나 빌드단은 잘 몰랐는데 이참에 한번 짚어보고 넘어가니 매우 좋은것 같다. 숲을 대략적으로 아주 아주 간략하게라도 훑고가니 전보다 안드로이드 개발에 흥미가 더 생긴 것 같기도 하고.. 하여튼 꾸준히 책 독파해보자
Reference
- 이것이 안드로이드다 with Kotlin (고돈호 지음, 한빛미디어)
'Android' 카테고리의 다른 글
[Kotlin] Android 톺아보기 1-1. Android 개요 (0) | 2022.09.03 |
---|---|
[Kotlin] Github API를 이용해 예제 App 만들기 - 2-1. RecyclerView로 데이터 보여주기 (0) | 2022.08.04 |
[Kotlin] Github API를 이용해 예제 App 만들기 - 1. Retrofit 정복 (0) | 2022.08.01 |
[Kotlin] Todo 토이 프로젝트 [3단계] (ViewPager2 + RecyclerView + ViewModel) (1) | 2022.04.30 |
[Kotlin] Todo 토이 프로젝트 [2단계] (ViewPager2 + RecyclerView + ViewModel) (0) | 2022.04.23 |
Comments