360 likes | 920 Views
안드로이드 소개 및 개발환경 설정. 인공지능연구실 . 안드로이드 개요. 안드로이드 휴대전화와 모바일 디바이스를 위한 운영체제 , 미들웨어 그리고 핵심 애플리케이션을 포함한 소프트웨어 스택 안드로이드 역사 2005.07 : 안드로이드 사를 구글에서 인수 2007.11.05 하드웨어 , 소프트웨어 , 통신 회사가 모여 만든 OHA(Open Handset Alliance) 결성 OHA 에서 모바일 기기용 공개 표준 개발
E N D
안드로이드 소개 및 개발환경 설정 인공지능연구실
안드로이드 개요 • 안드로이드 • 휴대전화와 모바일 디바이스를 위한 운영체제, 미들웨어 그리고 핵심 애플리케이션을 포함한 소프트웨어 스택 • 안드로이드 역사 • 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 정식 오픈
안드로이드 개요 (cont.) • 안드로이드 역사 • Android 2.1(Eclair) • 2010.01 • (홈스크린, 음성인식, 멀티터치) • Android 1.5(Cupcake) • 2009.04 • (한글 지원) • Android 1.6(Donut) • 2009.09 • (UI 지원 강화) Android 1.0, 1.1 2009.02 • Android 3.0(Honeycomb) • 2011.02 • (태블릿 정식 지원) • Android 2.3(Gingerbread) • 2010.12 • (mVoIP, NFC) • Android 2.2(Froyo) • 2010.05 • (성능향상, 테더링, 플래쉬)
안드로이드 개요 (cont.) • 안드로이드 디바이스, 에뮬레이터
안드로이드 개요 (cont.) • OHA – Open Handset Alliance • OHA : 개방형 휴대전화 연합 • 휴대전화 제조, 서비스, 칩 제조 등 전세계 65개 업체가 가입(2009년 말) • 휴대폰 제조 업체 : 삼성전자, LG전자, 모토롤라, HTC • 이동통신 업체 : 스프린트, T-모바일, NTT 도코모, KDDI • 칩 제조 업체 : 퀄컴, 브로드컴, 인텔, 텍사스인스트루먼트 • 가입 업체들
안드로이드특징 • 특징 • 애플리케이션 프레임워크 • 컴포넌트의 재사용과 대체(replacement)를 가능하게 함. • 달빅(Dalvik) 가상머신 • 모바일디바이스에 최적화됨. (JIT : Just In Time Compiler 추가) • 통합(Integrated) 브라우저 • 오픈 소스 Webkit엔진 기반임. (V8 Javascript Engine 추가) • 최적화된 그래픽 • 구글이만든 2D 그래픽 라이브러리를 사용함. (SGL : Skia Graphic Library) • OpenGL ES 1.0 스펙에 기반한 3D 그래픽을 사용함 (하드웨어 가속은 선택사항임) • SQLite • 정형화된 데이터 저장공간을 위한 것임.
안드로이드특징 (cont.) • 특징 • 미디어 지원 • 일반적인 오디오, 비디오, 그리고 정지(still) 이미지 포맷들을 지원 • MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF • GSM Telephony (하드웨어 의존적) -> CDMA Telephony 추가 • 블루투스, 3G, WiFi (하드웨어 의존적) • 카메라, GPS, 나침반, 그리고 가속도계 (하드웨어 의존적) • 풍부한 개발 환경 • 디바이스 에뮬레이터, 디버깅 도구, 메모리 및 성능 프로파일링 그리고 Eclipse IDE를 위한 플러그인을 포함함
안드로이드구조 • 구조도
안드로이드구조 (cont.) • 애플리케이션 프레임워크(Framework) • 안드로이드애플리케이션 프레임워크는 Java 기반의 Framework 이며, 대부분이 JNI(Java Native Interface)를통해 native C/C++ 코드로 작성되어 있다. 더불어, 아래와 같이 핵심 시스템 서비스를 담당하는 Core 시스템 서비스들과 하드웨어와의 인터페이스를 담당하는 하드웨어 서비스들로 구성된다.
안드로이드구조 (cont.) • 안드로이드 런타임(Runtime) • 안드로이드에서사용되는 Dalvik가상 머신과Core 라이브러리들로 구성. • Dalvik가상머신은안드로이드에서 자체적으로 만든 것으로 JVM(Java Virtual Machine)에걸려있는 라이선스 제약을 피해 무료로 배포하기 위해서 만들었다. • 애플리케이션의 호환성(Portability)과 실행 일관성(runtime consistency)을 제공하며, 최적화된 파일 포맷(.dex)과 Dalvik바이트 코드를 실행한다. 더불어 빌드 시점에서 Java .class / .jar파일들은 .dex파일로 변환된다. • Dalvik가상머신은임베디드 환경을 위해 디자인되어, 디바이스 별로 다양한 가상머신 프로세스들을 지원하며, 높은 수준으로 CPU에 최적화된 바이트코드 인터프리터에 기반하며, 실행 시 메모리를 매우 효율적으로 사용한다. • Cora 라이브러리들은 강력하지만, 단순하고 익숙한 개발 플랫폼을 제공하는 Java 언어를 위한 Core API들을 포함하고 있다. 여기에는 Data structure, Utility, File Access, Network Access, Graphic 등이 포함되어 있다.
안드로이드구조 (cont.) • 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 Dalvik이란 이름은, Dalvik의 창시자인 본스타인이 자신의 조상이 살던 아이슬란드의 한 어촌의 이름을 따서 만든 것임
안드로이드구조 (cont.) • 라이브러리 (Libraries) • 안드로이드내장 라이브러리는, Bionic Libc, Function Library, Native Server, Hardware 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.) • 리눅스커널(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 Management, Low Memory Killer, Kernel Debugger, Logger 이다. • 안드로이드리눅스커널 소스는 현재 아래의 URL에서 배포되고 있다. • http://git.android.com
Android 개발환경 설치 • Android 개발 도구 • JDK(Java Development Kit) • Android SDK(Standard Development Kit), NDK(Native Development Kit) • Eclipse Classic 3.6 • Cygwin • Android 개발환경 설치 순서 • JDK, Android SDK, Eclipse 3.6 다운로드 • JDK, 이클립스 설치하기 • http://plusblog.tistory.com/604 • Android SDK 설치하기, ADT 플러그인 설치하기 • http://plusblog.tistory.com/605
Android SDK 설치 • 해당 링크 에서 SDK 다운로드 • http://developer.android.com/sdk/index.html • 또는 borame.cs.pusan.ac.kr 에서 다운 받으셔도 됩니다.
Android SDK 설치 • Next 를 눌러 진행하다 다음 그림과 같은 경로 설정이 나오면 다음과 같이 수정합니다 • Path - D:\android\android-sdk
Android SDK 설치 • 설치종료 후다음과 같은 체크박스가 나오면 체크 후 Finish
Android SDK 설치 • 검은색 창이 떠있다가 다음과 같은 화면이뜨게 됩니다. • 아래 스크린샷에 체크된 것만 체크 후 Install • 집에서는 Accept All을 선택하시고 Install하시면 간편합니다
Android SDK 설치 • 한참 후 다음과 같은 화면이 뜨면 Yes 를 눌러 진행합니다. Close를 눌러 설치 종료
Android SDK 설치 • Android SDK 설치 완료 • 다음부턴 이클립스에서 개발 환경을 구축해 봅시다.
Android 개발 환경 구축 • 이클립스에Android 개발 툴 플러그인인ADT 를 설치합니다.
Android개발 환경 구축 • https://dl-ssl.google.com/android/eclipse/
Android개발 환경 구축 • 경고문이 뜨게 되면 OK 로 진행합니다 • 다음 화면이 뜨면 Restart Now~!
Android개발 환경 구축 • 설치가 끝났으니 경로 설정을 해줍시다
Android개발 환경 구축 • Android SDK 를 설치한 경로를 찾아 확인을 눌러 줍니다.
Android개발 환경 구축 • 경로 설정이 끝났다면 가상 디바이스를 만듭니다 • Android SDK and AVD Manager 선택!
Android 개발 환경 구축 • Virtual devices 에서 New 를 선택합니다.
Android 개발 환경 구축 • 다음과 같이 이름과 버전을 선택 후 Create AVD 를 클릭하여 새 가상 디바이스를 만들어 줍니다. • Skin 의 경우 나중에 가지고 있는 스마트폰에서 구동해보려면 스마트폰의 해상도와 맞춰야 에뮬레이터에서 보이는 대로 나옵니다. • 에뮬레이터에서만 구동할 경우 Default 로 해도 무방합니다.
Android 개발 환경 구축 • 이제 가상 디바이스목록에 방금 만든 가상 디바이스가 있습니다. 그 가상 디바이스를 선택한 뒤, 오른쪽의 Start 버튼을 눌러 봅니다. 다음 화면이 뜨면 Launch!
Android 개발 환경 구축 • 가상 디바이스가 부팅되는 데에는 꽤 오랜 시간이 걸리므로 기다려 줍시다~! • 여기까지 오셨으면 개발 환경 구축 완료~!
Android간단한 프로젝트 생성 • [File] 메뉴에서 [New] -> [Project] 를 들어갑니다.
Android간단한 프로젝트 생성 • 빨간박스! 선택 후 Next
Android간단한 프로젝트 생성 • Project Name: 프로젝트 명으로 해당 프로젝트에 관련된 파일이 들어갈 디렉토리이름 • Build Target : 어떤 버전을 대상으로 만들 것인가를 선택하는 것. • Application Name : 스마트폰에설치되었을 때 나타날 어플명을결정하는 부분 • Package Name: package namespace를 지정하는 부분 • 실습할 때는 ‘example.마음대로’로하기로 합시다. • 텀 때는 알아서 하세요~ • Create Activity: main 함수가 들어갈 클래스의 이름을 지정하는 것. • Min SDK Version: Android 2.2의 API Level인 8을 입력해 줍니다.
Android 간단한 프로젝트 생성 • 프로젝트 생성 완료~! • Hello.java : 실제 프로그램이 되어 지는 소스 부분입니다. • gen : 빌드 시에 자동으로 생성되는 파일들이 저장되어 있는 곳입니다. 사용자가 수정하면 안됩니다. • Android 2.2 : 현재 개발하고 있는 플랫폼의 라이브러리들이 들어 있습니다. • assets : 오디오, 비디오 등 멀티미디어 자료들이 저장되는 부분입니다. • res : 리소스의 약자로 이미지, 레이아웃, 문자열 등이 저장되는 부분입니다. • drawable : 이미지 파일들이 저장됩니다. • layout : 개체들의 레이아웃을 정의하는 부분입니다. • values : 프로젝트에서 사용될 여러가지 값을 정의합니다. • AndroidManifest.xml: 프로젝트의 버전이나 이름 등에 대한 정보를 가지고 있습니다. • default.properties: 프로젝트의 빌드타겟이 명시되어 있습니다. ( 플랫폼의 버전 등.. )
Android 간단한 프로젝트 생성 • 실행하고 화면의 잠금을 해제하면 다음 화면이 뜨게 됩니다. • Default 가 Hello World, Hello! 이므로 당황하지 맙시다~!
금주의 실습 • 간단하게 Text 로 학번과 이름을 출력해 봅시다.