43
Android 개개개개 개개 개 Android View 개개 2013 년 3 년년 1 년년 년년년년년년년

Android 개발환경 설정 및 Android View 소개

  • Upload
    simeon

  • View
    135

  • Download
    0

Embed Size (px)

DESCRIPTION

Android 개발환경 설정 및 Android View 소개. 2013 년 3 학년 1 학기 인공지능연구실. 안드로이드 개요. 안드로이드 휴대전화와 모바일 디바이스를 위한 운영체제 , 미들웨어 그리고 핵심 애플리케이션을 포함한 소프트웨어 스택 안드로이드 역사 2005.07 : 안드로이드 사를 구글에서 인수 2007.11.05 하드웨어 , 소프트웨어 , 통신 회사가 모여 만든 OHA(Open Handset Alliance) 결성 OHA 에서 모바일 기기용 공개 표준 개발 - PowerPoint PPT Presentation

Citation preview

Page 1: Android  개발환경 설정 및 Android View  소개

Android 개발환경 설정 및Android View 소개

2013 년 3 학년 1 학기인공지능연구실

Page 2: Android  개발환경 설정 및 Android View  소개

안드로이드◦ 휴대전화와 모바일 디바이스를 위한 운영체제 , 미들웨어 그리고 핵심 애플리케이션을

포함한 소프트웨어 스택

안드로이드 역사◦ 2005.07 : 안드로이드 사를 구글에서 인수◦ 2007.11.05

하드웨어 , 소프트웨어 , 통신 회사가 모여 만든 OHA(Open Handset Alliance) 결성 OHA 에서 모바일 기기용 공개 표준 개발

◦ 2007.11.12 : 휴대전화용 안드로이드 플랫폼 발표 ( 무료로 공개 ) 안드로이드 SDK, 동작 샘플 , 안드로이드 시스템 구조 , 안드로이드 내장 SW 개발 구조 공개

◦ 2008.09 : Android SDK 1.0 발표◦ 2008.10.21 : 안드로이드를 오픈소스 ( 아파치 라이선스 ) 로 공개◦ 2008.10.22 : 미국 T-Mobile 에서 최초의 Android 폰인 G1 출시◦ 2008.10.22 : Android Market 정식 오픈

안드로이드 개요

Page 3: Android  개발환경 설정 및 Android View  소개

안드로이드 개요 (cont.)• 안드로이드 역사

Android 1.0, 1.12009.02

Android 1.5(Cupcake)2009.04

( 한글 지원 )

Android 1.6(Donut)2009.09

(UI 지원 강화 )

Android 2.1(Eclair)2010.01

( 홈스크린 , 음성인식 , 멀티터

치 )

Android 2.2(Froyo)2010.05

( 성능향상 , 테더링 )

Android 2.3(Gingerbread)

2010.12

(mVoIP, NFC)

Android 3.0(Honeycomb)

2011.02

( 태블릿 정식 지원 )

Android 4.0(Ice cream Sand-

wich)2011.12

(Face Unlock, People,

안드로이드 빔 )

Android 4.2(Jellybean)2012. 11

( 포토스피어 , 무선디스플레이 ,제스쳐타이핑 )

Page 4: Android  개발환경 설정 및 Android View  소개

안드로이드 개요 (cont.)

• 안드로이드 디바이스 , 에뮬레이터

Page 5: Android  개발환경 설정 및 Android View  소개

OHA – Open Handset Alliance◦ OHA : 개방형 휴대전화 연합◦ 휴대전화 제조 , 서비스 , 칩 제조 등 전세계 65 개 업체가 가입 (2009 년 말 )

휴대폰 제조 업체 : 삼성전자 , LG 전자 , 모토롤라 , HTC 이동통신 업체 : 스프린트 , T- 모바일 , NTT 도코모 , KDDI 칩 제조 업체 : 퀄컴 , 브로드컴 , 인텔 , 텍사스인스트루먼트

◦ 가입 업체들

안드로이드 개요 (cont.)

Page 6: Android  개발환경 설정 및 Android View  소개

구성 및 특징◦ 커널 : 리눅스◦ 그래픽 엔진 : OpenGL ES (Open GL 의 휴대기기용 버전 )◦ 폰트 : 프리타입◦ 웹 렌더링 : 웹키트 엔진◦ 보안 모듈 : SSL◦ 개발환경 : Eclipse 와 ADT(Android Development Toolkit,

eclipse 에 통합된 플러그인 ) 사용을 권장

