오늘부터는 Kotlin in Action에서 배운 기본을 토대로 Do it! 안드로이드앱 프로그래밍 책을 기반으로 안드로이드 공부를 본격적으로 시작하려고 한다.
리눅스 커널을 기반으로 구글에서 제작한 모바일 운영체제
공개 운영체제인 리눅스를 기반으로 한다.
자바나 코틀린 언어를 이용해 개발한다.(2017년 코틀린을 안드로이드 공식 언어로 지정)
연영체제 주요 부분과 라이브러리, 구글이 만든 앱의 코드는 대부분 공개되어 있다.
모든 애플리케이션이 평등하다는 사상을 바탕으로 기본 탑재 앱과 개발자가 만든 앱이 똑같은 환경에서 똑같은 API를 사용해 작동된다.
안드로이드는 운영체제 버전에 개발시 사용하는 SDK버전인 API레벨이 지정되어 있다.
가장 최신 버전은 Android 14 API Level 34 Upside Down Cake다.
리눅스 커널
안드로이드는 리눅스에 기반을 둔 오픈소스 소프트웨어 스택이다.
하드웨어 추상화 레이어 (HAL)
하드웨어 추상화 계층으로 상위 자바 API 프레임워크에서 하드웨어 기능을 이용할 수 있게 표준 인터페이스를 제공한다.
안드로이드 런타임 (ART)
앱을 실행하는 역할. DEX 파일로 빌드되는 안드로이드 앱을 해석해 실행하는 주체이다.
자바는 소스코드를 컴파일하면 클래스 파일이 생성되고 이를 JVM에서 실행시키는데, 안드로이는 클래스파일을 런타임때 그대로 실행하지 않고 DEX 파일로 컴파일한다. 이 DEX 파일을 해석하는 주체가 ART이다.
네이티브 C/C++ 라이브러리 (Android NDK)
안드로이드 앱은 대부분 자바 프레임워크로 개발하지만 네이티브 C/C++ 라이브러리를 사용할 수도 있는데 이를 안드로이드 NDK(native development kit)이라 한다.
자바 API 프레임워크
앱 개발시 사용하는 자바 API
Resource : 코드에서 정적인 값을 분리한 것.
앱에서 발생하는 데이터나 사용자 이벤트에 따른 동적인 값이 아니라, 항상 똑같은 값이라면 코드에 굳이 담지 않고 분리해서 개발한다.
리소스를 활용한 개발 덕분에 코드가 짧아져 개발 생산성과 유지 보수성이 좋아진다.
이미지나 몇몇을 제외하면 대부분 리소스는 XML
파일로 작성한다.
대표적인 예로 문자열을 리소스로 이용하는 것이 있다.
문자열 외에도 색상, 크기, 레이아웃, 이미지, 메뉴 등 많은 요소를 리소스로 활용한다.