이번 학기에 안드로이드 수업을 듣게되어, 공부한 내용을 정리해보려고 합니다.
안드로이드의 역사
2003년 10월에 Palo Alto, California에서 Android사가 설립되었습니다.
초기에는 디지털 카메라용 OS를 개발하는 회사였는데, MS의 윈도우즈 모바일과 심비안에 대항하는 휴대전화용 OS를 개발하였습니다.
그리고 2005년 7월, Google이 Android사를 5,000만 달러에 인수합니다.
2007년 11월 5일 안드로이드 플랫폼을 휴대폰 운영 체제로서 무료로 공개한다고 발표한 후, 구글, 디바이스 제작사, 통신사, 칩셋 제작사들이 모인 Open Handset Alliance에서 공개 표준을 위해 개발하고 있습니다.
안드로이드 버전 - 코드네임
안드로이드는 1.5버전부터 지금과 같은 코드네임을 사용하고 있습니다.
코드네임은 알파벳 순으로 안드로이드 버전 1.5의 Cupcake로 시작하여 Donut, Eclair, Froyo ... Oreo, Pie까지 사용해 왔습니다.
위 그래프는 시기별 안드로이드 버전의 점유율을 나타내는 것 같습니다. 생각보다 업데이트를 안하고 사용하시는 분들도 많네요.
안드로이드 플랫폼
안드로이드 플랫폼은 위 그림과 같이 구성되어 있습니다.
Linux Kernel
안드로이드의 커널은 리눅스 커널의 장기 지원(LTS) 버전을 기반으로 개발되었습니다. 2017년 기준, 안드로이드 기기들은 주로 Linux 커널의 3.18 또는 4.4 버전을 사용중이라고 합니다. 실제 커널은 개별 디바이스별로 상이하고, Google에 의해 추가적인 아키텍쳐 변경이 이루어진다고 합니다.
Hardware Abstraction Layer(HAL)
상위 레벨 Java API 프레임워크에 하드웨어 기능을 제공하는 표준 인터페이스를 제공합니다.
카메라, 블루투스, 오디오 등과 같은 여러가지 라이브러리들로 구성되어 있습니다.
Native C/C++ Libraries
Webkit, OpenGL ES 등의 고유 라이브러리를 제공하기 위한 Java 프레임워크 API를 제공합니다.
예를 들어, Android 프레임워크의 Java OpenGL API를 통해 2D/3D 그래픽을 다루는 OpenGL ES를 사용할 수 있습니다.
C/C++을 사용하여 개발할 경우, Android NDk를 이용해서 native 라이브러리를 직접 사용할 수 있습니다.
Android Runtime (ART)
안드로이드 5.0 이상부터 각각의 앱들은 Android Runtime(ART)으로 개별 프로세스 형태로 동작합니다.
안드로이드 5.0 이하에서는 Dalvik runtime을 사용합니다.
ART vs Dalvik
Android Runtime(ART)
- Ahead-of-time(AOT) + just-in-time(JIT) compilation
- Optimized garbage collection (GC)
Dalvik
- Trace-based just-in-time (JIT) compilation
- 지속적으로 어플리케이션을 프로파일링해서, 자주 사용되는 segment를 native 기계어로 미리 컴파일함.
개발한 어플리케이션이 ART에서 정상적으로 동작한다면, Dalvik에서도 정상적으로 동작한다.
하지만 그 반대는 항상 정상적으로 동작하지 않을 수도 있다.
Java API Framework
안드로이드 OS의 모든 기능들은 Java언어로 쓰여진 API들을 통해서 접근 가능합니다.
- View System : 리스트, 그리드, 텍스트박스, 버튼 및 웹브라우저 등의 어플리케이션의 UI를 구성합니다.
- Resource Manager : Localized 문자열, 그래픽 및 레이아웃 파일등과 같은 코드 이외의 자원들에 접근하는 기능을 제공합니다.
- Notification Manager : 상태바에 커스텀 열람 기능을 제공합니다.
- Activity Manager : 어플리케이션의 lifecycle을 관리하고 일반적인 navigation back 스택을 관리합니다.
- Content Provider : 다른 어플리케이션의 데이터에 접근하고 데이터를 공유하는 기능을 제공합니다.
- Package Manager : 현재 디바이스에 설치된 어플리케이션 패키지와 관련된 다양한 정보들을 관리합니다.
System Apps
E-mail, SMS, Calendar, 인터넷 브라우저 및 연락처 등의 어플리케이션
2019/04/29 - [Android] - #2 - 안드로이드 스튜디오(Android Studio) 설치하기
'DEVLOG > Android' 카테고리의 다른 글
## OpenGL을 이용한 Solar System (0) | 2019.04.29 |
---|---|
#2 - 안드로이드 스튜디오(Android Studio) 설치하기 (0) | 2019.04.29 |
댓글