안드로이드 구성 및 특징

Page 7: Android  개발환경 설정 및 Android View  소개

안드로이드 구성 및 특징구성 및 특징 내용

핸드셋 레이아웃 플랫폼은 VGA, 2D 그래픽스 라이브러리 , OpenGL ES 1.0 에 기반을 둔 3D 그래픽스 라이브러리를 확장하기에 적응적이다 .

저장소 데이터 저장 목적의 SQLite  데이터베이스 소프트웨어가 사용됨 .

통신 안드로이드는 GSM/EDGE, CDMA, EV-DO, UMTS,  블루투스, 와이파이를 포함하는 커넥션 기술을 지원한다 .

메시징 SMS와 MMS가 가능 .

웹 브라우저 오픈 소스인 웹키트 응용 프로그램 프레임워크 기반의 브라우저 지원 .

자바 지원자바로 작성된 소프트웨어는 달빅 가상 머신에서 실행 가능한 코드로 컴파일된다 . 달빅 가상 머신은 표준 자바 가상 머신은 아니지만 모바일 기기를 위해 설계된 레지스터 기반의 가상 머신이다 .

미디어 지원

안드로이드는 다음의 오디오 / 비디오 / 이미지 포맷을 지원한다 : H.263, H.264 (3GP  또는 MP4  컨테이너), MPEG-4 SP, AMR, AMR-WB (3GP 컨테이너 ), AAC, HE-AAC (MP4 또는 3GP 컨테이너 ), MP3,  미디, OGG Vorbis,WAV, JPEG, PNG, GIF, BMP.

추가 하드웨어 지원 안드로이드는 카메라 ,  터치스크린, GPS,  가속도 센서,  나침반 센서, 트랙볼 2D 그래픽 가속 , 3D 그래픽 가속을 활용할 수 있다 .

Page 8: Android  개발환경 설정 및 Android View  소개

개발 환경 기기 에뮬레이터 ,  디버깅 도구 , 메모리와 성능 프로파일링을 포함하는 이클립스 IDE  플러그인인 ADT, 플랫폼 개발 키트인 PDK

마켓

iOS의 앱 스토어와 유사한 구글 플레이는 PC 사용 없이 무선으로 대상 하드웨어로 다운로드 와 설치가 가능한 응용 프로그램 목록을 제공 . 2011 년 2 월 허니컴 발표와 함께 웹을 통한 마켓 이용이 가능해졌다 . 웹마켓에서는 여러대의 안드로이드 기기를 등록하여 사용할 수 있도록 확장되어 있다 . 원래 프리웨어만 지원 되었으나 2009 년 2 월 19 일 부터 유료 애플리케이션도 제공되었다 . 별도의 라이선싱 , 애플리케이션 내에서의 유료 구매를 위한 SDK 가 함께 발표되었다 .

멀티 터치

안드로이드는 멀티 터치를 네이티브로 지원한다 . 한때 미국에서 출시되는 모델에 한해서 , 애플의 터치스크린 기술 특허 침해를 피하기 위해 , 멀티터치 기능이 커널 수준에서 비활성화되었다 .[3]  이후에 구글은 넥서스 원,  드로이드를 위해 멀티터치를 네이티브에서 지원하는 업데이트를 발표하였다 .[4]

블루투스핸즈프리 통화 (HFP), 음악 재생 (A2DP,AVRCP) 기능이 있으며 블루투스를 통한 파일 전송이 버전 2.0 에 추가되었다 . 이외 ICS 이후로 Bluetooth 4.0 기술인 BluetoothHealth 기능도 추가되었다 .

영상통화

안드로이드는 영상통화를 지원하지 않는다 . 하지만 , 전화기에 UI 및 프로그램을 추가하여 사용할 수 있기는 하다 . HTC Evo4G 에서는 HTC 자체의 센스 (Sense) UI 를 사용하여 영상통화를 지원한다 . HTC 가 아니라도 제조사가 영상통화를 지원하게 한다면 가능하다 . 허니컴부터 GTalk 를 통한 영상 통화를 지원하기 시작했다 .

안드로이드 구성 및 특징

Page 9: Android  개발환경 설정 및 Android View  소개

특징◦ 미디어 지원

