컴파일, 빌드, 런타임, APK에 대하여 알아보겠습니다.
코드 작성 및 과정
소스 코드 작성에서 실행하는 과정은 생각보다 단순합니다.
- 소스 코드 작성 : 코틀린 코드로 소스를 작성합니다.
- 설치 파일 생성 : 명령을 전달해 안드로이드에서 실행 될 수 있는 설치 파일의 형태로 변환합니다.
- 업로드 : 구글 플레이 스토어에 자료를 업로드합니다.
- 앱 등록 : 구글 플레이 스토어에 앱을 등록합니다.
- 앱 선택 및 설치 : 스마트폰으로 구글 플레이 스토어에 접속하여 앱을 설치 합니다.
- 실행 : 아이콘을 클릭하여 앱을 실행합니다.
코드 실행 과정
코드가 실행되는 과정은 빌드, 파일 검증, 플랫폼 버전 체크, AOT 컴파일, 권한 체크, JIT 컴파일의 과정을 거치게 됩니다.
빌드
이 과정에서는 소스 코드를 바이트코드로 변환하여 APK 매니저안에 비밀번호를 가지고 있는 키 스토어와 조합하여 최종 설치 파일을 생성하는 과정입니다.
파일검증
단순한 업로드가 아닌 스토어에서 앱을 검수하는 과정을 거치게됩니다. 이 과정에서는 설치 파일이 정상적으로 작동하는지 여부를 확인하고, 보안상의 문제는 없는지 확인하는 단계입니다.
플랫폼 버전 체크
스마트폰으로 구글 플레이 스토어에 접속하면 스마트폰의 플랫폼 버전을 확인한 다음 설치 가능한 앱의 목록을 보여줍니다.
AOT 컴파일 / 권한 체크
APK 파일을 설치하면 리눅스에서 실행 가능한 파일로 안드로이드 폰 내부에서 컴파일을 실행합니다. 이 과정을 통하여 실행 속도가 빨라지며 사용자에게 기능 사용 권한을 요청하게 됩니다.
JIT 컴파일
실행 단계이며, 필요한 파일만 컴파일하며, 최초 실행시 미리 컴파일되지 않은 파일을 호출하면서 리눅스 실행 파일로 컴파일합니다. 실행 시 권한 설정이 안되어 있으면, 해당 코드를 동작해서 사용자에게 확인 요청을 진행합니다.
바이트 코드 및 APK 알아가기
바이트 코드 ?
- 작성한 코틀린 코드를 가상 머신인 안드로이드 런타임에서 이해할 수 있도록 변환되어진 코드입니다.
APK ?
- 안드로이드 패키지(Android Package)이며, 안드로이드 설치 파일의 확장명으로 사용되어지고 있습니다.
- 특정 앱의 APK 팡링이 있으면 어느 스마트폰에서도 수동으로 앱을 설치 할 수 있습니다.
빌드
소스 코드를 변환하여 안드로이드 실행 파일인 APK파일로 만드는 것을 빌드(Build)라고 부릅니다.
빌드는 작성된 소스 코드를 컴퓨터 언어로 변환 후 라이브러리와 연동하여 실행 파일로 만드는 과정을 일컫습니다.
안드로이드는 리눅스 커널 기반이므로, 리눅스 시스템의 빌드를 이해하는 것에 많은 도움이 됩니다.
컴파일?
- 사람이 읽을 수 있는 코드의 형태를 컴퓨터가 읽을 수 있도록 언어 변환을 해주는 과정입니다.
- 컴퓨터의 기계를 이해하고 동작하는 것을 쉽게 알 수 있도록 생겨난 것이, C, Java, Kotlin 같은 컴퓨터 언어입니다.
리눅스에서의 빌드
- 소스 코드를 컴퓨터가 읽을 수 있는 언어로 변경하고, 만든 소스 코드를 라이브러리와 연결하여 최종 실행 파일 형태로 만드는 과정입니다.
안드로이드에서의 빌드
- 안드로이드에서는 리소스(Resource)라는 개념이 별도로 존재합니다
- 안드로이드는 2단계의 컴파일 과정이 있으며, 바이트 코드 단계 그리고 APK 파일 생성 단계입니다.
처음으로 소스 코드와 리소스를 바이트 코드로 컴파일하며, 실행할 수 없지만 플랫폼에서 인식할 수 있는 상태로 되어집니다. 그 후 생성된 파일을 APK 매니저의 도구로 APK 파일로 만들어집니다.
AAB ?
- AAB는 안드로이드가 새롭게 제안하는 APK 파일을 대체하는 빌드 파일의 형태입니다.
- 구글 플레이 스토어에 AAB 파일 형태로 앱을 등록하면 사용자가 앱을 다운로드 할 때 사용자의 디바이스에 필요한 모듈만 골라서 APK 파일로 재생성합니다.
설치 및 실행
- 안드로이드 아키텍처는 앱 설치부터 종료할 때까지 계속 관여합니다.
- 앱을 설치하면 설치 파일의 일부가 리눅스 운영체제에서 실행 할 수 있는 파일 형태로 한 번 더 컴파일이 되는 구조를 AOT (Ahead Of Time)이라고 합니다.
- 앱이 실행하면 호출되는 파일 중에서 컴파일 되지 않았던 파일이 한 번 더 컴파일 되는 구조를 JIT (Just In Time) 이라고 합니다.
- 안드로이드는 AOT 그리고 JIT 2개의 컴파일 형태를 같이 사용하고 있습니다.
알아가기
두 번을 컴파일 하는 이유?
- AOT 컴파일을 하면 설치 시 모두 컴파일이 되어지기 때문에 속도는 빠르지만, 컴파일된 파일 만큼 큰 디스트 용량을 차지합니다.
- JIT 컴파일을 하면 호출 시 컴파일 되므로 처음에는 느리지만, 후에는 AOT와 동일한 속도를 가지고 있으며, 디스크 용량을 적게 차지합니다.
'Kotlin Language > Android ?' 카테고리의 다른 글
안드로이드 Jetpack이란? (0) | 2023.11.25 |
---|---|
안드로이드와 코틀린 기초 (0) | 2023.11.19 |