[AndroiStudy] 안드로이드 어플리케이션을 개발하려면?


Android/안드로이드 프로그래밍 2011. 3. 22. 14:34



 

안드로이드 어플리케이션 개발의 이해

 스마트폰 열풍이 폭풍처럼 세계를 쓸고 있습니다.
이러한 스마트폰 중 가장 대표적인 Apple의 iOS, Google사의 Andorid OS, MS의 Window Phone 7 정도로 스마트폰 OS를 압축 할 수 있겠네요. 안드로이드 어플리케이션에 최근 많은 관심을 가지고 '스마트폰OS' 아니 심지어 'OS'조차 모르던 사람들의 입에서 '안드로이드' '운영체제' 라는 단어가 익숙해지고 있습니다.

 분명 스마트폰 보급률의 겉모습을 볼 것이 아니라 안을 들여다보면, 휴대 디바이스의 하드웨어적 성능이 날이 갈수록 발전하고, 더더욱이 무선인터넷의 폭과 속도는 넓고 빨라질 것입니다. 이러한 시점에서 모바일에 대한 이해와 어플리케이션 제작에 시력을 쌓는다면 충분히 승산이 있습니다. 때문에 안드로이드 어플리케이션 개발 스터디를 하고 더욱 더 열심히 박차를 가해 안드로이드 스터디를 해 볼 예정입니다. 

 모바일 운영체제
스마트폰 이전의 폰들은 노말폰, 이른바 피처폰이라고 불렸습니다.
제조사에서 미리 설치해놓은 프로그램만 사용할 수 있으므로 구매 후 바로 사용하며 제한적인 기능만을 제공합니다. 내장된 프로그램을 교체할 수가 없었죠. 현재의 스마트폰의 경우에는 더 이상 휴대폰이 아니라 하나의 컴퓨터로 인식을 해야 하는데, 프로그램이 공통으로 사용할 프로세스가 필요하고 일정한 규칙이 있어야 하는데 이를 제어하는 부분이 운영체제입니다!
 안드로이드 OS는 안드로이드 플랫폼을 기반으로 여러 어플리케이션 및 여러 시스템들이 구동되는 것을 이야기 합니다.
데스크톱 운영체제에도 많은종류가 있듯 모바일 운영체제도 다양한 제품들이 사용되고 있습니다.

 안드로이드의 등장
안드로이드는 각종 모바일 운영체제가 치열한 경쟁을 벌이는 혼잡한 상황에서 등장을 했습니다.


구글은 오픈적인 정책으로 안드로이드를 끌고 갔습니다.

폐쇄적인 정책을는 대표적으로 아이폰을 들 수 있겠네요.

폐쇄적인 것이 좋다, 오픈적인 것이 좋다. 라고 콕 찝어 이야기 할 수 없는 부분은 각자의 장단점이 있기 때문입니다.

애플의 경우 폐쇄적인 경우에 라이센스 비용이 들지만 개발환경과 본사의 지원이 탄탄한 이점이 있습니다.
개방된 환경은 비용이 들지 않지만, 너무 많은 버전들이 존재해 호환성에 문제가 있는 경우가 많습니다.

(이에 MS사의 Window Phone7은 중간 정책을 선택하여 진행하고 있습니다)

구글이 안드로이드를 만든 근본적인 목적은 모바일 환경에서 인터넷을 더 많이 보급시키기 위해서였습니다.
태생적으로 인터넷을 통해 수익을 창출하는 인터넷 기업 구글은 데스크톱 시장에서 모바일 시장까지 넘어가는 부분이 안드로이드입니다.

2005년 7월부터 개발을 시작 2007년 11월에 안드로이드 첫 버전을 릴리즈했습니다.
최초 상용 안드로이드 폰은 2008년 10월 HTC G1 이며 2010년 2월 모토로이로 국내에 들어왔습니다.


2008년부터 SDK 와 문서들을 배포하고 주기적으로 업그레이드 하며 개발자를 지원하고 있습니다.

 안드로이드의 특징
1. 운영체제의 핵심이라고 할 수 있는 커널은 공개 운영체제인 리눅스에 기반한다. 모바일 환경에 어울리지 않는 크고 무거운 기능은 제거되었으며 알람, 디버거 등의 기능은 추가되었습니다.
2. 공식적으로 자바언어를 사용합니다.
3. 검증된 많은 라이브러리를 대거 포함, 많은 개발 기능, openGL, SQLite, 등의 써드파티 라이브러리까지 내장
4. 개방된 환경인만큼 개발툴과 관련문서들이 모두 무료로 제공된다.


