임베디드월드

글: 라영호 | ratharn@naver.com / 2012-02-02


[연재 차례]

1. 안드로이드 시스템의 역사 및 동향
2. 안드로이드 시스템과 리눅스
3. 안드로이드 플랫폼의 이해
4. 안드로이드 바인더(Binder)의 이해
5. 안드로이드 서비스
6. 안드로이드 SurfaceFlinger와 프레임버퍼 드라이버
7. 안드로이드 User Interface와 ADK2012
8. Linux Sound Device와 안드로이드 사운드 시스템
9. 안드로이드 카메라 시스템
10. 안드로이드 카메라와 멀티미디어 프레임워크
11. 안드로이드 카메라와 멀티미디어 프레임워크 ②
12. 안드로이드 시스템 디버깅 및 기타



안드로이드 시스템 개발자를 위한 안드로이드 시스템의 분석 및 이해 ①
안드로이드 시스템의 역사 및 동향


안드로이드 그 시작과 끝
안드로이드 운영체제는 이제 스마트폰 운영체제로써의 자리를 확고히 잡고 있다. 운영체제뿐만 아니라 임베디드 시스템에 사용되는 임베디드 운영체제로써 마이크로소프트사나 실시간 운영체제(Real Time Operating System)가 차지하고 있던 영역까지 그 영역을 넓히고 있다. 안드로이드 운영체제는 두 가지 점에서 장점을 가지고 있다.

1 무료 운영체제라는 점 - 물론 무료는 아니다. 구글의 모바일 광고 플랫폼이라는 점은 변하지 않는다. 구글의 정책상 오픈 소스로 공개가 되고, 구글 자체에 라이선스 비용을 지불하지는 않는 표면적인 장점 때문에 안드로이드를 선택하게 한다. 공개된 소스는 많은 장점을 제시한다. 지금까지 스마트폰 플랫폼이 폐쇄적인 플랫폼을 지향한 반면에 구글처럼 스마트폰의 운영체제를 소스까지 공개하는 점은 절대로 무시할 수 없는 장점이다.

2 JAVA를 이용해 응용 프로그램을 개발할 수 있도록 제공해주는 점 - 웹 기술 중에 가장 성공한 언어는 JAVA라는 언어다. 따라서 이러한 JAVA 언어를 다룰 수 있는 개발자들을 스마트폰 앱 개발자로 끌어들이는 것은 폭 넓게 분포되어 있는 엔지니어층을 쉽게 안드로이드 개발자로 끌어들이기 위한 방법이기도 하다.

하지만, 복잡하게 얽힌 특허 분쟁으로 인해 안드로이드 운영체제도 이제는 사용료를 지불해야 하는 시스템으로 변하고 있다. 물론 소스에 대한 라이선스 비용이 아니라 특허에 대한 사용료를 지불해야 하는 형태로 지불하고 있다.

안드로이드의 역사ㅣ짤막한 역사
안드로이드 운영체제는 본 기고에서 소개할 4.0 버전, 아이스크림 샌드위치 버전이 나오기까지 많은 버전이 빠르게 출시가 되었다. 3년이라는 시간 동안 많은 변화가 있었으며, 이 변화의 역사는 스마트폰 운영체제의 판도를 바꾸는 역사이기도 하다. 안드로이드 운영체제는 통산 6개월마다 새로운 버전과 기능을 가진 운영체제가 출시가 된다. 일설에 의하면 구글이 6개월마다 안드로이드 운영체제를 출시하는 이유는 해커들이 해킹을 위해 안드로이드 운영체제를 분석하고 적용하는 시점이 6개월이라 그 때마다 릴리스 한다는 말도 있다. 이유가 어떠하든 간에 6개월만에 새로운 운영체제가 나온다는 점은 사용자들에게는 무척 반가운 점이다. 하지만 안드로이드 운영체제를 탑재하여 스마트폰을 개발하는 제작 업체에는 무척 부담스러운 일이 아닐까 한다. 일반폰에 비해 과거에 출시된 스마트폰에 대한 운영체제 업데이트 부분에 대해서도 고민을 해야 하고, 앞으로 출시할 스마트폰에 어떠한 운영체제를 지원하고, 언제까지 새로운 운영체제를 지원하는지에 대해서도 고민해야 하기 때문이다.
안드로이드 운영체제가 현재 4.0까지 그 소스가 공개되었다. 안드로이드 운영체제의 역사를 간략히 살펴보면 다음과 같다.

