1 / 24

Linux/UNIX Programming Linux on Android 문양세 강원대학교 IT 대학 컴퓨터과학전공

Linux/UNIX Programming Linux on Android 문양세 강원대학교 IT 대학 컴퓨터과학전공. 안드로이드 정의. 안드로이드는 운영체제 (operating system), 미들웨어 (middleware), 핵심 애플리케이션 들 (key applications) 을 포함하고 있는 모바일 디바이스를 위한 소프트웨어 스택 (software stack) 이다 .

amable
Télécharger la présentation

Linux/UNIX Programming Linux on Android 문양세 강원대학교 IT 대학 컴퓨터과학전공

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. Linux/UNIX Programming Linux on Android 문양세 강원대학교 IT대학 컴퓨터과학전공

  2. 안드로이드 정의 안드로이드는운영체제(operating system),미들웨어(middleware), 핵심 애플리케이션들(key applications)을 포함하고 있는 모바일 디바이스를 위한 소프트웨어 스택(software stack)이다. 안드로이드는모바일 기기의 외관, 분위기, 기능을 모양 지을 수 있는 모바일 애플리케이션을 작성하기 위한 API 라이브러리 셋과 더불어, 운영체제, 미들웨어, 핵심 애플리케이션을 포함하는 오픈 소스 소프트웨어(OSS: open source software) 스택이다.

  3. 안드로이드 아키텍처

  4. 애플리케이션 캘린더, 전화번호부(contact), 맵, 브라우저, 이메일, SMS 프로그램 등의 핵심 app을 탑재한다. 모든 app은 Java 언어로 작성되어 있다. 우리가 작성하는 app들도 이 layer에 속하게 된다.

  5. 애플리케이션 프레임워크 (1/3) • App 작성/구동에 필요한 서비스를 제공한다. • Core system service • Hardware service • Native app과 동일한 수준으로, 프레임워크 API 사용이 가능하다. • Java 사용이 가능한 프레임워크를 제공하며, 내부적으로는 대부분 C/C++ 코드로 작성되어 있다.

  6. 애플리케이션 프레임워크 (2/3) • Core system service • Activity manager: 애플리케이션의 life cycle을 관리하며, navigation history(뒤로 돌아가기)를 관리한다. • View system: 리스트, 버튼, 텍스트 박스, (내장된) 웹 브라우저 등 풍부하고 확장성 뛰어난 뷰 집합을 제공한다. • Content provider: 다른 응용프로그램들의 데이터를 가져오고 또한 자신의 데이터를 제공한다. • Resource manager: 프로그램 레벨의 코딩을 하지 않고도 다양한 리소스(strings, graphics 등)를 사용할 수 있도록 도와준다. • Notification Manager:Status bar에 알림문구를 표시하는 제공합니다.

  7. 애플리케이션 프레임워크 (3/3) • Hardware service • Location manager • Telephony manager • Bluetooth service • WiFi service, USB service, sensor service

  8. 라이브러리 • 안드로이드는C/C++ 라이브러리를 포함하고 있다. • 라이브러리 기능은 애플리케이션 프레임워크를 통해 개발자에게 제공된다. • 주요 라이브러리 • 시스템 C 라이브러리: BSD의 libc에서 파생되어 구현됨 • 미디어 라이브러리: MPEG4, H.264, JPG 등지원 • Surface 매니저: 2D 및 3D 그래픽 레이어 관리 • SGL(2D graphics engine), 3D라이브러리 • SQLite: Lightweight한 관계형 데이터베이스 엔진

  9. 안드로이드런타임 안드로이드 런타임은 달빅(Dalvik) 가상 머신과Core 라이브러리로 구성된다 달빅은임베디드 환경에 적합하게 디자인되었으며, 모든 안드로이드app은 달빅 상에서 구동된다. 달빅은 높은 수준으로 CPU 최적화된 바이트코드를 interpret하며, 실행 시 메모리를 매우 효율적으로 사용한다. 컴파일(빌드) 시점에 Java .class와 .jar 파일들이 달빅 바이트코드인 dex파일로 변환된다.

  10. 리눅스커널 핵심 시스템 서비스(보안, 메모리 관리, 네트워크 스택, 드라이버 등)에 대해 리눅스 버전 2.6 사용 리눅스커널은 하드웨어와 안드로이드 플랫폼 스택 사이의 추상화 계층 역할 수행

  11. 안드로이드 아키텍처 (revisit)

  12. 목차 안드로이드 정의 안드로이드 특징 안드로이드 아키텍처 안드로이드커널 접근

  13. 에뮬레이터 쉘 접속 포트 번호 확인 • 에뮬레이터가 수행 중인 상태에서 다음과 같이 입력한다. • adb –s emulator-5554 shell • 5554는 포트 번호이다.

  14. 오드로이드쉘 접속 • 개발용 디바이스가 연결된 상태에서 다음과 같이 입력한다. • adb –s serial_number shell

  15. 안드로이드리눅스 둘러보기(1/7)

  16. 안드로이드리눅스 둘러보기(2/7)

  17. 안드로이드리눅스 둘러보기(3/7)

  18. 안드로이드리눅스 둘러보기(4/7)

  19. 안드로이드리눅스 둘러보기(5/7)

  20. 안드로이드리눅스 둘러보기(6/7)

  21. 안드로이드리눅스 둘러보기(7/7)

  22. 실제 apk파일을 볼까요~ (1/2) 당근, 에뮬레이터를 실행 후, 리눅스에 접근해야 합니다. native applications Native apk: “/system/app” 디렉토리에 있음

  23. 실제 apk파일을 볼까요~ (2/2) third party applications (즉, 제가 만든 application 입니다) Third party apk: “/data/app” 디렉토리에 있음

  24. 안드로이드App의 실행 User ID • 모든 app은 자신의 리눅스 프로세스 내에서 실행된다. • App의 실행 필요가 있을 때, 프로세스가 시작된다. • 더 이상 필요치 않고, 다른 app에서 자원이 요구될 때종료된다. • 각 프로세스는 자기 자신의 virtual machine을 가진다. • 각 app에는 고유한 리눅스 user ID가 부여된다. • 리눅스permission scheme을 이용한다.

More Related