일반적인 오디오 , 비디오 , 그리고 정지 (still) 이미지 포맷들을 지원

MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF

◦ GSM Telephony ( 하드웨어 의존적 ) -> CDMA Telephony 추가

◦ 블루투스 , 3G, 4G, WiFi ( 하드웨어 의존적 )

◦ 카메라 , GPS, 나침반 , 그리고 가속도계 ( 하드웨어 의존적 )

◦ 풍부한 개발 환경 디바이스 에뮬레이터 , 디버깅 도구 , 메모리 및 성능 프로파일링 그리고 Eclipse

IDE 를 위한 Plug-in 포함함

안드로이드 특징 (cont.)

Page 10: Android  개발환경 설정 및 Android View  소개

구조도

안드로이드 구조

Page 11: Android  개발환경 설정 및 Android View  소개

애플리케이션 프레임워크 (Framework)

◦ 안드로이드 애플리케이션 프레임워크는 Java 기반의 Framework 이며 ,

대부분이 JNI(Java Native Interface) 를 통해 native C/C++ 코드로 작성되어 있다 . 더불어 , 아래와 같이 핵심 시스템 서비스를 담당하는 Core

시스템 서비스들과 하드웨어와의 인터페이스를 담당하는 하드웨어 서비스들로 구성된다 .

안드로이드 구조 (cont.)

Page 12: Android  개발환경 설정 및 Android View  소개

안드로이드 런타임 (Runtime)◦ 안드로이드에서 사용되는 Dalvik 가상 머신과 Core 라이브러리들로 구성 .

◦ Dalvik 가상머신은 안드로이드에서 자체적으로 만든 것으로 JVM(Java Virtual Machine) 에 걸려있는 라이선스 제약을 피해 무료로 배포하기 위해서 만들었다 .

◦ 애플리케이션의 호환성 (Portability)과 실행 일관성 (runtime consistency)을 제공하며 , 최적화된 파일 포맷 (.dex)과 Dalvik 바이트 코드를 실행한다 . 더불어 빌드 시점에서 Java .class / .jar 파일들은 .dex 파일로 변환된다 .

◦ Dalvik 가상머신은 임베디드 환경을 위해 디자인되어 , 디바이스 별로 다양한 가상머신 프로세스들을 지원하며 , 높은 수준으로 CPU 에 최적화된 바이트코드 인터프리터에 기반하며 , 실행 시 메모리를 매우 효율적으로 사용한다 .

◦ Core 라이브러리들은 강력하지만 , 단순하고 익숙한 개발 플랫폼을 제공하는 Java 언어를 위한 Core API 들을 포함하고 있다 . 여기에는 Data structure, Utility, File Access, Network Access, Graphic 등이 포함되어 있다 .

안드로이드 구조 (cont.)

Page 13: Android  개발환경 설정 및 Android View  소개

Dalvik 가상 머신 (Virtual Machine)

◦ 다음과 같은 환경을 고려한 Bytecode Interpreter

Slow CPU (250-500 MHz)

RAM Usage : Low-level : 20M, High-level : 24M(system library : 10M)

Little RAM (64MB) : Available RAM : 20M

Bus speed : 100MHz

Data Cache : 16~32K

No swap space, Battery power

안드로이드 구조 (cont.)

Dalvik 이란 이름은 , Dalvik 의창시자인 본스타인이 자신의조상이 살던 아이슬란드의 한어촌의 이름을 따서 만든 것임

Page 14: Android  개발환경 설정 및 Android View  소개

라이브러리 (Libraries)◦ 안드로이드 내장 라이브러리는 , Bionic Libc, Function Library, Native Server, Hard-

ware Abstraction Library 로 구성된다 . Bionic 은 임베디드에서 사용을 위해 최적화하여 직접 구현된 libc 이다 . libc 를 직접 구현한 이유

다음과 같다 . user-space 에서 GPL 을 회피하기 위한 라이센스 이유 ( 소스공개 회피 ) 와 , 개별 프로세스마다 포함되어야 하는 영역이기 때문에 크기를 최소화하기 위한 이유와 제한적 CPU 파워 하에서도 빠를 필요가 있기 때문이었다 .

Function Library 에는 웹 브라우저를 위한 WebKit, PacketVideo 의 OpenCORE 플랫폼 기반의 미디어 프레임워크 , 가벼운 데이터베이스인 SQLite 가 있다 .