● Android 1.0 - 2008년 10월 처음 릴리스 됨, 리눅스 2.6.25기반
● Android 1.1 - 2009년 1월 릴리스 됨
● Android 1.5(Cupcake) - 2009년 4월 릴리스 됨, 리눅스 2.6.27기반 소프트 키보드, 카메라, 사진 갤러리, 블루투스 기능 탑재
● Android 1.6(Donut) - 2009년 9월 릴리스 됨, 퀵 서치(Quick Search Box), 문장을 음성으로 읽어 주는 기능, CDMA 통신망 지원, 멀티미디어 기능 지원을 위한 오픈 코어(OpenCore) 기능 탑재
● Android 2.0(eclair) - 2009년 10월 릴리스 됨, 하드웨어 가속 기능을 이용한 멀티미디어 프레임 워크 기능 강화, 블루투스 2.1 지원, 멀티 터치 지원
● Android 2.1(eclair) - 2010년 1월 릴리스 됨
● Android 2.2(Froyo) - 2010년 5월 릴리스 됨, 리눅스 커널 2.6.32 버전으로 업데이트 됨 자바 가상 머신인 달빅(Dalvik)에 자바 동작속도 향상을 위해 JIT(Just-In-Time) 컴파일 기능 제공, 멀티미디어 재생 기능을 제공하는 미디어 프레임워크를 교체, 오픈 코어 스테이지 플라이트(Stage Fright)로 교체, 안드로이드 응용 프로그램을 외장 저장장치인 SD/MMC와 같은 저장장치에 설치할 수 있도록 기능 제공
● Android 2.3(Gingerbread) - 2011년 1월 릴리스 됨, WXGA나 그 이상의 해상도를 지원, 인터넷을 이용하여 음성통화를 할 수 있도록 VoIP 기능 지원, 인터넷 음성 통화를 위한 SIP(Session Initiation Protocol)을 탑재, 구글이 인수한 업체인 On2 테크놀로지에서 만든 VP8 멀티미디어 코덱을 사용할 수 있도록 기능 탑재, VP8 코덱은 WebM이라는 이름으로 변경되었다. 근거리 통신(Near Field Communication) 기능 지원, 내부 동작 속도 향상을 위해 가비지 컬렉션 기능 개선, 자이로 스코프 및 기압계와 같은 센서 지원, 내부에서 사용하는 낸드 플래시 메모리 파일 시스템을 YAFFS에서 ext4로 변경하여 플래시 메모리 파일 시스템의 안정성 향상
● Android 3.0 - 2011년 1월에 미국에서 열린 CES에서 처음 소개됨, 태블릿 PC를 위해 만들어진 운영체제 버전, 1280x720 이상의 해상도를 지원함, 듀얼 코어 코어텍스 A9 프로세서 이상에서 돌아가도록 구성됨, 본 운영체제를 이용하여 모토로라의 드로이드 Xoom 태블릿이 최초로 만들어짐

