타인이 되지 말고 자신이 되어봐요

Be yourself, not others

Programming/Android

[TIL] 안드로이드 기초 - 1

kcdevdes 2022. 5. 27. 20:18

Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린 으로 배운 내용을 정리합니다.

 

안드로이드 앱 배포는 배포파일과 앱 서명을 통해 Play Store에서 배포를 하게 된다.

배포파일은 크게 2가지가 있는데, AAB와 APK 가 있다. APK는 전통적인 안드로이드의 앱 배포 파일로 대다수의 앱은 이 형태로 배포되어 진다. 반면, AAB는 Android App Bundle의 약자로, 사용자의 기기에 맞게 최적화된 APK를 구성하여 설치하여 준다. 즉, AAB가 좀 더 발전된 형태의 APK이다.

 

구글은 2021년부터 출시되는 모든 애플리케이션은 AAB의 형태로 출시되어야 한다는 제약을 걸었다.

 

앱 서명은 앱을 빌드할 때 걸어두는 암호 과정이다. 앱을 등록하거나, 업데이트를 할 때 필수적이라, 결코 분실되어선 안된다. 하지만 많은 개발자들이 이에 대해 불편함을 느껴서 그런지 구글은 Play 앱 서명을 출시하여 이러한 불편함을 줄여주었다.

 

안드로이드의 구조는 크게 다음과 같다.

Linux Kernal : 안드로이드 운영체제의 최하단으로 리눅스 운영체제의 오픈소스로 제작되었다.

Hardware Abstraction Layer (HAL): 자바 API를 하드웨어에 적용할 수 있도록 각종 기능을 제공하는 추상화 레이어다. 만약 해당 레이어를 사용하지 않는다면 NDK등으로만 개발하여야 한다.

Android Runtime :  안드로이드 앱에 있는 .DEX 파일 해석기로, 안드로이드 앱의 모든 시작점이다.

 

여기서 우리는 안드로이드와 PC의 자바 프로그램의 차이점을 알 수 있다.

PC는 .java파일을 컴파일 하여 .class라는 바이트 파일을 생성하여 이를 JVM에서 해석하여 동작하는 방식을 취한다.

반면 안드로이드는 .java파일을 컴파일하여 .class을 제작, 이를 다시 DEX 컴파일하여 .dex파일을 만들고, 이를 Android Runtime이 해석하여 작동하게 된다. 


Android의 최신 버전 Android 12.0은 코드네임은 존재치 않고, API Level은 31로 등록되어 있다.