1 / 45

안드로이드 개요

안드로이드 개요. 주요 내용. 안드로이드 소개 안드로이드 아키텍처 응용 프로그램 , 응용 프레임워크 안드로이드 런타임 , 라이브러리 리눅스 커널 안드로이드 SDK 개발 환경 구축 컴파일 과정 Hello, world 예. 안드로이드 소개. 구글 안드로이드 (Google Android). 모바일 장치 를 위한 소프트웨어 스택 리눅스 운영체제 , 미들웨어 와 핵심 응용 프로그램 들로 구성 안드로이드 SDK 제공

keaton
Download Presentation

안드로이드 개요

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 안드로이드 개요

  2. 주요 내용 • 안드로이드 소개 • 안드로이드 아키텍처 • 응용 프로그램, 응용 프레임워크 • 안드로이드 런타임, 라이브러리 • 리눅스커널 • 안드로이드SDK • 개발 환경 구축 • 컴파일과정 • Hello, world 예

  3. 안드로이드 소개

  4. 구글안드로이드(Google Android) • 모바일 장치를 위한 소프트웨어 스택 • 리눅스운영체제, 미들웨어와 핵심 응용 프로그램들로 구성 • 안드로이드SDK 제공 • 자바 언어로 안드로이드 응용 프로그램을 개발을 위한 API와 툴 제공 • 오픈소스 • 기존의 다양한 오픈소스를 기반으로 개발 • 기존의 오픈소스 라이선스 • GPL, GPL2, LGPL • Apache • BSD • MIT • SGI OpenGL

  5. 안드로이드 주요 특징 • 컴포넌트들의 교체와 재사용이 가능한 응용 프레임워크 • 모바일 장치에 최적화된 Dalvik가상머신 • Apache Harmony 표준자바 라이브러리, http://harmony.apache.org/ • Webkit기반 웹 브라우저, http://webkit.org/ • OpenGL ES 기반 3D 그래픽스 , http://www.khronos.org/opengles/ • SQLite에 기반한 데이터베이스, http://sqlite.org/ • OpenSSL에 기반한 SSL/TSL 보안라이브러리, http://openssl.org/ • 다양한 미디어 코덱지원 • MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF • GSM, 3G, 블루투스, WiFi, GPS, 카메라, 가속도계(accelerometer) 지원 • 풍부한 개발 환경 • 이클립스IDE 플러그인, http://www.eclipse.org/ • 디바이스 에뮬레이터, 디버깅 툴, 메모리성능 프로파일링

  6. 안드로이드아키텍처

  7. 응용프로그램 • 구글 또는 제3자가 Java로 작성한 응용 프로그램 • 안드로이드런타임(Dalvik가상머신, 코어 라이브러리)상에서 수행 • Java API는 Java SE 5 버전에 기반 • 기본 응용 프로그램 내장 • Email, SMS, Calendar, Maps, Browser, Contacts

  8. 응용 프레임워크 • 안드로이드 응용 프로그램 작성 시 사용되는 클래스들을 제공 • Activity Manager • 응용들의수명(life cycle)을관리 • Views • 응용들의 사용자 인터페이스의 구성 • Content Provider • 응용들간의 데이터 액세스와 공유 기능 제공 • NotificationManager • 사용자에게알려주는 시그널링 메커니즘 제공 • ResourceManager • 문자열, 그래픽등과 같은 코드가 아닌 리소스들을 액세스하는 기능

  9. Dalvik가상머신(1) • 안드로이드 아키텍처의 핵심 구성요소 • Java ME(Mobile Edition) 등과같은 기존 Java 가상머신을 사용하지 않고 고유의 가상머신 개발 • SUN의 라이선스 문제 회피 • Davlik은 레지스터-기반 가상머신 • Java 가상머신은스택-기반 가상머신 • Dalvik은 Java bytecode 대신 dex라 불리우는 고유의 bytecode사용 • 각 응용들은 Dalvik가상머신의인스턴스들로 실행 • Dalvik의 각 인스턴스는리눅스커널의프로세스 • Dalvik은 다수의 인스턴스를 효율적으로 처리하도록 설계 • 모든 안드로이드 하드웨어와 시스템 서비스는 Dalvik을사용하여 관리 • Dalvik은개발자본스타인의 조상 마을 아이슬란드 어촌 지역명

  10. Dalvik가상머신(2)

  11. 라이브러리 (1) • 라이브러리 • Apache Harmony 표준자바 라이브러리, http://harmony.apache.org/ • Surface manager • 디스플레이 서브시스템에 대한 접근을 관리 • Media Framework • PacketVideo의 OpenCORE기반, http://www.packetvideo.com/ • MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 등 지원 • SQLite • 경량 데이터베이스, http://sqlite.org/ • OpenGL/ES • 3D 그래픽스, http://www.khronos.org/opengles/ • FreeType • 비트맵및 벡터 폰트 렌더링 지원, http://www.freetype.org/

  12. 라이브러리 (2) • Webkit • 웹 브라우저, http://webkit.org/ • SGL • 2D 그래픽스 엔진 • SSL • OpenSSL기반 SSL/TSL 보안라이브러리, http://openssl.org/ • Bionic Libc • BSD 기반개발된 고유의 표준 C 시스템 라이브러리 • linker, libc • 표준glibc, uclibc사용하지 않음 • 사용자응용 프로그램의 GPL 라이선스회피 • Glibc의 절반 정도의 200k 크기 • C++의 STL(standardTemplate Library) 지원하지 않음

  13. 리눅스커널(1) • 리눅스커널2.6 을 기반으로 하드웨어와 소프트웨어 스택 간의 추상화 계층으로 동작 • 프로세스 관리 • Zygote를 통한 프로세스 관리 • 응용 프로그램을 빠르게 구동하기 위해 미리 fork 되어 있는 프로세스 • 실행하기 전 까지는 특정 응용 프로그램과 접합하지 않은 중립적인 상태 유지 • 메모리 관리 • 네트워크 스택 • 드라이버 모델 • 보안

  14. 리눅스커널(2) • ARM 아키텍처에포팅되는GNU utillity packages 사용 • ARMEABI(Embedded Application Binary Interface)에서 동작 • http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3105/4 • OpenBinder IPC(Inter Process Communication) 사용 • http://www.angryredplanet.com/~hackbod/openbinder/docs/html/index.html • X86 머신상에서는 QEMU에뮬레이터 필요 • Goldfish: QEMU 에뮬레이터 기반가상하드웨어 • www.qemu.org

  15. 안드로이드SDK

  16. 안드로이드SDK • 소프트웨어 개발 키트 (Software Development Kit) • 응용 프로그램을 개발하기 위한 API와 툴 제공 • API 라이브러리, 다큐먼트 문서, 샘플 코드로 구성 • 안드로이드 에뮬레이터 • DDMS (Dalvik DebugMonitoring Service) • JavaIDE인 Eclipse 상에서 개발환경 구축 • 다양한 PC 플랫폼 에서 지원 • Windows, Mac OS X, Linux

  17. 순천향대학교 컴퓨터학부 이 상 정 17

  18. 개발 환경 구축 • SDK 개발 환경 • 안드로이드SDK • Android SDK 1.5 (Windows 버전) • 다운로드, http://developer.android.com/sdk/1.5_r1/index.html • JDK (JavaDevelopment Kit), • Java SE (SDK) 6, JDK 6 Upadte13 • 다운로드, http://java.sun.com/javase/downloads/index.jsp • Eclipse • Eclipse 3.4 (Ganymade), Eclipse IDE for Java Developers • 다운로드 , http://www.eclipse.org/downloads/

  19. 안드로이드SDK 설치 • SDK 설치 (Windows) • 다운로드 후 SDK 설치 경로에 압축 해제 • 환경 변수 설정 • 시작 -> 내 컴퓨터 선택, 마우스 오른쪽 버튼 • 속성 -> 고급 -> 환경 변수, 시스템 변수 Path 선택 • SDK 설치 경로 등록, <your_sdk_dir>/tools

  20. JDK 설치 • JDK 설치 • 다운 받은 파일 실행

  21. Eclipse 설치 및 ADT 플러그-인 • 다운로드 후 설치 경로에 압축 해제 • ADT(Android Developer Tool) 플러그-인(plug-in) • Eclipse 실행 • 메뉴, Help -> Software Updates 선택 • 다이얼로그, Available Software -> Add Site 선택 • http://dl-ssl.google.com/android/eclipse/ 입력 • 다이얼로그, Available Software -> Developer Tools 체크박스표시-> Install 선택 • Install 다이얼로그, Next -> Finish • Android DDMS, AndroidDevelopment Tool 표시 • Eclipse 다시 실행

  22. ADT 플러그-인 (1)

  23. ADT 플러그-인 (2)

  24. ADT 플러그-인 (3)

  25. ADT 추가 • Eclipse 재실행 후 • Window -> Preferences -> Andorod, Click Apply, then OK

  26. 응용 프로그램 컴파일 과정

  27. 에뮬레이터

  28. Hello, World 예 1,http://developer.android.com/guide/tutorials/hello-world.html

  29. AVD 생성 • AVD (Android Virtual Device) • 에뮬레이터에서 사용되는 시스템 이미지와 디바이스 세팅 등을 정의 • 안드로이드 에뮬레이터 실행을 위해 AVD 생성 • 명령 창에서 다음 실행android create avd --target 2 --name my_avd

  30. 프로젝트 생성 • Eclipse 실행하고, 프로젝트 생성 • File > New > Android Project • Project name:HelloAndroid • 프로젝트 이름 • Application name: Hello, Android • 안드로이드 디바이스에 표시되는 응용 이름 • Package name:com.example.helloandroid • 패키지 이름영역(namespace)으로 소스코드 위치 • Create Activity:HelloAndroid • 생성되는 클래스 이름, Activity 클래스의 서브클래스 • Min SDK Version: 2 • 응용의 실행에 필요한 최소 API 레벨 표시 • 2의값은 Android 1.1 target을 선택 • 소스, Eclipse Package • source -> com.example.helloandroid -> HelloAndroid.java

  31. 초기 소스파일

  32. UI 구성소스 추가

  33. 소스 설명 • Activity 클래스 • 작업(action)을 실행하고 단일사용자 인터페이스(UI) 를 생성 • onCreate() 메서드 • 사용자 Activity 실행시 호출 • 초기화및 UI 셋업 • setContentView() 메서드 • Activity UI의내용을 디스플레이 • 뷰(view) • 사용자 인터페이스는뷰라는 객체의 계층으로 구성 • 뷰는 버튼, 이미지, 텍스트 라벨 등과 같은 객체 • 이들 객체들은 View 클래스의 서브클래스 • TextView클래스 • 텍스트를 관리하는 View의 서브클래스 • setText() 메서드는 텍스트의 내용을 정의

  34. 실행 • Run -> Run • Android Application 선택

  35. 실행결과

  36. Hello, World 예 2,http://developer.android.com/guide/tutorials/hello-world.html

  37. 예제소개 • 앞의 예제는 프로그램으로 UI 배치 • 소스 코드로 응용의 UI 구현 • UI가 소스 코드와 분리되지 않아 융통성 결여 • 안드로이드는XML 기반배치 (XML-based layout) 파일 제공 • Eclipse 실행하고, Hello2 프로젝트 생성 • File -> New -> Android Project • Project name: Hello2 • Application name: Hello2 • Package name: com.example.hello2 • Create Activity: Hello2 • Min SDK Version: 2

  38. XML 소스 • XML 소스 • Eclipse Package, res > layout > main.xml

  39. XML 소스 분석 • XML 속성(attribute) • xmlns:android • XML 이름영역선언 • android:layout_width • 스크린 상에서 배치가 가능한 폭 • android:layout_height • 스크린 상에서 배치가 가능한 폭 • android:text • TextView가 디스플레이하는 텍스트 표시 • 문자열 직접 기술 대신 string 리소스사용

  40. string 리소스 수정 • string 리소스 • Eclipse Package, res -> values-> string.xml

  41. 소스 코드 • 생성된 코드 원본 사용 • R 클래스는 프로젝트에서 생성된 리소스를 참조하는 클래스 • gen/R.java에서 정의

  42. 참고 사이트 • 구글 사이트, http://www.android.com/ • Open Source Project, http://source.android.com/ • Git, Repo version control system • Ubuntulinux, Ecllipse • Android Developers, http://developer.android.com/ • Android application • Android SDK • Android Market, http://www.android.com/market/ • Google Group, Android Internals, http://groups.google.com/group/android-internals • 한국안드로이드사이트 • http://www.kandroid.org

More Related