안드로이드 운영체제의 특징
● 서비스 기반 시스템 - 안드로이드 운영체제는 바인더(Binder)라는 통신 기법을 사용하여 자바나 C/C+++로 구성된 서비스를 바탕으로 운영되는 시스템이다. 응용 프로그램에서는 프로세서간 통신 기법인 바인더 기능을 이용하여 서비스로 구성된 시스템의 기능을 이용할 수 있도록 구성되었다.
● 응용 프로그램 프레임 워크 - 응용 프로그램의 재사용과 교체가 가능하도록 응용 프로그램이 구성되었다. API 기반의 인터페이스를 제공하고 응용 프로그램에서 사용할 수 있는 소프트웨어 라이브러리 형태로 구성되었다.
▶ 액티비티 매니저(Activity Manager) - 안드로이드 응용 프로그램의 생명 주기를 관리한다.
▶ 뷰 시스템(View System) - 표준 위젯을 담당한다.
▶ 윈도우 매니저(Window Manager) - 모든 응용 프로그램과 관련된 화면 담당, HAL의 모든 EventHub를 통해 주로 이벤트를 처리하며 건네 받는다. 발생한 이벤트가 적절하다면 다른 매니저에게 전달하거나 상위로 올린다.
▶ 패키지 매니저(Package Manager) - 시스템에서 동작 중인 응용 프로그램의 정보 담당
● 달빅(Dalvik) 가상 머신 - 모바일 장치에 최적화된 자바 가상 머신(JAVA Virtual Machine), 달빅은 안드로이드 응용 프로그램인 .APK 형태의 앱을 실행하는 환경을 제공해 주고 있다. PC에서 사용되는 자바 가상 머신은 스택 기반으로 운영되지만, 달빅의 경우 레지스터 기반으로 동작을 하고 있다. 리눅스 커널을 이용하여 스레딩과 저수준의 메모리 관리를 지원할 수 있도록 구성되었다.
● 통합된 브라우저 - 브라우저 관련 소스인 Webkit 엔진 기반으로 만들어진 웹 브라우저를 탑재하고 있다.
● 그래픽 기능 - 2D 그래픽 라이브러리 및 OpenGL ES 기반의 3D 그래픽 엔진 라이브러리를 제공하고 있다.
● SQLite - 임베디드 시스템에 최적화된 관계형 데이터 베이스 엔진을 제공하고 있다.
● 미디어 지원 - 다양한 오디오 비디오 및 이미지 포멧 지원하고 있다. MPEG4, H. 264, MP3, AAC, AMR, JPG, PNG, GIF 등의 다양한 포맷을 지원
● 통신기능 - GSM, CDMA와 같은 통신 기능 및 블루투스, EDGE, 3G 및 WIFI, GPS 등을 지원
● 개발 환경 지원 - 디버깅을 위한 이클립스(eclipse) 통합 환경 기반의 디바이스 에뮬레이터를 지원, 메모리 및 성능 프로파일링 기능 지원, 윈도우, 리눅스, 맥 운영체제에서 응용 프로그램 개발 환경 제공

아이스크림 샌드위치
안드로이드 4.0 버전인 아이스크림 샌드위치 버전은 멀티 테스트킹을 쉽게 할 수 있도록 새롭게 사용자 인터페이스를 구성하였다. 또한 사용자에 대한 통보, 재 구성 가능한 홈 스크린, 크기 조절이 가능한 위젯등의 기능을 추가하여 사용자 인터페이스를 대대적으로 수정하였다.
● 멀티테스킹 사용자 인터페이스 강화 - 시스템 바에 있는 가상 버튼은 사용자들로 하여금 이전, 홈, 최근 앱 등으로 빠르게 전환 할 수 있도록 도와준다. 최근 앱 버튼은 이전에 사용하던 앱 목록을 보여주고 빠르게 사용하던 앱으로 전환 할 수 있는 방법을 제공해준다. 멀티 테스트을 하고 있는 안드로이드상에서 앱 사이의 전환을 쉽게 할 수 있도록 도와주는 기능인 것이다.
● 카메라나 노티피케이션 전환 - 카메라나 전화, 메시지 수신, 음악 재생, 실시간 업데이트 정보를 제공하는 앱에서 노티피케이션에 의해 정보가 전달되었을 때 스크린 언락(Unlock)이 필요 없이 바로 앱의 화면으로 전환할 수 있는 새로운 사용자 인터페이스 환경을 제공한다.

