안드로이드 철학, Open Access.

Slides:



Advertisements
Similar presentations
2014 학년도 3-1 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험. JNI 환경 구축 JNI 의 개념 JNI 사용.
Advertisements

CHAP. 2 안드로이드 개발 도구 설치. © 2012 생능출판사 All rights reserved 개발 과정의 개요.
Copyright© 2015 Hanbit Academy, Inc. All rights reserved. 01. 안드로이드 개요와 개발환경 구축.
임직원 APP 설치 가이드 경영전략처 정보기획 TF 팀. 임직원 App- 운영체제 구분  안드로이드 갤럭시, 갤럭시노트, 갤럭시 S4 [ 삼성전자 ] 옵티머스 [LG 전자 ] 베가 [ 팬텍 모토로이 [ 모토롤라 ]  ios 아이폰 [ 애플.
1 강. 안드로이드 개요 및 개발 환경 구축 - 안드로이드 개요 -JDK 설치 -Path 설정 - 이클립스 설치 -ADT, SDK 설치 Lecturer Kim Myoung-Ho Nickname 블스
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
Page 1 Android Programming November 04 / 2009 S/W Junhyuk Jang.
Android 프로그램개발 환경. 학습 목표 ■ 교육 목표  JDK 설치  JDK 환경 설정  Eclipse 설치  Android SDK 설치  ADT Plug-in 설치  Android Virtual Device(AVD) 설치  Android 예제 프로그램.
2016 유성환 Hybrid MOBILE.
안드로이드 소개 및 개발환경 설정 인공지능연구실.
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
A n d r o i d Android 2010년 5월 19일 동서대학교 백선재
“ 안드로이드 ” 개발 환경 설정 [ 컨버전스팀 ] ㈜한 싹 2011 년 01 월 03 일.
Android 개발환경 설정 및 Android View 소개
그림으로 쉽게 설명하는 안드로이드 프로그래밍
2. 앱 개발환경 구축 Step by Step 안드로이드 프로그래밍 쉽게 시작하는 안드로이드 4.4 앱 개발.
자바 언어의 이해 Understanding of Java Programming
Linux/UNIX Programming
Naver linuxkernel26 운영자 : 박 철
Image & Video processing
안드로이드 개요.
Power Java 제3장 이클립스 사용하기.
A n d r o i d Android 2010 년 5월 19일 작성자 : 백 선 재.
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Cross Compiler를이용한 커널 컴파일 및 포팅
Power Java 제2장 자바 개발 도구.
Linux/UNIX Programming
제1강 안드로이드 특징과 개발환경 구축 안드로이드 앱 개발 강좌.
운영체제 박상민.
Ubiquitous Computing Practice - Part I (Installation) -
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
이클립스를 이용한 AVR 개발환경 구축 로보틱스랩 유승일.
Java 기초 (Java JDK 설치 및 환경설정)
1.4 프로그래밍을 위한 환경 설정.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Android 개발환경 설치 및 Hello World
Visual Basic .NET 처음 사용하기.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
소프트웨어 분석과 설계 Struts2 & JBOSS 설치하기
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
제1강 안드로이드 특징과 개발환경 구축 안드로이드 앱 개발 강좌.
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
UNIT 02 JDK & Tools 설치 로봇 SW 컨텐츠 교육원 조용수.
JAVA CDT install
1. MIDP란? 2. 하드웨어 사양 3. MIDlet 4. MIDlet Suite
2장 JSP 개발 환경 설정 이장에서 배울 내용 : JSP 페이지를 작성하기 위한 개발환경을 설정하고, 웹 어플리케이션 개발을 위해 반드시 이해하여야 할 웹 어플리케이션 폴더 구조에 대해 학습한다. 또한 요청된 JSP 페이지가 어떠한 처리과정을 거쳐 응답이 이루어지는가에.
Wireless Java Programming
Android studio로 Application 만들기.
Cross Compiler를이용한 커널 컴파일 및 포팅
Method & library.
자바응용.
2장. JSP 프로그래밍을 위한 환경구성 제2장.
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
개발 환경 세팅.
영상처리 실습 인공지능연구실.
제목소개 1. 안드로이드소개 2. 패킷캡쳐를 위한 환경 소개 3. ndk 소개 4. lipcap 5. 6.도식화 그림
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
모바일 자바 프로그래밍 J2ME 개발 살펴보기 Ps lab 오민경.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Linux/UNIX Programming
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
발표자 : 이지연 Programming Systems Lab.
Installation Guide.
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
K PaaS-TA 앱 운영.
JAVA 프로그래밍 16장 JNLP.
Presentation transcript:

안드로이드 철학, Open Access

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

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

안드로이드 구조 : 내장 라이브러리 안드로이드 내장 라이브러리는, 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 : 모든 응용프로그램에서 사용 가능한 강력하고 경량인 관계형 데이터베이스 엔진

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

안드로이드 구조 : 안드로이드 런타임 안드로이드 런타임은, 안드로이드에서 사용되는 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 가상머신은 스레딩과 저수준 메모리 관리와 같은 리눅스 커널 기능을 사용한다.

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

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

안드로이드 개발 환경 구축 안드로이드가 지원하는 운영체제 버전 Windows XP 또는 Vista / Max OS X 10.4.8 이후 (x86 만 지원) / 리눅스 1. Java SDK 설치 JDK의 현재 최신 버전(2010.03.11 기준)은 JDK 6 Update 18 2. eclipse 설치(http://www.eclipse.org/) Galileo Eclipse 3.5((2009.12.22 기준) 다운 후 설치 3. Android SDK 설치 다운로드 후 설치 : (http://developer.android.com/sdk/index.html ) 환경변수 등록 : 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: https://dl-ssl.google.com/android/eclipse/ 입력 Install Details 창에서 Android DDMS 와 Android Development Tools 확인후 Next> 동의후 인스톨 이클립스를 재실행 후 툴바에 핸드폰 아이콘이 등록되어있으면 성공함. Android SDK Directory 설정 Eclipase -> Window -> Preferences > SDK Location 항목에 안드로이드 SDK 압축을 푼 폴더 경로 지정

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