본문 바로가기
Android

[Android] Android 프로젝트 빌드

by Saerong2 2020. 11. 6.

안드로이드 스튜디오를 이용해 안드로이드 앱 개발을 할 때 실제로 기기를 연결하거나 가상의 애뮬레이터를 통해서 다양한 기기에 대해서 직접 앱을 테스트 할 수 있습니다. 앱의 실행은 어떠한 과정을 거쳐서 실행시킬 수 있는 것일까요?

 

 

안드로이드는 리눅스 커널을 기반으로, 저수준의 하드웨어, 드라이버, 전력관리 등을 수행하는 풀스택 소프트웨어입니다. 리눅스 커널위에 C/C++ 라이브러리와 SQLite, 안드로이드의 Core 라이브러리, Android Runtime 등이 있습니다. 그 위에 안드로이드 프레임워크가 있으며 우리가 만드는 앱은 프레임워크가 제공하는 여러 클래스와 서비스를 이용하여 프레임워크 위의 레이어에서 작동합니다.

 

 

안드로이드 스튜디오에서 앱을 실행하면 작성한 코드는 javac 컴파일러에 의해서 바이트코드로 컴파일 되고, 바이트 코드는 DEX파일로 변환되어 Android Runtime이라는 가상머신에 의해 실행됩니다. 안드로이드 스튜디오에서 이러한 과정은 Gradle이라는 빌드도구를 통해서 이루어집니다. 강력한 빌드도구인 Gradle을 통해서 의존성을 쉽게 관리를 하거나 커스텀 빌드를 할 수 있습니다.

 

빌드과정에서 소스코드와 여러 리소스들은 컴파일되며 APK Packager가 DEX파일과 컴파일된 리소스를 하나의 APK로 결합합니다. APK는 특별한 포맷의 ZIP파일이이며, 앱을 기기에 설치하고 배포하기 위해서는 APK에 서명이 필요하며 서명까지 끝나게 되면 설치가능한 APK파일이 생성됩니다.

 

이렇게 Gradle을 통해 빌드하여 APK를 만들면 안드로이드 스튜디오에서 ADB(Android Debug Bridge)를 통해 기기에 APK를 설치합니다. APK는 ADB를 이용하여 원격 셸을 통해 메인 액티비티와 도메인 이름으로 이루어진 시작명령어를 전달함으로써 특정 앱을 실행하게 되는 것입니다.

댓글