프레임 워크의 경우, 제일 하위 핵심인 리눅스 커널이 있습니다. 백그라운드 스레드, 메모리 관리, 보안, 무선 인터넷, 메모리 등이 이 부분에서 해결됩니다.

 커널 위에는 응용 프로그램 들이 공통적으로 사용하는 시스템 라이브러리가 있는데, 장비 속도를 결정하는 부분이라 C로 작성되어 있습니다. 자바가 아니라 C인 이유는 네이티브 코드가 아니라서 성능면에서 만족을 시키지 못하기 때문입니다. 이 곳에 있는 라이브러리는 2D그래픽, 3D그래픽, 오디오, 비디오, 웹킷엔진 등이 있겠습니다!

안드로이드 런타임은 달빅가상머신로 이뤄져 있는데, 각 프로세스 별로 달빅 가상머신이 할당되므로 복수의 가상머신도 효율적으로 돌아가게 됩니다 (멀티태스킹의 가능)

그 위 프레임워크에는 구글 안드로이드 API 인데요. 응용 프로그램들은 하위의 커널이나 시스템 라이브러리를 직접적으로 호출할 수 없으며, API 를 통해서 기능을 요청해야 합니다. 

그 위에는 사용자들이 직접적으로 대면하는 응용 프로그램들이 있으며 개발자들이 만들어야 할 대상이에요. 인터넷 브라우저, 바탕화면, 주수록 등 플랫폼과 함께 설치되는 애플릿은 물론이고 모든 어플들이 이 수준에서 실행됩니다.

안드로는 4가지로 구성되는데, 액티비티, 서비스, 바송 수신자, 콘텐트 제공자 로 이루어집니다.

- 액티비티 : 사용자 인터페이스를 구성하는 기본단위, 일단 윈도우와 유사한 개념으로 생각 하되 정확하게 같지는 않으며 윈도우보다는 더 큰 개념이에요. 눈에 보이는 화면 하나하나가 액티비티이며 여러개의 뷰들로 구서이 됩니다.

- 서비스 : UI 가 없어 사용자 눈에 직접적으로 보이지 앟으며 백그라운드에서 무한히 실행되는 컴포넌트이에요. 전형적인 예로 미디어 플레이어를 들 수 있는데 비활성화 된 상태라도 노래는 계속 재생되어야 해요. 

- 방송 수신자 : 시스템으로부터 전달되는 방송을 대기하고 신호전달시 수신하는 역할을 해요. 예를 들어 배터리가 떨어졌다거나 사진을 찍었다거나 네트워크 전송이 완료되었다는 등의 신호를 받습니다.

- 콘텐트 제공자 : 다른 응용 프로그램을 위해 자신의 데이터를 제공한다. 안드로이드는 보안이 엄격하여 프로그램의 데이터를 함부로 액세스 하지 못하도록 되어 있어요.


삼성전자 갤럭시 S20 플러스 자급제폰, 코스믹 그레이, 256GB Apple 에어팟 프로 (노이즈캔슬링 방수 블루투스 5), MWP22KH/A, 단일 색상 삼성전자 갤럭시탭S6 10.5 128G WIFI, SM-T860N, 마운틴 그레이

WRITTEN BY
ShakeJ

트랙백  0 , 댓글  4개가 달렸습니다.
  1. 역시 쉬운게 없는거군요..ㅠ
  2. 황병민 2011.11.01 22:05
    저도 한창 유행할때 안드로이드 관련 서적을 3권이나 삿던 적이 있어요.
    근데 이 개발이란게.... 기초지식 없이는 너무 어렵더라구요
    c언어에서부터 자바라든지 등등 어려가지 알아야 하고 솔직히
    독학으로 개발하기 참 어려운거 같아요.ㅠㅠ
    • 음..조금씩조금씩 하시면 충분히 하실수 있습니다 !
      저는 죽어라 공부한지 2년이 되었네요 ! ^^
      독학으로도 6개월정도 되시면 어느정도 이해가 가실거에요 ^^ 쑥쑥 느실겁니다!!
secret