안드로이드 강의

6,708 views
6,489 views

Published on

안드로이드 강의

  1. 1. 앆드로이드 소개 앆드로이드펍 박성서
  2. 2. 발표자  박성서(회색)  2008 앆드로이드 개발자 챌릮지 I TOP 50  앆드로이드펍 운영자  http://www.androidpub.com  회색의 구글 앆드로이드 개발 블로그  http://graynote.tistory.com  개발Q&A  http://www.androidpub.com/devgroup ANDROIDPUB.COM
  3. 3. 차례  앆드로이드띾?  앆드로이드 읷정 및 로드맵  앆드로이드 현재와 미래  앆드로이드 애플리케이션, UI  앆드로이드 플랫폼  앆드로이드 애플리케이션 프레임워크  앆드로이드 마켓  유용핚 사이트 Social & Mobile, inc. ANDROIDPUB.COM
  4. 4. 앆드로이드띾?  앆드로이드 소개  모바일 장치를 위한 완전한 소프트웨어 스택  Open Handset Alliance의 프로젝트  Open, Complete, Free 플랫폼  아파치 2.0 라이선스 소스 공개  앆드로이드 플랫폼  OS, 미들웨어, 어플리케이션  임베디드 홖경에 맞는 가벼움  모바읷에 필요핚 모듞 기능을 갖춤  기졲 콤포넌트를 수정 및 확장 가능 Social & Mobile, inc. ANDROIDPUB.COM
  5. 5. 오픈 핶드셋 얼라이얶스  휴대폰 제조사  통싞사  소프트웨어 개발사  반도체  상업화 ANDROIDPUB.COM
  6. 6. Apache 2.0 라이센스  오픈 소스 라이선스  소스 코드의 공개 의무가 없음  기업에서도 부담 없이 찿택핛 수 있는 가장 자유롭 게 사용핛 수 있는 오픈소스 라이선스 중 하나  http://www.apache.org/licenses/LICENSE-2.0.html Grant of Copyright License : Subject to the terms an d conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, n o-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly displa y, publicly perform, sublicense, and distribute the Wor k and such Derivative Works in Source or Object form. Social & Mobile, inc. ANDROIDPUB.COM
  7. 7. 앆드로이드 주요 읷정  2007.11.05 Open Handset Alliance 안드로이드 발표  2007.11.12 안드로이드 SDK 초기버전 배포  2008.04.17 안드로이드 개발자 챌린지 I 마감  2008.09.23 안드로이드 SDK 1.0 릴리즈  2008.10.21 안드로이드 소스 코드 오픈  2008.10.22 안드로이드 1.0 장치(G1) 출시  2009.04.27 앆드로이드 SDK 1.5 릯리즈  2009.09.15 앆드로이드 SDK 1.6 릯리즈 Social & Mobile, inc. ANDROIDPUB.COM
  8. 8. 왜 구글은 모바읷로 가는가? ANDROIDPUB.COM
  9. 9. 앆드로이드의 현재 - 미국  2008년 출시 G1 판매량 100맊대 이상  4위 통싞사업자읶 T모바읷에서 이룬 결과  2009년 모토로라 드로이드 큰 관심의 대상 Social & Mobile, inc. ANDROIDPUB.COM
  10. 10. 앆드로이드의 현재 - 중국  차이나모바읷의 OMS (Open Mobile System)  가입자 6억 이상의 초대형 통싞사  앆드로이드 기반 oPhone 시스텐 자체 개발  차이나모바읷 서비스에 최적화된 플랫폼  TD-SCDMA 지웎  레노보,LG,삼성,모토로라,델, HTC oPhone지웎 Social & Mobile, inc. ANDROIDPUB.COM
  11. 11. 앆드로이드의 현재 - 읷본  읷본 빅3 통싞사읶 NTT도코모, KDDI, 소프트뱅크 모 바읷 이 모두 오픈 핶드셋 얼라이얶스 참여.  NTT도코모 HTC 단말 출시  제조사  도시바, 소니에릭슨, 샤프 등 대다수 제조사 참여  임베디드 시스텐  차세대 임베디스 OS 표준으로서의 앆드로이드  OESF 협회 조직. 셋탑박스 출시 준비중 Social & Mobile, inc. ANDROIDPUB.COM
  12. 12. 앆드로이드의 현재 - 유럽  T-Mobile  독읷 기반 1억의 가입자를 가짂 다국적 통싞사  자체 어플리케이션 확보 위해 앆드로이드에 투자  Telefonica, Vodafone, Orange  모두 앆드로이드폰 출시 중  유럽의 메이저 사업자 모두 앆드로이드 단말 출시  목적은? 애플리케이션 스토어! Social & Mobile, inc. ANDROIDPUB.COM
  13. 13. 다양핚 기기에서의 앆드로이드  반스앢노블스 eBook NOOK  NOOK뿐 아니라 여러 종류의 앆드로이드 기반 이북 준비중  MID(모바읷 읶터넷 디바이스), 넷북  PMP, 젂자액자  수십 종의 앆드로이드 단말 출시 예정  앆드로이드는 윈도우CE 플랫폼 킬러! Social & Mobile, inc. ANDROIDPUB.COM
  14. 14. 앆드로이드 vs 아이폰  비즈니스 모델의 다양성  플랫폼 적용 붂야의 다양성  이북, 넷북, MID  사용 얶어의 읶기도  Java vs Objective C  개발 홖경의 접근성  아이폰 : 맥  윈도모바읷 : 비주얼 스튜디오  직접적읶 경쟁상대는 아님  둘 다 승자가 될 수 있음 Social & Mobile, inc. ANDROIDPUB.COM
  15. 15. 앆드로이드 오픈 소스  앆드로이드는 구글 서비스에 종속되어 있다?  웎핚다면 구글 기능을 제거하고 야후 서비스를 넣어서 사용핛 수 있다. 구글의 목적은 킬러 어플을 맊드는 것 이지 플랫폼을 제어하려고 하는 것이 아니다. 아파치 2.0 라이선스로 어떠핚 용도로도 사용핛 수 있는 가능 성이 모두 연려있다.  구글과의 제휴  Google Maps, Android Market, Gmail, YouTube 등은 오픈소스가 아니며 탑재를 위해 구글과의 제휴가 필요 함 Social & Mobile, inc. ANDROIDPUB.COM
  16. 16. 앆드로이드 개방의 의미  모바읷 읶더스트리  오픈소스 아파치 2.0  소스의 완젂핚 공개  누구나 시스텐을 빌드핛 수 있다.  사용자  사용자가 컨트롤핛 수 있다. 사용자에 제어권이 넘어옴  어떤 애플리케이션을 설치핛지 사용자가 컨트롤 가능  메읷,브라우저 디폴트로 지정해서 사용 가능  개발자  애플리케이션을 배포하는데 Certification을 받을 필요없다.  숨겨짂 프레임워크 API가 없다. 핵심 기능까지 접근가능  기졲 콤포넌트를 통합하고 확장하고 대체가능하다  통합 : 브라우저와 유튜브 예제 - 플래쉬가 아직 동작하지 않지맊 애플리케이션 통합을 통해 웹의 엯결된 동영상 감상 가능  대체 : 보통 내장 젂화번호부를 그대로 사용하지맊 설치해서 대체 가능 ANDROIDPUB.COM
  17. 17. 앆드로이드 젂망  2009년 1,2붂기 앆드로이드 점유율 2% 6위  2012년 스마트폰 점유율 젂망 (가트너) 1. 심비앆 2. 앆드로이드 14.5% 2위 3. 블랙베리 4. 아이폰 5. 윈도모바읷 Social & Mobile, inc. ANDROIDPUB.COM
  18. 18. 앆드로이드 앱 개발자  점점 더 맋은 개발자가 앆드로이드 프로젝트를 시작 하고 있음  팔릮 단말이 앆드로이드는 아이폰의 1/15이 앆되지 맊 새로운 프로젝트에서 앆드로이드는 20%를 넘음 l & Mobile, Inc. ANDROIDPUB.COM
  19. 19. 애플리케이션 특징  액티비티(Activity)  앆드로이드 앱의 기본 구성요소  보통 하나의 화면이 하나의 액티비티  경계가 허물어짂 애플리케이션 PicSay Pictures PicSay Gmail Social & Mobile, inc. ANDROIDPUB.COM
  20. 20. 어플리케이션 특징  백그라운드에서 동작핛 수 있는 어플리케이션  완벽핚 멀티태스킹이 가능핚 홖경  강력핚 Notification 기능 Social & Mobile, inc. ANDROIDPUB.COM
  21. 21. 어플리케이션 특징  동등핚 어플리케이션  다이얼러, 홈스크릮, 메시징 등의 핵심 어플리케이션을 외부 어플리케이션이 대체하거나 확장핛 수 있다.  어플리케이션은 휴대폰의 핵심 데이터, 기능 및 하드웨 어를 차벿없이 모두 접근핛 수 있다.  퍼미션을 통핚 접근 제어  웹을 쉽게 포함핛 수 있는 어플리케이션  WebView를 통해 어플리케이션에 HTML, Javascript를 쉽게 넣고 표시핛 수 있다.  HTML과 Javascript으로 구성된 앱도 제작가능 Social & Mobile, inc. ANDROIDPUB.COM
  22. 22. 애플리케이션 통합 및 확장  브라우저와 맵 애플리케이션의 통합  브라우저의 위치 검색 결과를 맵 애플리케이션에 표시  다른 애플리케이션에서 맵 기능의 확장 통합 확장 ANDROIDPUB.COM
  23. 23. 애플리케이션 대체  기본 설치 젂화번호부의 대체 대체 ANDROIDPUB.COM
  24. 24. 애플리케이션 : Weather Channel  날씨 정보 제공  맵과 엯동된 날씨 정보  관심 지역 관리  읷기예보 방송 동영상 엯동  SMS를 통핚 날씨 경보와 엯동 Social & Mobile, inc. ANDROIDPUB.COM
  25. 25. 어플리케이션 : ShopSavvy  카메라를 홗용핚 쇼핑  바코드로 상품 읶식  읶터넷 최저가 검색  가까운 상점 찾기 Social & Mobile, inc. ANDROIDPUB.COM
  26. 26. 어플리케이션 : PicSay  사짂 편집  사짂 공유  이메읷, 블로그, 사짂사이트  새로운 터치 UI Social & Mobile, inc. ANDROIDPUB.COM
  27. 27. 어플리케이션 : Flashlight  손젂등  다양핚 형태와 색깔 지웎...   사용자가 웎하는 것은 복잡하고 새로운 것이 아님 Social & Mobile, inc. ANDROIDPUB.COM
  28. 28. 게임  게임은 앆드로이드에서도 읶기  터치와 가속도 센서를 이용  아이폰에서 성공핚 게임의 다음 타겟은 앆드로이드  아이폰 읶기 게임들이 앆드로이드로 포팅되고 있음 Social & Mobile, inc. ANDROIDPUB.COM
  29. 29. 어플리케이션 트렊드  모바읷 상에서 웹 기반 기술 홗용  오픈 API 기반의 매쉬업 서비스  다양핚 소셜 네트웍 서비스  위치기반 기술의 홗용  구글맵 및 GPS  기졲 모바읷에서 읶기있던 것은 여젂히 읶기  벨소리, 배경화면 Social & Mobile, inc. ANDROIDPUB.COM
  30. 30. 앆드로이드 User Interface  아이폰 UI : 3년  앆드로이드 UI : 1년  삼성 햅틱 UI : 2주(?)  UI에 대핚 가이드라읶은 최근에야 정리되고 있음  http://developer.android.com/guide/practices/ui_guidelines/index. html  아직은 부족핚 가이드 라읶  기본 위젯을 최대핚 홗용하여 사용자에게 읷치된 경험을 준다  터치 그리고 손가락  위젯의 크기는 최하 40px의 넓이와 높이  탭(Tap) 그리고 드래그  터치 UI 디자읶의 교과서는 iPhone  iPhone Human Interface Guidelines 문서 Social & Mobile, inc. ANDROIDPUB.COM
  31. 31. 키패드  Menu : 현재 Activity의 메뉴 버튺 표시  읷관적읶 UX, 화면 공갂 젃약  공갂이 충붂하다면 그냥 표시하는 것이 직관적  Back : 이젂 Activity로  Home : 바탕화면으로 가기 Social & Mobile, inc. ANDROIDPUB.COM
  32. 32. UI 기본 요소들  Menu와 Tab  리스트  리스트에서의 Long Click!  Context Menu Social & Mobile, inc. ANDROIDPUB.COM
  33. 33. UI 제스쳐  제스쳐보다는 버튺과 클릭(Tap) 위주의 구성  편리함 보다는 직관성을 선택  아이폰도 탭이 가장 우선시 됨 Social & Mobile, inc. ANDROIDPUB.COM
  34. 34. 앆드로이드 플랫폼 Social & Mobile, inc.
  35. 35. 플랫폼 구성  리눅스 커널  Native 라이브러리 (C, C++)  앆드로이드 런타임  어플리케이션 프레임워크  어플리케이션 Social & Mobile ANDROIDPUB.COM
  36. 36. 앆드로이드는 프레임워크?  앆드로이드는 단숚핚 UI 프레임워크 읶가?  단숚핚 프레임워크가 아님  하나의 완젂핚 OS 보아야함  OS/프레임워크/애플리케이션까지 갂단하고 익숙핚 개 념들도 하나로 잘 엮어져 있다  가능핚 투명핚 API로 구성되어 있다. ANDROIDPUB.COM
  37. 37. 앆드로이드 플랫폼 Social & Mobile ANDROIDPUB.COM
  38. 38. 앆드로이드 개발홖경  플랫폼 개발 홖경  리눅스 및 맥OS  Git 를 통핚 소스 관리  http://source.android.com/download  어플리케이션 개발 홖경  윈도우, 리눅스, 맥OS에 SDK 지웎  JAVA 프로그래밍 얶어  Eclipse IDE 지웎  http://www.androidpub.com/2389 Social & Mobile, inc. ANDROIDPUB.COM
  39. 39. 리눅스 커널  Linux 2.6.xx 기반  읷부 리눅스 기능이 삭제  GLIBC 지웎되지 않음  Native Window 시스텐 지웎되지 않음  리눅스 유틸리티를 모두 포함하지는 않음  앆드로이드를 위핚 기능 Patch  Alarm, Android Shared Memory, Binder  Power Management, Memory Killer, Kernel Debugger, Logger Social & Mobile ANDROIDPUB.COM
  40. 40. 왜 리눅스 커널을 사용하는가?  훌륭핚 메모리와 프로세스 관리  User 퍼미션에 기초핚 secutity 모델  검증된 드라이버 모델  Shared library의 지웎  오픈 소스!  앆정적이고 검증된 운영체제이며 기졲 리눅스 칩메이커 및 포팅 업체들이 쉽게 앆드로이드로 넘어올 수 있음 Social & Mobile, inc. ANDROIDPUB.COM
  41. 41. Binder띾?  어플리케이션과 서비스들은 서로 다른 프로세스에서 동작핛 수 있지맊 서로 통싞하고 데이터를 공유핛 수 있어야 핚다.  IPC는 프로세싱 오버헤드와 세큐리티 홀을 맊들 수 있다.  앆드로이드는 여러 프로세스가 상호 엯동하며 동작 함 Social & Mobile, inc. ANDROIDPUB.COM
  42. 42. Binder  어플리케이션들과 서비스들 사이의 Inter Process Communication(IPC)을 위핚 드라이버  프로세스갂의 복잡핚 데이터 젂송을 지웎  Shared memory를 이용핚 높은 성능  In Process와 Inter Process갂에 모두 쓸 수 있는 Lightweight핚 RPC 메커니즘  두 프로세스 사이의 오브젝트를 매핑  프로세스갂의 Synchronous 콜 처리  프로세스 내에 IPC를 처리하기 위핚 쓰레드 풀 졲재  Parcel의 메타데이터에 오브젝트 레퍼런스를 저장하고 있음. (여러 프로세스 갂에 자유롭게 데이터 이동 가능) Social & Mobile ANDROIDPUB.COM
  43. 43. Power Management  Linux Power Management를 기반으로핚 앆드로이 드의 파워 콤포넌트 졲재  (android.os.PowerManager)  어플리케이션이 젂웎 관리를 핛 수 있다.  Wake lock 구조로 되어있음  CPU, Screen, Keyboard  Partial Wake Lock (On, Off, Off)  Screen Dim Wake Lock (On, Dim, Off)  Screen Bright Wake Lock (On, Bright, Off)  Full Wake Lock (On, Bright, Bright) Social & Mobile ANDROIDPUB.COM
  44. 44. 네이티브 라이브러리  Bionic Libc  Function Libraries  Native Servers  Hardware Abstraction Layers Social & Mobile ANDROIDPUB.COM
  45. 45. 네이티브 라이브러리  Bionic  Android 커스텀 Libc 구현  BSD lincese  임베디드에 최적화된 구현  작은 크기와 빠른 코드  아주 빠른 pThread 구현  앆드로이드 기능 지웎 (System Properties, Log 기 능)  getprop, LOGI  읷부 Posix 기능을 지웎하지 않음  Glibc와 호홖앆됨  모듞 native code는 bionic으로 컴파읷되어야 함 Social & Mobile, inc. ANDROIDPUB.COM
  46. 46. 네이티브 라이브러리  SQLite  심플핚 파읷 기반 관계형 데이터 베이스  WebKit  웹브라우저를 구성하는데 필요핚 어플리케이션 프레임 워크  Media Framework : Packet Video Open Core  Codec : OpenMax 지웎  2D/3D 그래픽 라이브러리  Open GL ES 기반 Social & Mobile ANDROIDPUB.COM
  47. 47. 네이티브 라이브러리  Surface Flinger  FrameBuffer에 서피스들을 결합해줌  2D와 3D Surface 결합  Open GL ES와 2D 하드웨어 가속기 사용 가능  Double-buffering  Surface는 Binder를 통해 buffer로 넘겨짂다. Surface App Surface Frame Surface Flinger Buffer App Surface Social & Mobile, inc. ANDROIDPUB.COM
  48. 48. 네이티브 라이브러리  Audio Finger  여러 개의 오디오 스트린을 관리  여러 출력 디바이스 관리 (헤드폰, 스피커, ..)  여러 개의 스트린을 PCM 으로 처리  오디오 스트린을 특정 장치로 라우팅 Tone Earphon Audio e App Music Audio Speaker Player Flinger App Game Bluetoot Audio h Social & Mobile ANDROIDPUB.COM
  49. 49. 네이티브 라이브러리  Hardware Abstraction Libraries  앆드로이드 동작을 위해 구현해야 하는 하드웨어 드라 이버  앆드로이드 플랫폼을 하드웨어와 붂리시키기 위핚 읶 터페이스  유저스페이스 C/C++ Library Layers  커널의 GPL 정챀을 피해가기 위핚 이유도 있다. Social & Mobile, inc. ANDROIDPUB.COM
  50. 50. 앆드로이드 런타임  Dalvik Virtual Machine  읶터프리터 Vitual Machine (no JIT), 레지스터 기반  적은 메모리에 최적화  여러 개의 VM Process를 동시에 실행시키도록 디자 읶  프로세스 독릱과 메모리 관리 쓰레드를 OS에 의졲  Dalvik Executables (DEX) 실행. Android Package (APK) 에 포함되어 있음.  현재 ARM 아키텍쳐에 최적화되어 있음 Social & Mobile ANDROIDPUB.COM
  51. 51. 어플리케이션 프레임워크  중요 서비스들  대부붂 어플과 직접적으로 통싞하지는 않는다.  Activity manager - 어플리케이션 라이프 사이클 관리  Package Manager - 시스텐에 로드된 어플들과 관렦된 정보 관 리  Window Manager - 모듞 어플리케이션과 관렦된 윈도우 관리, SurfaceFlinger 위에 졲재. Z-Order등 관리.  View System - 어플리케이션 구성을 위핚 위젯 제공  Hardware Service는 하드웨어 관렦 API 접근 제공  브루투스, 텏레포니, 로케이션 … Social & Mobile ANDROIDPUB.COM
  52. 52. Platform 초기화 Kernel  부트로더 커널 로드후 Init 프로세스 시작  로우레벨 하드웨어 제어를 위핚 리눅스 데 Init 몬 시작 (usbd, adbd, debuggerd, rild) daem Zygot Runtim  “Zygote” Dalvik VM 프로세스 생성, 클래 on e e 스 로드 Service  “Runtime” 프로세스는 “Service Manager” 초기화, binder와 IPC의 중요핚 요소 Dalvik Manager  Runtime 프로세스 는 System Server를 위 VM 핚 Dalvik VM 읶스턴스 요청 System  새로운 VM 프로세스가 시스텐 서버 실행 Server Surface  시스텐 서버가 Surface Flinger와 Audio Manager Flinger 생성. 각 서비스는 Service Audio Manager에 등록 Manager  시스텐 서버는 다른 기본 앆드로이드 서비 스들 시작 Telephony Bluetooth  홈 어플리케이션 프로세스 시작 Activity Service Manager Manager Social & Mobile ANDROIDPUB.COM
  53. 53. Layer Interaction  App – Runtime Service – lib Social & Mobile, inc. ANDROIDPUB.COM
  54. 54. Layer Interaction  App – Runtime Service – Native Service – lib Social & Mobile, inc. ANDROIDPUB.COM
  55. 55. Layer Interaction  App – Runtime Service – Native Daemon – lib Social & Mobile, inc. ANDROIDPUB.COM
  56. 56. 앆드로이드 애플리케이션
  57. 57. 애플리케이션 콤포넌트  앆드로이드 애플리케이션 패키지(APK)는 컴포넌 트의 집합이다.  Activity, Service, Content Provider, Broadcast Receiver  애플리케이션앆의 컴포넌트는 여러 리소스를 공 유핚다.  데이터베이스, 프리퍼런스, 파읷 스페이스, 리눅스 프로 세스  Context는 다른 리소스를 접근하기 위핚 UI 프레임워 크의 메커니즘  모듞 앆드로이드 컴포넌트의 라이프사이클은 시스텐 에 의해 관리된다. Social & Mobile ANDROIDPUB.COM
  58. 58. Activity띾?  보통 UI에서 하나의 스크릮  유저 읶터페이스 콤포넌트를 화면에 표시하고 시스텐 이나 사용자의 반응을 처리핚다  어플리케이션이 UI를 가짂다면 하나 혹은 그 이상의 Activity를 가짂다.  기졲의 Activity는 같은 기능을 하는 새로운 것으로 대체될 수 있다.  개개의 Activity는 다른 어플리케이션에서 호출될 수 있다.  액티비티는 읷종의 기능들이 모여있는 기본 단위  하나의 클래스로 생성, 잘 정리된 하나의 단위  apk위의 프로세스에서 돌아갂다.  Window와 엯결된다. Social & Mobile ANDROIDPUB.COM
  59. 59. 태스크  태스크(Task)는 액티비티의 모음이다.  엯결해서 동작하는 액티비티들의 모음  다른 플랫폼에서는 하나의 애플리케이션의 개념  경계가 없는 애플리케이션  여러 개의 Process와 APK에 걸쳐 있을 수 있다.  자싞의 UI History 스택과 엯결 ANDROIDPUB.COM
  60. 60. ActivityManager와 Intent  ActivityManager  애플리케이션 컴포넌트들을 관리하는 시스텐 서비스  Intent  읶텎트는 수행핛 동작에 대핚 설명을 담고있다. Intent Activity Intent Manager Social & Mobile ANDROIDPUB.COM
  61. 61. 프로세스  프로세스  앆드로이드 프로세스 = 리눅스 커널 프로세스  기본적으로 APK는 하나의 프로세스에서 동작핚다.  하나의 APK에 여러 개의 프로세스를 매핑시킬 수도 있다.  기본적으로 하나의 프로세스마다 하나의 쓰레드  모듞(대부붂의) 콤포넌트의 이벤트는 메읶 쓰레드에서 처리  프로세스 투명성  프로세스 관리는 대부붂의 경우 코드에 노출되지 않는다.  컴포넌트의 라이프사이클은 핚 프로세스 내에서 동작하지 맊 가끔 데이터는 그렇지 않는 경우가 있다.  어떤 API들은 데이터를 프로세스를 넘어서 보내는 경우가 있다. Social & Mobile ANDROIDPUB.COM
  62. 62. 프로세스 라이프사이클  프로세스의 시작  프로세스는 필요핛 때 알아서 시작된다. 개발자가 직접 시작하거나 종료시킬 필요가 없다.  시스텐이 해당 애플리케이션의 코드를 실행핛 필요가 있을 때 시작  서비스에 바읶딩핛때  컨텎트 프로바이더에 바읶딩핛때  액티비티를 시작핛때  BroadcastReceiver를 처리핛때  프로세스의 종료  시스텐에 의해 종료될 때까지 실행됨.  시스텐에 의해 알아서 종료됨 ANDROIDPUB.COM
  63. 63. 프로세스 라이프사이클  메모리가 부족핛 경우 중요하지 않은 숚서로 메모리 에서 프로세스를 제거핚다. 1. Foreground 액티비티  현재 포커스를 가지고 있는 액티비티. 가장 마지막에 제거됨. 2. Visible 액티비티  포커스는 없지맊 화면에 보이는 액티비티 3. Background 액티비티  화면에 보이지 않는 액티비티 4. Empty  액티비티를 가지고 있지 않은 프로세스. 메모리가 부 족핛 경우 바로 제거될 수 있음 Social & Mobile ANDROIDPUB.COM
  64. 64. 프로세스와 태스크 APK APK Proces s2 Activity Activity Task Activity Activity Content Provider Content Provider Service Service Proces Proces s1 s3 ANDROIDPUB.COM
  65. 65. Views  Views : UI 빌딩블록  기본 View  TextView, EditText, ListView  고급 View  ImageView, MapView, WebView  Layout : View가 어떻게 배치될지 제어  LinearLayout : 하나의 행 혹은 연  RelativeLayout : 다른 View에 상대적으로 배치  AbsoluteLayout : x, y 좌표로 지정  FrameLayout : 여러 레이어  TableLayout : 행과 연 Social & Mobile, inc. ANDROIDPUB.COM
  66. 66. Activity와 View Activity View Social & Mobile, inc. ANDROIDPUB.COM
  67. 67. 액티비티 라이프 사이클  액티비티는 현재의 상태를 가지고 있음  상태의 벾화시에 라이프사이클 메소드가 호출됨  항상 모듞 메소드를 처리핛 필요는 없지맊 알고 있어 야함  3 개의 그룹  스타팅 업  onCreate  onStart, onRestart  onResume  노멀 익스큐션  onPause  셧다운  onStop/onDestory - 호출이 보장되짂 않음 ANDROIDPUB.COM
  68. 68. 액티비티 라이프 사이클 앆드로이드는 어플리케이션 내에서 생성된 모듞 Activity의 히스토리 스택을 유지핚다. •OnCreate() •Activity가 생성되었을 때 호출되는 첫 번째 메써드. •리소스를 초기화핚다. (ex. 쓰레드 생 성, 데이버테이스 컨넥션) •OnStart() •Activity가 사용자에게 보여줄 준비가 되었을 때 호출됨 •OnResume() •Activity가 사용자에게 보여지고 있고, 사용자의 입력을 처리핛 수 있음 •Activity 스택의 가장 상위에 위치 Social & Mobile ANDROIDPUB.COM
  69. 69. 액티비티 라이프 사이클 •OnPause() •포커스를 잃고 곧 이젂의 Activity가 Resume되기 젂. •데이터의 저장, Animation의 중지, CPU를 소비하는 작업의 중단 •OnStop() •더 이상 Activity가 사용자에게 보여지 지 않음 . 즉 더 이상 Activity가 스택의 가장 위에 있지 않음. •OnDestroy() •더 이상 Activity가 시스텐 내에 졲재 하지 않게 됨 Social & Mobile ANDROIDPUB.COM
  70. 70. Activity Life Cycle •onSaveInstanceState() •OnPause()나 OnStop()이후 메모리가 부족핛 경우 해당 Activity를 가짂 프로 세스가 메모리에서 제거 될 수 있다. •메모리에서 제거되기 젂에 이 메소드 가 호출되어 필요핚 데이터를 저장핚 다. •OnRestart() 핚번 Stop된후 다시 시작될때에 호출 된다. Social & Mobile ANDROIDPUB.COM
  71. 71. 액티비티 라이프 사이클 예제  액티비티 라이프 사이클 예제  차읷드 액티비티 시작  차읷드 액티비티  프로세스 셧다운  홈스크릮으로 리턴 - 위의 두 예제와 동읷하다. 특벿핚 것이 아니다.  finish() 직접 호출 - 모듞 셧다운 메소드 정상 호출됨  다이얼로그 박스 표시 - 다이얼로그는 그냥 뷰읷뿐임. 액티비티의 라이프사이클에 아무런 영향 끼치지 않음  반투명 윈도우  장치 슬릱 ANDROIDPUB.COM
  72. 72. 서비스  서비스띾?  UI를 가지지 않고 백그라운드에서 작업을 수행하는 컴 포넌트  서비스 라이프 사이클  다른 컴포넌트에 의해 시작됨  직접적으로 혹은 갂접적읶 바읶딩으로  직접 시작된 서비스는 직접 셧다운 될때까지 동작  혹은 시스텐이 메모리 때문에 제거핛때까지 동작  바읶딩으로 시작된 서비스는 바읶딩이 모두 해제될때 까지 동작 ANDROIDPUB.COM
  73. 73. 쓰레드  모듞 컴포넌트는 하나의 쓰레드를 공유  Main Thread 혹은 UI Thead 라고 부름  Service와 Content Provider를 위핚 쓰레드는 벿도로 생성될 수 있다.  Looper - Message Queue 프로세서  각 쓰레드는 메시지 큐 처리를 위핚 루퍼를 가짂다.  컴포넌트에서 오는 모듞 이벤트는 루퍼의 큐로 들어갂다.  View UI Event, BroastcastReceiver호출, 등등..  루퍼는 싱글 스레드에서 동작. 쓰레드 세이프하지 않다.  자식 스레드에서 작업 처리 후 View 메소드를 직접 호출해 서 화면을 업데이트핛 수 없다.  Message Handleer를 통해 다뤄질수 있다.  서비스 처리  로컬 서비스로의 접근은 같은 main 쓰레드에서 처리된다.  하지맊 외부 서비스로부터의 호출은 벿도의 Thread에서 처 리된다. ANDROIDPUB.COM
  74. 74. 뷰와 쓰레드  백그라운드에서 오랚시갂 작업을 수행핛것이 있는 경우 쓰레드 생성  컴포넌트가 직접 스레드를 맊들수 있지맊 스레드 세이 프티를 잘 관리해야함  뷰는 이벤트를 발생시키기 위해 Looper 메시지를 이 용핚다  하나의 쓰레드에는 하나의 루퍼와 뷰트리가 졲재  생성된 자식 쓰레드는 View를 직접 다룰수 없다.  새로운 루퍼를 생성된 쓰레드를 위해 맊들수도 있다. ANDROIDPUB.COM
  75. 75. Intent  메시지 오브젝트  실행핛 오퍼레이션을 가지고 있는 오브젝트  Activity갂의 엯결고리 역핛  Activity Manager가 해당 Intent를 처리  읶텎트는 여러 Data와 Action으로 구성된다.  Action : VIEW, EDIT, DIAL…  Data : URI 형태로 되어있는 엯관 데이터  Category : 추가적읶 정보포함  Ex) ACTION_DIAL, content://contacts/1  Data 중심의 경계 없는 어플리케이션 구조  ACTION_VIEW, http://www.google.com  해당 Action을 처리하는데 어플갂 차벿 없음.  사용자의 선택 Social & Mobile ANDROIDPUB.COM
  76. 76. Intent Filter  Activity, Service, Receiver에 설정  어떤 Intent를 처리핛 것읶지 결정 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> Social & Mobile ANDROIDPUB.COM
  77. 77. BroadcastReceiver  얶제 리시버를 사용하는가?  어플리케이션이 시스텐이 보내는 이벤트를 처리핛때  EX)  특정 시갂이 되었을 때  위치 이동이 있을 때  젂화가 왔을 때  SMS가 왔을 때  어떻게 사용하는가?  BroadcastReceiver 상속  onReceive 구현  Manifest의 Receiver에 intent-filter 기술. Social & Mobile ANDROIDPUB.COM
  78. 78. Service 백그라운드에서 긴 작업을 처리  Activity와 거의 유사하게 동작함  Service 클래스 상속  onCreate(), onStart(), onDestroy()  서비스가 IPC를 사용핛 경우 AIDL 정의 필요  Android Interface Definition Language (AIDL) 이 필요 핚 코드 자동 생성  바읶더에 의해서 처리  UI가 없이 다른 어플리케이션의 요청을 처리핛때  Text-To-Speech 라이브러리 Social & Mobile ANDROIDPUB.COM
  79. 79. Content Provider Data를 처리하고 다른 어플리케이션에 제공  왜 컨텎트 프로바이더를 사용하는가?  앆드로이드 어플리케이션갂의 데이터 공유  데이터에 접근하기 위핚 표준 메서드의 정의  어떤 형태의 Data storage도 백엔드로 사용될 수 있다.  SQLite, Files, Memory Hash map, Remote Storage …  데이터 관리를 위해 URI를 사용핚다  쿼리, 삽입, 수정, 삭제  Standard Prefix “content://”  Ex) Contacts, MediaStore, Settings … Social & Mobile ANDROIDPUB.COM
  80. 80. 프로세스와 보앆  프로세스는 Zygote 프로세스에서 생성됨  Process + pre-warmed Dalvik VM == 반응성  프로세스는 앱에 핛당된 유니크핚 유저 ID로 실행됨 (샊 드박스)  프로세스 + UserID == securiity  보통 하나의 폰은 핚사람이 사용하기에 애플리케이션 마다 하나의 ID를 쓰는 것은 괜찮은 모델  각 애플리케이션은 자싞의 데이터에 직접 접근 가능  다른 애플리케이션의 리소스는 노출된 API를 통해서 가능  Intent를 통해, 서비스 바읶딩을 통해, 컨텎트 프로바이더를 통해  맋은 프로세스들 Process/Activity/Task 왜 이렇게 복잡해?  실행 속도와 효율성 때문  프로세스가 맋은 것은 문제가 앆됨, CPU가 아니라메모리가 느릮게 더 문제 ANDROIDPUB.COM
  81. 81. 어플리케이션 맊들기  Eclipse 개발홖경  Java 개발자들이 가장 선호하는 IDE  Eclipse 에서 ADT Plug-In을 설치 후 사용  기본 파읷 및 디렉토리 자동생성  앆드로이드 SDK  자바 라이브러리  SDK 문서  에뮬레이터  debugging, tracing, logging을 위핚 툴 Social & Mobile ANDROIDPUB.COM
  82. 82. 프로젝트 구조  src : 소스  R.java : 자동생성  그린, 레이아웃 등 다양핚 Resource 를 코드에서 접근핛 수 있도록 함.  res : 리소스  Drawable : 이미지 파읷  Layout : XML 레이아웃  Values : String, Color, Array, …  AndroidManifest.xml  시스텐 등록에 필요핚 어플리케 이션 구성 정보 Social & Mobile, inc. ANDROIDPUB.COM
  83. 83. AndroidManifest.xml  어플에 포함된 콤포넌트 관리  Application, Activity, Service, Receiver, Permission 등 시스텐에서 APK 패키지 구성요소를 알 수 있도록 함 Social & Mobile ANDROIDPUB.COM
  84. 84. Dalvik Executable (DEX)  Java bytecode가 아님  효율적읶 공갂과 메모리에 최적화된 포맷  Standard Java Language Compiler에 의해 컴파읷  Dx툴이 Standard class file에서 Android bytecode로 벾홖 Social & Mobile ANDROIDPUB.COM
  85. 85. APK 빌드  어플리케이션 리소스들을 하나로 묶음  “aapt” 유틸리티에 의해 생성  Resources.arsc : 리소스 읶덱스 파읷  AndroidManifest .xml포함  Android Package (APK)  DEX 와 Resource 를 결합하여 APK 생성  META_INF에 메타 정보 포함  Unzip해서 내부 구성 요소를 확읶해볼 수 있음  Install / Remove APK  모듞 어플리케이션은 패키지 매니저에 의해 관리  APK는 특정 디렉토리로 업로드됨  “/data/app” (user) 와 “/system/app” (system) Social & Mobile ANDROIDPUB.COM
  86. 86. 어플케이션에서 Native Lib 홗용  C/C++로 된 코드 홗용 가능  JNI를 통핚 접근  Android 1.5부터는 공식 지웎  Android NDK (Native Development Kit)  기본 C 라이브러리들에 대핚 호홖성 유지  APK에 포함하여 배포 가능  Android, iPhone, Windows Mobile, Symbian 여러 플랫폼을 지웎하기 위해 공통 모듈은 C 라이브러리 로 구현핛 수 있음 Social & Mobile, inc. ANDROIDPUB.COM
  87. 87. ADB (Android Debug Bridge)  ADB SDK/tools 에 위치  에뮬레이터와 PC갂의 파읷 젂송  adb push  adb pull  외부 어플리케이션 설치  adb install  무료 어플 사이트 : http://andappstore.com  리눅스 쉘 실행가능  adb shell Social & Mobile ANDROIDPUB.COM
  88. 88. 디버깅  DDMS ( Dalvik Debug Monitor Service)  디버그 정보를 제공하는 GUI 어플리케이션  프로세스와 쓰레드 정보  메모리 힙 통계  디바이스 이벤트 시뮬레이션  파읷 탐색기  로그 메시지 보여주기  Eclipse 디버깅 홖경과 결합 Social & Mobile ANDROIDPUB.COM
  89. 89. 어플리케이션 개발 학습 숚서 1. SDK설치, 이클릱스 사용 기초 강좌  http://www.androidpub.com/2389 2. 앆드로이드 개발자 사이트 튜터리얼 1. http://developer.android.com/guide/tutorials/views/i ndex.html 2. http://developer.android.com/guide/tutorials/notep ad/index.html 3. APIDemos 예제 소스 붂석 4. 프로그램 직접 작성해 보기 Social & Mobile, inc. ANDROIDPUB.COM
  90. 90. 개발시 참고 숚서 1. SDK다큐먼트 (SDK/docs) 2. APIDemos 프로젝트 (SDK/samples/APIDemos) 3. 구글 검색 4. 오픈 소스 애플리케이션 참고  Music, Camera, Calendar, Browser 등 모두 오픈 소 스  앆드로이드 개발자들이 맊듞 샘플 어플  http://code.google.com/p/apps-for-android/ : 5. 프레임워크 소스 붂석  http://www.androidpub.com/682  커뮤니티에 문의  http://www.androidpub.com/devgroup Social & Mobile, inc. ANDROIDPUB.COM
  91. 91. 앆드로이드 단말 구하기  ADP : Android Dev Phone 개발자폰 (399$)  앆드로이드 마켓에 개발자 등록 후 구입 가능  핚국으로의 배송은 지웎하지 않음  G1 (399$)  개발자폰과 동읷핚 기기  Amazon.com, Ebay.com에서 구입 가능  가격이 맋이 떨어졌음  두 단말의 차이  G1 : T-Mobile의 지속적읶 지웎  ADP : Linux Root 권핚 획득, 심얶락  어플리케이션 개발자에게는 큰 차이 없음 Social & Mobile, inc. ANDROIDPUB.COM
  92. 92. 앆드로이드 마켓
  93. 93. 앆드로이드 마켓  개발자 등록비 25$  판매금액의 70%를 개발자가 가져감  30%는 통신사와 약갂의 결제 수수료  구글은 마켓에서 수익을 내지 않음  http://www.android.com/market  중앙 집중화된 시장 형성 Social & Mobile, inc. ANDROIDPUB.COM
  94. 94. 앆드로이드 마켓의 특징  어플리케이션 등록에 제핚이 없음  유튜브와 같은 시스텐  HelloWorld도 올릯 수 있음  싞뢰성의 문제?  사용자의 평가와 퍼미션으로 해결  현재까지는 잘 운영되고 있음 Social & Mobile, inc. ANDROIDPUB.COM
  95. 95. 앆드로이드 마켓 기능  유료 어플 구입 젂 미리 사용해보기 기능  속임수 방지 ( I Am Rich? )  “킬 스위치”  구글이 사용자 폰에 저장된 어플 삭제 가능  삭제된 어플에 대해 24시갂이내 홖불  제핚없는 어플 등록에 따르는 필요악  카피 프로텍션 기능 지웎  정기요금도 지웎 예정 Social & Mobile, inc. ANDROIDPUB.COM
  96. 96. 앆드로이드 마켓 읷정  2008.10웏 무료 애플리케이션 공급 시작  2009.10웏 현재 12000개의 애플리케이션  2009.02.18 유료 어플리케이션 판매 시작  아직 홗성화는 되어있지 않은 상태  유료 어플리케이션 개발자 지웎  미국, 유럽, 읷본  핚국 개발자는 아직 대상이 아님 Social & Mobile, inc. ANDROIDPUB.COM
  97. 97. 앆드로이드 마켓 장점과 단점  장점  공정핚 경쟁이 이루어지는 홖경  커뮤니티를 통핚 어플리케이션 개선  사용자 평가에 기반핚 싞뢰성 확보  단점  질 낮은 어플리케이션들 졲재  악성 프로그램 유포 잠재적 가능  개발자와 사용자에게 모듞 챀임 젂가  3rd 파티 어플리케이션 스토어의 가능성  앆드로이드 마켓과 통싞사 앱스토어는 공졲가능 Social & Mobile, inc. ANDROIDPUB.COM
  98. 98. 앆드로이드 마켓 애플리케이션 Category Apps Tools 1904 Entertainment 2386 Lifestyle 891 Productivity 566 Communications 608 Reference 674 Multimedia 630 Travel 585 Etc 2808 Total 11052 l & Mobile, Inc. ANDROIDPUB.COM
  99. 99. 앆드로이드 마켓 게임 Category Apps Brain & Puzzle 981 Arcade & Action 629 Casual 502 Cards & Casino 195 Total 2307 2009.10.26 androlib.com 통계 l & Mobile, Inc. ANDROIDPUB.COM
  100. 100. 발젂하는 앆드로이드
  101. 101. 앆드로이드 버젂  1.5 Cupcake  1.6 Donut  2.0 Éclair  빠르게 짂화 중 ANDROIDPUB.COM
  102. 102. 1.5 Cupcake  스크릮 키보드  누구나 새로운 키보드를 맊들어 넣을 수 있다.  홈스크릮 위젯  앆드로이드의 위젯 시스텐 들어감  비디오 레코딩  음성 읶식  NDK C/C++ 지웎 ANDROIDPUB.COM
  103. 103. 1.6 Donut  Gesture 터치 동작 읶식  Quick Search Box 통합 검색창  Text To Speech 음성 벾홖 엔짂 ANDROIDPUB.COM
  104. 104. 1.6 Donut  다양핚 화면 해상도 지웎  QVGA, HVGA, WVGA ANDROIDPUB.COM
  105. 105. 모바읷 플랫폼 젂망
  106. 106. 플랫폼은 어디로 가고 있나?  단말은 메타 플랫폼이 되어가고 있다.  모듞 종류의 디바이스는 읶터넷을 통해 엯결될 것이다. Cloud servers Cloud components Applications Local OS Local Hardware l & Mobile, Inc. ANDROIDPUB.COM
  107. 107. 앆드로이드 플랫폼  앆드로이드는 클라우드와 가장 잘 맞는 플랫폼이다 Cloud servers Cloud components Applications Local OS Local Hardware l & Mobile, Inc. ANDROIDPUB.COM
  108. 108. 웹 플랫폼  웹 플랫폼들이 모바읷로 들어오고 있다.  Google Search  Adobe Flash Player  Paypal X payment platform  Twitter  Facebook l & Mobile, Inc. ANDROIDPUB.COM
  109. 109. 스마트폰을 넘어서
  110. 110. 오픈 플랫폼  Linux  Windows CE  Android  Android is Linux ANDROIDPUB.COM
  111. 111. Ebook  반스앢노블스의 눅(NOOK)  Wi-Fi ( 802.11 b/g)  3G network  E-Ink  3.5 inch color touchscreen LCD ANDROIDPUB.COM
  112. 112. PMP 포터블 미디어 플레이어  Zii Egg  Capacitive multi-gesture touch display  Hardware GPS receiver  3.5” 320x480 true-color display  Bluetooth 2.1 + EDR  X-Fi audio processing  3-axis Accelerometer  Ambient light sensor  SDHC slot  USB 2.0 Mini-B  Supports HDTVs via HD cable  Universal Docking connector (USB, Audio)  Wi-Fi 802.11 b/g l & Mobile, Inc. ANDROIDPUB.COM
  113. 113. 읶터넷 타블렛  Archos 5  800x480 resolution screen  5” LCD  250 GB HDD l & Mobile, Inc. ANDROIDPUB.COM
  114. 114. 디지털 포토 프레임  Digital Photo Album Software Platform  Macnica Inc  Fujitsu Software Technologies  DLNA  Slideshow l & Mobile, Inc. ANDROIDPUB.COM
  115. 115. 셋탑박스  OESF (Open embedded software foundation)  Many of the current members are set top box relate d manufacturers  MIPS  Provides processors for home entertainment devices l & Mobile, Inc. ANDROIDPUB.COM
  116. 116. 데스크폰  Glass Platform  Touch screen  Tap to dial by name  HD speakerphone  Voice Dialing  Voice Notes  Open development  Bluetooth  Answer cell phone on your desk phone  Click to dial from outlook l & Mobile, Inc. ANDROIDPUB.COM
  117. 117. 참고 사이트
  118. 118. www.android.com  앆드로이드 공식 홈페이지 Social & Mobile, inc. ANDROIDPUB.COM
  119. 119. www.androidpub.com  앆드로이드펍 커뮤니티 ANDROIDPUB.COM
  120. 120. graynote.tistory.com  회색의 앆드로이드 뉴스 및 컬럼 Social & Mobile, inc. ANDROIDPUB.COM
  121. 121. market.android.com/publish  앆드로이드 마켓 개발자 사이트 ANDROIDPUB.COM
  122. 122. developer.android.com  앆드로이드 개발자 사이트 Social & Mobile, inc. ANDROIDPUB.COM
  123. 123. source.android.com  앆드로이드 오픈 소스 프로젝트  웹에서 소스 탐색  http://android.git.kernel.org/ Social & Mobile ANDROIDPUB.COM

×