Presentation is loading. Please wait.

Presentation is loading. Please wait.

안드로이드 철학, Open Access.

Similar presentations


Presentation on theme: "안드로이드 철학, Open Access."— Presentation transcript:

1 안드로이드 철학, Open Access

2 안드로이드 모바일 플랫폼 스택 java c/c++ Kernel

3 안드로이드 구조 : 리눅스 커널 안드로이드는 리눅스 커널을 기반으로 하고 있으나, 안드로이드는 리눅스는 아니다.
안드로이드는 X-Window와 같은 내장 윈도우 시스템을 포함하지 않는다. 안드로이드는 glibc를 지원하지 않는다. 안드로이드는 표준 리눅스 유틸리티 전체를 포함하고 있지 않는다. 안드로이드는 리눅스 커널 버전 , , , 을 사용해 왔다. 안드로이드를 지원하기 위해, 리눅스 커널 확장을 위한 패치를 포함하고 있다. 안드로이드에서 리눅스를 사용하는 이유는 메모리 및 프로세스 관리, 인가(Permission) 기반의 보안 모델, 검증된 드라이버 모델, 공유 라이브러리 지원, 오픈 소스 기반 등의 장점 때문이다. 안드로이드를 위해 확장된 리눅스 커널 영역은, Alarm, Ashmem, Binder, Power Management, Low Memory, Killer, Kernel Debugger, Logger 이다. 안드로이드 리눅스 커널 소스는 현재 아래의 URL에서 배포되고 있다.

4 안드로이드 구조 : 내장 라이브러리 안드로이드 내장 라이브러리는, Bionic Libc, Function Library, Native Server, Hardware Abstraction Library로구성된다. Bionic 은 임베디드에서 사용을 위해 최적화된 직접 구현된 libc 이다. libc를 직접 구현한 이유는 다음과 같다. -라이센스: user application에서 GPL 문제회피 -size: 약200k, glibc(GNUversion of libc)의 절반크기 -speed: 제한된CPU power에서 동작 System C library  :  임베디드 리눅스 기반 기기를 위한, 표준 C 시스템 라이브러리(libc)의 BSD 상속 구현체 Media Libraries : PacketVideo의 OpenCORE 기반이며, 인기있는 오디오 및 비디오 포맷, MPEC4 / H.264 / MP3 / AAC / AMR / JPG / PNG를 포함하는 정적 이미지 파일의 재생 및 녹음(녹화) Surface Manager : 디스플레이 서브시스템 및 다수의 응용프로그램의 2D, 3D 그래픽 레이어 LibWebCore : 안드로이드 브라우저 및 Embeddable 웹 뷰와 같은 최신의 웹 브라우저 엔진 SGL : 2D graphics 지원 3D libraries : OpenGL ES 1.0 API 기반를 기반으로 하며, 하드웨어 3D 가속 또는 최적화된 3D S/W rasterized FreeType : 비트맵과 벡토 폰트 렌더링 SQLite : 모든 응용프로그램에서 사용 가능한 강력하고 경량인 관계형 데이터베이스 엔진

5 안드로이드 구조 : 하드웨어 추상화 계층 Hardware Abstraction Library는 User space의 C/C++ 라이브러리 계층으로써, 안드로드에서 요구되는 하드웨어 드라이버의 구현에 대한 인터페이스를 정의한다. 더불어 하드웨어 인터페이스로부터 안드로이드 플랫폼의 로직을 분리하는데 사용된다. User-pace의 HAL이 필요한 이유는, 모든 컴포넌트들이 표준화된 리눅스 커널 드라이버 인터페이스를 가지고 있지 않기 때문이며, 리눅스 드라이버들은 사적인 지적소유권을 공개할 수 밖에 없는 GPL 기반이란 이유 때문이다. 또한 안드로이드는 하드웨어 드라이버들을 위한 별도의 요구사항을 가지고 있기 때문이기도 하다. 안드로이드 동작을 위해 구현해야 하는 하드웨어 드라이버로 개발자가 구현해야 하는 API의 집합으로 보면 될 것 같습니다.

6 안드로이드 구조 : 안드로이드 런타임 안드로이드 런타임은, 안드로이드에서 사용되는 Dalvik 가상 머신과 Core 라이브러리들로 구성된다. Android의 개발은 Eclipse의ADT Plug-in을 통해서 Java로 컴파일되고 class와 resource가 Dx컨버터를 통해서Android App(.apk)로 만들어지며 이 apk가 Dalvik VM 위에서 동작하게 된다. 자바어플리케이션에서 호출할때 libc기반의 C/C++ library를 호출할 때 runtime library를 호출. dex.( Dalvik Executables (DEX)) 실행파일의 구조를 가지게 된다. 실행파일이 symbloic resolution을 통하여 함수를 가지고 있다가 library를 호출한다. 모든 안드로이드 응용프로그램은 각자의 프로세스상에서 실행되며, 고유의 Dalvik 가상머신의 인스턴스를 가지고 있다. Dalvik은 기기가 다수의 가상머신에서 효율적으로 실행될 수 있도록 제작되었으며, 최소의 메모리 영역에 최적화된 Dalvik Executable(.dex) 포맷 파일을 실행시킨다. 가상머신은 레지스터 기반이며, 자바 컴파일러로 컴파일된 클래스들을 "dk"툴을 이용하여 .dex 포맷으로 변경한 클래스들을 실행한다. Dalvik 가상머신은 스레딩과 저수준 메모리 관리와 같은 리눅스 커널 기능을 사용한다.

7 안드로이드 구조 : 안드로이드 런타임 안드로이드 Core 라이브러리는 Java Standard Edition과 Java Mobile Edition과는 다르지만, 중복되는 부분이 상당히 있다.

8 안드로이드 구조 : 애플리케이션 프레임워크 안드로이드 애플리케이션 프레임워크는 Java 기반의 Framework 이며, 대부분이 JNI(Java Native Interface) 통해 native C/C++ 코드로 작성되어 있다. 응용프로그램 아키텍쳐는 컴포넌트 재사용을 손쉽게 할 수 있도록 디자인 됨 (단, 프레임워크의 보안 제약을 따라야 한다.) 이같은 메카니즘은 컴포넌트를 사용자에 의해 교체할 수 있도록 한다.

9 안드로이드 개발 환경 구축 안드로이드가 지원하는 운영체제 버전 Windows XP 또는 Vista / Max OS X 이후 (x86 만 지원) / 리눅스 1. Java SDK 설치 JDK의 현재 최신 버전( 기준)은 JDK 6 Update 18 2. eclipse 설치( Galileo Eclipse 3.5(( 기준) 다운 후 설치 3. Android SDK 설치 다운로드 후 설치 : ( 환경변수 등록 : D:\Android_SDK\tools 추가 Android SDK adn AVD Manager > Available Package 추가등록 4. ADT(Android Development Toolkit – 이클립스 안드로이드 플러그인) 설치 Eclipase -> Help -> Install New Software -> Available Software -> Add Add Site > Name : Android Plugin 입력/ Location: Install Details 창에서 Android DDMS 와 Android Development Tools 확인후 Next> 동의후 인스톨 이클립스를 재실행 후 툴바에 핸드폰 아이콘이 등록되어있으면 성공함. Android SDK Directory 설정 Eclipase -> Window -> Preferences > SDK Location 항목에 안드로이드 SDK 압축을 푼 폴더 경로 지정

10 안드로이드 개발 환경 구축 Hello Android 출력하기


Download ppt "안드로이드 철학, Open Access."

Similar presentations


Ads by Google