티스토리 뷰

안드로이드 앱 만들기가 몇년 전부터 급속도로 유행을 하고 있습니다. 안드로이드 앱은 만들기가 비교적 다른 프로그래밍에 비해 쉬워서 심지어는 중학생들도 만들기도 하는데요. 오늘은 안드로이드 앱 만들기의 특징과 구조에 대해 알아 보겠습니다.




 

먼저 안드로이드가 무엇인지 부터 알아보겠습니다. 구글은 왜 모바일 플랫폼을 안드로이드라고 이름을 지었을까요? 안드로이드는 원래 그리스어로 인간을 닮은 것이라는 뜻인데, 19세기 프랑스의 작가 빌리에드릴라당이 처음으로 과학소설에서 사용했다고 합니다. 이 작가는 미래의 이브라는 소설을 썼는데, 여기서 등장하는 여성 로봇을 안드로이드라고 불렀다고 합니다. 그래서 구글은 안드로이드 로고를 로봇 이미지를 사용하고 있다고 합니다.

 

아무트 안드로이드도 기존의 WIPI, BREW, GVM 등과 같은 모바일 디바이스를 위한 플랫폼입니다, 아주 단순하게 생각하면 PC에서 작동하는 윈도우와 같은 운영체제라고 생각해도 됩니다. 좀 더 정확히 설명하면 안드로이드 플랫폼은 운영체제, 미들웨어, 키 애플리케이션들을 포함한 모바일 디바이스를 위한 소프트웨어 집합니다. 개발자들이 윈도우에서 애플리케이션을 개발하듯이 안드로이드 SK를 사용하면 안드로이드 앱 만들기를 할 수 있습니다.

 

애플리케이션들은 자바 프로그래밍 언어로 작성해야하고, Dalvik 위에서 실해오딥니다. Dalvik은 구글이 만든 가상머신인데, 리눅스 커널의 최상위 영역에서 동작합니다. 즉 자바 가상 머신 같은 역할을 한다고 생각하면 쉽게 이해하실 수 있을 것입니다.




 

안드로이드 앱의 특징을 소개 하겠습니다.

 

안드로이드는 애플리케이션 프레임워크를 제공합니다. 마이크로소프트의 비주얼스튜디오와 비슷하게 일종의 마법사가 프로그래밍할 수 있는 프레임워크를 제공합니다. 프레임워크는 일종의 틀이라고 볼 수 있습니다. 빵 굽는 틀이 있으면 일정한 모양의 빵을 쉽게 구울 수 있듯이 서로 다른 애플리케이션이어도 기본적인 틀은 비슷하기 때문에 대부분의 SDK에서는 틀을 만들 수 있는 마법사를 제공합니다.

 

Dalvik 가상머신은 자바 가상 머신과 같이 일종의 가상 머신인데, 모바일 디바이스를 위해 최적화 되어 있습니다. 그러면 왜 Dalvik이라는 생소한 이름을 사용하는 것 일까요? Dalvik 이름을 명명한 사람은 Bornstein이라는 사람인데, Bonrnstein의 조상들이 아이슬란드의 한 어촌인 Dalvik에서 살았기 때문에 이렇게 명했다고 합니다.

 

안드로이드 앱은 최적화된 그래픽을 제공합니다. 안드로이드에서는 기본적으로 2D 그래픽 라이브러리를 제공합니다. 또 OpenGS ES 1.0 스펙에 기반한 3D 그래픽 라이브러리도 제공하고 있습니다.

 

안드로이드 앱 만들기를 할 때 데이터를 저장하거나 검색하기 위해 SQLite를 사용합니다. 안드로이드에서 제공하는 데이터베이스 시스템이라고 생각 하시면 됩니다.

 

안드로이드 앱을 만들기 위해서 안드로이드는 일반적인 오디오, 비디오, 그리고 이미지 포맷들을 지원합니다. 현재 안드로이드에서 지원 가능한 포맷은 MPEG4, H.264, MP3, AMR, JPG, PNG, GIF 등이 있습니다.

 

그리고 안드로이드 앱을 에뮬레이터에서 테스트 할 때는 사용하기 힘들지만 GSM 테크놀로지, 블루투스, EDGE, 3G, WiFi, 카메라, GPS, 나침반, 가속도계 등도 실제 안드로이드폰에서는 지원이 가능합니다.

 

