/* 본 게시물은 '이것이 안드로이드다 with Kotlin | 고돈호 지음' 의 내용을 토대로 작성되었습니다. */
소스 코드를 변환해서 안드로이드에서의 실행 파일인 APK 파일로 만드는 것을 빌드라고한다. 빌드는 소스 코드를 기계어로 변환한 후 라이브러리와 연결해서 실제 실행 파일로 만드는 과정을 일컫는 용어이다. 안드로이드는 리눅스 커널 기반이므로 리눅스 시스템에서의 빌드를 이해하는 것이 도움이 된다.
컴파일이란?
컴파일이란 사람이 읽을 수 있는 형태의 소스 코드를 컴퓨터가 읽을 수 있는 형태의 기계어로 변환해주는 과정이다. 컴퓨터는 기계어만 이해하고 동작하는데, 이 기계어의 구조를 사람이 이해하는 것이 어려워 C, 자바, 코틀린과 같은 컴퓨터 언어가 생겨난 것이다.
리눅스에서의 빌드
리눅스에서 빌드란 소스 코드를 컴퓨터가 읽을 수 있는 기계어로 번역(컴파일) 하고, 내가 만든 소스 코드에서 사용하는 라이브러리와 연결해서 최종 실행 파일 형태로 만드는 것이다.
즉, 링크 빌드 = 컴파일(소스 코드 -> 기계어) + 링크 (기계어 -> 라이브러리 연결)
안드로이드에서의 빌드
안드로이드에서의 빌드를 이해하기 위해서는 먼저 컴파일 과정부터 다시 살펴보는 것이 좋다. 리눅스 컴파일과의 차이점은 안드로이드에는 리소스라는 개념이 있다는 점이다.
안드로이드는 2단계로 컴파일을 나눌 수 있다. 먼저 1단계는 바이트코드 단계이다. 소스 코드와 리스소(이미지 파일, 음악 파일 등), 라이브러리(디펜던시)까지 한 번에 컴파일한다. 이 때 생성된 파일은 안드로이드 플랫폼에서 인식할 수 있는 바이트코드로 컴파일된다. 이 파일은 스마트폰에서 바로 실행할 수 없다.
2단계는 APK 파일 생성 단계이다. 안드로이드의 빌드는 1단계에서 생성된 파일을 APK 매니저라는 도구로 개발자가 설정한 패스워드와 조합해서 설치 파일인 APK 파일로 만들어준다.
이렇게 1단계와 2단계를 모두 거쳐 APK 파일이 생성된 과정을 빌드라고 한다.