그냥 가끔의 기록장

[Kotlin] Android 톺아보기 1-2. Android 아키텍처 본문

Android

[Kotlin] Android 톺아보기 1-2. Android 아키텍처

the phoenix 2022. 9. 6. 00:50

목차

1-1 Android 개요 https://soeun-87.tistory.com/38

 

     지난글에 이어 계속 안드로이드 숲 보기를 해보자. 간단히 안드로이드의 아키텍처에 대해 알아보자.

 

1. 안드로이드 아키텍처

(1) 안드로이드 개발부터 앱의 실행까지

  1. 소스코드 작성
  2. apk 파일 생성: 여기까지가 Android Studio로 한다.
    • 소스코드를 바이트코드 (안드로이드 Runtime이 이해할 수 있는 코드)로 변환 후 APK 매니저에서 키와 조합해 최종 APK 파일(안드로이드 설치 파일의 확장자명)을 생성함 == 빌드
      • 여기서 잠깐!!
        1. 빌드: 소스 코드를 기계어로 변환 후 라이브러리와 연결해 실제 실행 파일로 만드는 과정
        2. 컴파일: 사람이 읽을 수 있는 소스 코드를 컴퓨터가 읽을 수 있는 기계어로 변환하는 과정
      • 안드로이드에서의 빌드
        • 안드로이드에서는 컴파일이 두 단계로 구성됨. 1단계는 바이트코드 단계로, 소스 코드와 리소스, 라이브러리까지 한 번에 컴파일 됨 (이때 생성된 파일은 폰에서 바로 실행할 수 없음) 2단계는 1단계에서 생성된 파일로 APK 파일을 생성함 (APK 파일은 폰에서 바로 실행 가능)
  3. App 업로드 (구글 플레이 스토어에 앱 업로드)
    • 앱의 보안 및 동작에 대해 구글이 심사
  4. App 등록 (구글 플레이 스토어에 앱 등록)
  5. 사용자 시점: 앱 선택 및 설치
    • 구글 플레이 스토어가 접속한 안드로이드 폰의 플랫폼 버전을 확인 후, 설치 가능한 앱 목록만 보여줌
    • AOT 컴파일 / 설치 권한 체크: APK 파일 설치 시 리눅스에서 실행 가능한 파일로 사용자의 안드로이드 폰 내부에서 한 번 더 컴파일 함. 이 과정을 통해 실행 속도가 빨라지고, 사용자에게 앱 기능에서 필요한 권한을 요청함
  6. 사용자 시점: 안드로이드 스마트폰에서 앱 실행
    • 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 (고돈호 지음, 한빛미디어)
Comments