안드로이드 앱을 만들기 위한 풍부한 개발 환경도 제공이 됩니다. 디바이스 에뮬레이터, 디버깅 도구, 메모리 및 성능 프로파일링, Eclipse IDE를 위한 플로그인을 제공합니다. 그리고 폰에서 사용하는 웹브라우저도 제공하고 있습니다.

 

안드로이드 아키텍쳐

 

안드로이드 운영체제의 주요 구성 요소는 애플리케이션, 애플리케이션 프레임워크, 라이브러리, 안드로이드 런타임, 리눅스 커널로 이루어져 있습니다. 애플리케이션 계층에서는 이메을을 확인할 수 있는 클라이언트, SMS 프로그램, 캘린더, 지도, 브라우저, 주소록 등을 키 애플리케이션으로 제공합니다. 모든 애플리케이션은 자바 언어로 작성되어 있습니다. 그리고 애플리케이션 프레임워크 계층은 프레임워크를 사용하여 자신만의 앱 만들기가 가능하게 해줍니다. 애플리케이션 프레임워크에서는 앱을 만들기 위한 각종 클래스와 메소드들을 제공합니다. 라이브러리 계층은 안드로이드 시스템의 라이브러리들을 애플리케이션 프레임웤를 통해 개발자들에게 제공됩니다. 다음에 나열된 것은 핵심 라이브러리들 중 일부입니다.

 

시스템 C 라이브러리: 임베디드 리눅스 기반의 디바이스를 이해서 튜닝된 표준 C 시스템 라이브러리입니다

미디어 라이브러리: MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 등의 이미지와 오디오, 비디오 등의 다양한 포맷들의 재생 및 녹화를 지원하는 라이브러리입니다.

Suface 관리자: 디스플레이 시스템 접근을 지원하는 라이브버리입니다.

LibWebCore: 최신 웹 브라우저입니다.

SGL: 2D 그래픽 엔진입니다.

3D 라이브러리: OpenGL ES 1.0 API에 기반하여 구현된 3D 라이브러리입니다.

FreeType: 비트맵 또는 벡터 폰트 렌더링을 지원하는 라이브러리입니다.

SQLite: 강력하면 경량화된 관계형 데이터베이스 엔진으로 모든 애플리케이션에서 사용할 수 있습니다.

안드로이드 런타임 계층에서는 자바의 핵심 라이브러리의 기능을 대부분 포함하고 있습니다. 모든 안드로이드 앱은 Dalvik 가상 머신에 자신의 인스턴스를 가지고 동작합니다. Dalvik에서는 최소 메모리만 사용하도록 최적화된 Dalvik Executable 포맷의 파일들을 실행합니다. Dalvik VM은 자바 언어 컴파일러로 컴파일한 클래스를 dx도구로, .dex 포맷으로 변환해서 실행합니다. Dalvik 가상 머신에서는 스레딩과 저수준 메모리 관리와 같은 기능을 리눅스 커널에 의존합니다. 리눅스 커널은 안드로이드 플랫폼의 보안, 메모리 관리, 프로세스 관리, 네트워크 관리, 드라이버 모델 등의 핵심 서비스의 기초가 되는 계층입니다. 이 리눅스 커널은 하드웨어와 나머지 소프트웨어 스택 간의 추상화 된 layer 역할을 합니다.

 

오늘은 안드로이드 앱 만들기 특징과 구조에 대해 알아봤습니다. 안드로이드 앱이 세상에 나온지 몇 년이 흘렀습니다. 어떤 누구는 이제 안드로이드는 포화 상태다. 개인 개발로는 진입 할 진입점이 없다 라고 하지만 아직까지 만들어 지지 않은 앱들도 많고 틈새를 찾아 보면 진입할 시장도 분명히 있을거라 생각합니다. 그리고 안드로이드 앱을 만들기 위한 기술도 점점 더 발전하고 시장도 더 확대될 것이라 생각되기 때문에 지금부터라도 안드로이드 앱 만들기를 조금씩 배워보는건 어떨까 합니다.




'IT' 카테고리의 다른 글

타이젠 os 알아보기  (0) 2016.09.04
GCC 컴파일 시작하기  (0) 2016.09.03
C언어 프로그램 만들기  (0) 2016.09.01
델파이 언어  (0) 2016.08.30
씨게이트 외장하드 2T 구입후기  (0) 2016.08.30
댓글