Native Server 에는 Surface Flinger 와 Audio Flinger 가 있다 . Surface Flinger 는 2D 와 3D surface 의 조합 및 다양한 애플리케이션에서 사용된 Surface 들을 Frame buffer 디바이스로의 렌더링을 제어함으로써 , 시스템 전역에 걸쳐서 surface 의 구성을 가능하게 한다 . Audio Flinger 는 모든 오디오 출력 디바이스를 제어하는 것으로써 , 다양한 오디오 스트림을 PCM 오디오 출력 경로로 처리하며 , 다양한 출력으로 오디오를 제공하는 역할을 담당한다

Hardware Abstraction Library 는 User space 의 C/C++ 라이브러리 계층으로써 , 안드로이드에서 요구되는 하드웨어 드라이버의 구현에 대한 인터페이스를 정의한다 . 더불어 하드웨어 인터페이스로부터 안드로이드 플랫폼의 로직을 분리하는데 사용된다 .

안드로이드 구조 (cont.)

Page 15: Android  개발환경 설정 및 Android View  소개

리눅스 커널 (Kernel)◦ 리눅스 커널을 기반으로 하고 있으나 , 안드로이드는 리눅스는 아니다 .◦ X-Window 와 같은 내장 윈도우 시스템을 포함하지 않는다 .◦ glibc 를 지원하지 않는다 .◦ 표준 리눅스 유틸리티 전체를 포함하고 있지 않는다 .◦ 리눅스 커널 버전 2.6.23, 2.6.24, 2.6.25, 2.6.27, 2.6.29, 2.6.32 를 사용해 왔다 .◦ 안드로이드를 지원하기 위해 , 리눅스 커널 확장을 위한 패치를 포함하고 있다 .◦ 안드로이드에서 리눅스를 사용하는 이유는 메모리 및 프로세스 관리 , ‘Permission’ 기반의 보안

모델 , 검증된 드라이버 모델 , 공유 라이브러리 지원 , 오픈 소스 기반 등의 장점 때문이다 .◦ 안드로이드를 위해 확장된 리눅스 커널 영역은 Alarm, Ashmem, Binder, Power Manage-

ment, Low Memory Killer, Kernel Debugger, Logger 이다 .◦ 안드로이드 리눅스 커널 소스는 현재 아래의 URL 에서 배포되고 있다 .◦ http://git.android.com

안드로이드 구조 (cont.)

Page 16: Android  개발환경 설정 및 Android View  소개

Android 개발 도구◦ JDK(Java Development Kit)

◦ Android SDK(Standard Development Kit), NDK(Native Development Kit)

◦ Eclipse

◦ Cygwin

Android 개발환경 설치 순서◦ JDK, Android SDK, Eclipse 다운로드

Java 개발환경 설치하기 Android SDK , Eclipse, ADT 플러그인 설치하기

Android 개발환경 설치

Page 17: Android  개발환경 설정 및 Android View  소개

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Java 설치하기

Page 18: Android  개발환경 설정 및 Android View  소개

본인의 OS 에 맞는 버전을 다운로드 Java 는 이미 설치되어 있으므로 , 이 과정은 생략하셔도 됩니다 .

Java 설치하기

Page 19: Android  개발환경 설정 및 Android View  소개

해당 링크 에서 SDK 다운로드◦ http://developer.android.com/sdk/index.html

◦ 또는 borame.cs.pusan.ac.kr 에서 다운 받으셔도 됩니다 .

Android SDK 설치

Page 20: Android  개발환경 설정 및 Android View  소개

Android ADT, SDK, eclipse 설치 완료 다음부턴 이클립스에서 개발 환경을 구축해 봅시다 .

Android SDK 설치

Page 21: Android  개발환경 설정 및 Android View  소개

안드로이드 가상 디바이스를 만들어 봅시다 !◦ Android SDK Manager 선택 !

Android 개발 환경 구축

Page 22: Android  개발환경 설정 및 Android View  소개

가상 디바이스 실행을 위해 그에 맞는 API 패키지를 설치합니다

Android 개발 환경 구축

Page 23: Android  개발환경 설정 및 Android View  소개

설치가 완료되었다면 , AVD Manager 클릭 !

Android 개발 환경 구축

Page 24: Android  개발환경 설정 및 Android View  소개

Virtual Device 를 생성해봅시다 !