크기 조절이 가능한 위젯
안드로이드 4.0의 홈 스크린은 사용자 설정이 가능하고 풍부한 콘텐츠로 구성되었다. 사용자는 단순히 사용하는 응용 프로그램에 대해 링크를 추가하는 것 이외에 많은 작업을 할 수 있도록 구성되었다. 이메일을 주기적으로 검사해 새로운 이메일이 없는지 확인해주고, 달력을 보여주고, 음악을 재생해주며 소셜 네트웍의 업데이트 된 사항을 표시해 주는 것과 같은 응용 프로그램을 바탕화면에 구성해 줄 수 있다. 응용 프로그램을 실행할 필요 없이 위젯에서 인터넷을 통하여 정보를 업데이트 한 후에 크기조절이 가능한 위젯으로 바탕 화면에 보여 줄 수 있는 것이다.

빠른 전화 응답 기능
전화가 왔을 때 전화기를 집어들거나 장치를 언락할 필요없이 텍스트 메시지로 빠르게 응답 메시지를 보내는 기능을 제공한다. 전화 수신 화면에서 메시지 응답 리스트에서 선택하여 빠르게 응답 메시지를 보내는 기능을 제공한다.
이 밖에도 개선된 단어 검사기, 개선된 음성 인식을 사용한 음성 입력기, 텍스트를 빨리 입력할 수 있도록 개선된 소프트 키보드 등의 기능들이 개선되어 사용자의 입력 및 사용을 편리하게 해주고 있다.
이밖에 NFC 기능의 향상, 얼굴을 인식하여 스마트폰의 잠금을 해제하는 기능, 블루투스 헬스 장비 프로파일(HDP)을 이용하여 의료 장비나 헬스 클럽의 장치와 통신할 수 있는 기능을 제공한다.

폰과 테블릿 PC를 위한 통합된 사용자 인터페이스
비로소 4.0이 돼서야 안드로이드 폰과 테블릿 PC에서 일관적이고 통합적인 사용자 인터페이스를 제공해 주고 있다. 콘텐츠 로더, 액션 바, 강화된 노티피케이션 기능, 조절 가능한 홈 스크린 위젯등과 같은 새로운 API들이 개발자들에 다양한 기능 및 사용자 인터페이스를 제공해주고 있다.

소설 API
새로운 소설 API는 연락처, 프로파일 정보, 상태 업데이트, 사진 등을 소설 API를 통해 다양한 소설 네트워크 사이트에 공유할 수 있도록 해준다.

안드로이드의 미래
안드로이드 플랫폼은 스마트폰 및 테블릿 PC의 운영체제로써 점차 그 영역을 넓히고 있다. 불과 3년이라는 시간 동안 안드로이드는 4.0 버전이 출시되었고, 하루에 40만대 이상씩 등록이 되는 스마트폰의 운영체제로 자리잡고 있다. 스마트폰의 중요한 점은 많은 기술을 하나의 스마트폰에 집중하여 여러 기능을 집어 넣는 게 아니라 사용자가 편리하게 사용하고, 쉽게 사용할 수 있도록 기능을 제공하는 것이 가장 중요한 점이라고 하겠다. 많은 기능을 장점으로 스마트폰의 장점을 내세우기 보다는 사용자의 사용 방법과 패턴에 맞게 손 쉽게 사용할 수 있는 기능을 제공하는 것이 진정한 스마트 폰이 아닐까 생각한다. 안드로이드의 미래는 현재 진행 중이다. 오픈 소스로 무장한 구글의 안드로이드 운영체제의 미래는 오픈 소스의 미래이기도 하다. 앞으로 발전할 안드로이드의 미래를 기대해본다.


/필/자/소/개/

필자

라영호

국내 스마트폰의 초창기인 Cellvic에서부터 스마트폰을 개발하였고 윈도 모바일 및 다양한 임베디드 시스템을 개발하고 있다. 현재는 안드로이드 시스템 포팅 및 임베디드 시스템 개발, 컨설팅, 교육 등을 진행하는 회사를 운영하고 있다. 개인 블로그(www.embeddedce.com)를 통해 임베디드 시스템개발에 대한 다양한 생각과 방법론을 함께 생각해 보고자 노력 중이다.

※ 본 내용은 (주)테크월드(http://www.embeddedworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
    Copyright ⓒ Techworld, Inc. 무단전재 및 재배포 금지

맨 위로
맨 위로