본문 바로가기
프로그래밍/Android

buildToolsVersion

by JLearn 2023. 4. 6.

buildToolsVersion는 안드로이드 앱 빌드 시 사용되는 도구들의 버전입니다.


compileSdkVersion, minSdkVersion, targetSdkVersion 처럼  build.gradle파일에 버전을 지정할 수 있는 Gradle 설정이며 Gradle은 이 버전을 사용하여 소스 코드를 컴파일하고 APK 파일을 생성합니다.

앱 개발 시에는 사용하는 안드로이드 SDK 버전과 호환되는 Build Tools 버전을 선택해야 합니다.

 

빌드(Build)와 컴파일(Compile)의 차이점

빌드와 컴파일은 비슷한 것 같지만 서로 다른 의미를 가집니다.

컴파일은 개발자가 작성한 원시 코드를 컴퓨터가 이해할 수 있는 실행 코드로 변환하는 과정입니다. 소스 코드를 컴파일하면 컴파일러는 코드를 분석하고 문법 오류와 논리 오류를 찾아서 개발자에게 알려줍니다. 컴파일러는 최종 실행 파일을 만들기 위해 소스 코드를 목적 파일(object file)로 변환하고, 목적 파일을 링크(link)하여 실행 파일을 생성합니다.

반면에 빌드는 컴파일을 비롯하여 여러가지 작업을 통해 최종적으로 배포 가능한 소프트웨어를 만드는 과정을 의미합니다. 빌드는 소스 코드를 컴파일하고, 라이브러리를 추가하고, 리소스 파일을 처리하고, 테스트를 실행하고, 배포를 위한 실행 파일이나 패키지를 생성하는 등의 과정을 포함합니다. 

그러므로 컴파일은 소스 코드를 실행 파일로 변환하는 단계 중 하나라 할 수 있고 빌드는 컴파일을 비롯한 다양한 작업을 포함하여 최종적으로 배포 가능한 소프트웨어를 생성하는 과정이라 할 수 있습니다.

 

buildToosVersion과 compileSdkVersion과의 관계

buildToolsVersion과 compileSdkVersion은 독립적인 값이지만 연관되어 있습니다.

 

compileSdkVersion은 컴파일러에게 사용할 API 레벨을 알려주기위해 안드로이드 SDK 버전을 지정합니다. 
buildToolsVersion은 안드로이드 스튜디오가 사용할 Gradle 빌드 도구 버전을 지정하여 빌드작업을 수행하고 다른 빌드 도구 기능을 제공합니다.

 

안드로이드 앱의 빌드는 buildToolsVersion으로 지정된 Gradle 빌드 도구가 빌드 작업을 수행하고 빌드 과정중에 하나인 컴파일 과정 중에 Gradle은 compileSdkVersion을 확인하고 이를 기반으로 소스 코드를 컴파일합니다.


그러므로  buildToolsVersion은 컴파일러를 포함한 빌드 도구의 버전을 지정하므로 compileSdkVersion이 빌드 도구에서 올바르게 처리될 수 있도록 지정되어야 합니다. buildToolsVersion은 안드로이드 SDK와는 직접적인 관련이 없지만, SDK에 대한 의존성을 가지고 있습니다. 따라서 이 두 매개 변수를 동일한 버전으로 설정하는 것이 좋습니다.

Build Tools 구성요소

1. 안드로이드 SDK Manager: 안드로이드 SDK를 관리하고 업데이트하는 도구입니다. SDK Manager를 사용하여 안드로이드 SDK를 설치하고 삭제하고 업그레이드할 수 있습니다.

2. 안드로이드 Debug Bridge (ADB): 안드로이드 기기와 컴퓨터 간의 통신을 지원하는 도구입니다. ADB를 사용하여 앱을 설치하고 실행하고 디버깅할 수 있습니다.

3. Android Asset Packaging Tool (AAPT): 안드로이드 앱에서 사용되는 리소스 파일 (레이아웃, 이미지, 문자열 등)을 패키징하는 도구입니다. AAPT는 리소스 파일을 패키징하고 R.java 파일을 생성합니다.

4. 안드로이드 빌드 도구 (Android Build Tool): 안드로이드 앱을 빌드하고 컴파일하는 데 사용되는 도구입니다. 안드로이드 빌드 도구에는 여러 개의 하위 도구가 포함되어 있습니다.

 

  • aapt2: 앱의 리소스를 컴파일하고 패키징하는 데 사용하는 빌드 도구입니다.
  • d8: 자바 바이트 코드를 DEX 바이트 코드로 컴파일하는 데 사용하는 명령줄 도구입니다.
  • zipalign: 압축된 apk 파일을 최적화하는 도구입니다.
  • apksigner: apk 파일의 서명을 확인하고, v1과 v2 서명을 동시에 수행할 수 있습니다.

 

빌드(Build) 과정

1. 소스 코드 작성: Java 또는 Kotlin 등의 언어를 사용하여 안드로이드 앱의 소스 코드를 작성합니다.

2. 빌드 환경 설정: Gradle을 사용하여 프로젝트 빌드를 위한 환경 설정을 수행합니다. 

3. 의존성 관리: Gradle을 사용하여 앱에 필요한 라이브러리 및 모듈의 의존성을 관리합니다. 이를 통해 라이브러리와 모듈을 쉽게 추가하고 업데이트할 수 있습니다.

4. 빌드 실행: Gradle을 사용하여 소스 코드를 컴파일하고, 리소스 파일과 함께 패키징하여 APK 파일을 생성합니다. 이 과정에서 안드로이드 Build Tools가 사용됩니다.

5. 디버그(Debug)/릴리즈(Release) 빌드: 빌드 종류를 구분하여 디버그 또는 릴리즈수행합니다. 디버그 빌드는 앱을 개발할 때, 릴리즈빌드는 실제 사용자에게 배포되는 버전입니다. 릴리즈빌드에는 코드 축소, 난독화, 서명 등의 추가적인 과정이 포함됩니다.

6. 배포: 릴리즈 빌드버전으로 Google Play 또는 기타 배포 채널을 통해 앱을 사용자에게 배포할 수 있습니다.

 

마치며

buildToolsVersion에 관해 설명하면서 컴파일과의 관계, 빌드과정을 알아봤습니다.

 

안드로이드 앱을 빌드할 때 위에서 말씀드린 것 같이  buildToolsVersion, compileSdkVersion과 같은 항목 설정을 포함하여 Gradle 빌드 도구, 안드로이드 SDK, 라이브러리, 리소스 파일 등 여러 많은 구성요소를 이용하여 빌드과정이 이루어 집니다. 그러므로 안드로이드 앱을 빌드하는 데 필요한 모든 요소를 제대로 확인하고 설정하고 구성하는 것이 중요할 것 같습니다.

댓글