Android 개발 환경 구축

Page 25: Android  개발환경 설정 및 Android View  소개

Android 개발 환경 구축

Page 26: Android  개발환경 설정 및 Android View  소개

Android 개발 환경 구축

Page 27: Android  개발환경 설정 및 Android View  소개

Emulator 구동 기본화면 입니다 .

Android 개발 환경 구축

Page 28: Android  개발환경 설정 및 Android View  소개

File -> New -> Android Application Project 클릭

Android 프로젝트 생성

Page 29: Android  개발환경 설정 및 Android View  소개

Application Name◦ 프로젝트를 실행했을 때 설치될

Application 의 이름입니다 . Project name

◦ Eclipse 상에서 보여지는 프로젝트의 이름입니다

Package name◦ 기본적으로 만들어지는

package 의 이름입니다 .

Android 프로젝트 생성

Page 30: Android  개발환경 설정 및 Android View  소개

Android 프로젝트 생성

Page 31: Android  개발환경 설정 및 Android View  소개

Android 프로젝트 생성

Page 32: Android  개발환경 설정 및 Android View  소개

Android 프로젝트 생성

Page 33: Android  개발환경 설정 및 Android View  소개

Finish 를 누르시면 프로젝트 생성이 완료됩니다 !

Android 프로젝트 생성

Page 34: Android  개발환경 설정 및 Android View  소개

프로젝트 생성 후 기본 출력 화면입니다 .

Android 프로젝트 생성

Page 35: Android  개발환경 설정 및 Android View  소개

이제 이 프로젝트를 실행시켜보겠습니다 .

Android 프로젝트 실행

Page 36: Android  개발환경 설정 및 Android View  소개

Android 프로젝트 실행

Page 37: Android  개발환경 설정 및 Android View  소개

아무것도 작성하지 않고 실행 시 , Hello world! 가 기본적으로 출력됩니다 ^^

Android 프로젝트 생성

Page 38: Android  개발환경 설정 및 Android View  소개

AVD 가 생성되지 않았거나 , API 버전이 맞지 않은 AVD 가 생성된 경우(AVD 의 API 버전 < 프로젝트의 API 버전 )

Android 프로젝트 생성

Page 39: Android  개발환경 설정 및 Android View  소개

View 는 안드로이드의 사용자 인터페이스 (UI) 를 구성하는 핵심 컴포넌트

화면상의 사각영역을 차지하며 자신의 모양을 그리고 사용자로부터 입력을 받아들임

View

Page 40: Android  개발환경 설정 및 Android View  소개

위젯 ◦ 직접적으로 보이며 사용자 인터페이스를 구성한다 . 버튼 , 텍스트 뷰 , 에디트 , 라디오 버튼 등을 말하며 흔히 컨트롤이라고도 부르며 View 라고도 한다 .

View - 위젯

Object

View

AnalogClock

TextView

EditText

Button

Chronometer

DigitalClock

ImageButton

GlSurfaceView

VideoView

AbsSeekBar

ImageView

SurfaceView

ProgressBar

AutoCompleteTextView

CompoundButton

CheckBox

RadioButton

ToggleButton

SeekBar

RatingBar

Page 41: Android  개발환경 설정 및 Android View  소개

뷰 그룹 직접적으로 보이지 않으며 다른 뷰를 담는 컨테이너 역할을 한다 . 이름

그대로 여러 개의 뷰를 유기적으로 모아 놓은 것이다 . 쉽게 말해 이 부류를 레이아웃이라 칭한다 .

View – 뷰 그룹

Object

View

ViewGroup

FrameLayout

AbsoluteLayout

RelativeLayout

LinearLayout

WebView

ScrollView. HorizontalScrollView

TabHost. TimePicker. DatePicker

ViewAminator ViewFlipper TextSwitcher

ViewSwitcher ImageSwitcher

RadioGroup. ZoomControls

TableLayout. TableRow

TabWidget

AbsListView ListView

GridView

AbsSpinner Spinner

Gallery

AdapterView

Page 42: Android  개발환경 설정 및 Android View  소개

Text View ?◦ 이름 그대로 화면에 텍스트를 출력하는 위젯 .◦ 사용자의 입력을 받아들이지는 않는다 .

주 사용 속성

View - Text View

Page 43: Android  개발환경 설정 및 Android View  소개

View - Text View res -> layout -> activity_main.xml