- Application framework은 component의 재사용과 교환이 가능하다.
- Dalvik virtual machine은 mobile을 위해 최적화되었다.
- 통합브라우저는 open source인 webkit의 엔진을 사용했다.
- 그래픽은 custom 2d graphics library를 썼고 3D는 opengl ES 1.0이고, 하드웨어 가속
- SQLite는 구조화된 데이터 저장소.
- Media 지원은 일반적인 audio,video 그리고 이미지 format을 지원한다(MPEG4,
- GSM Telephony
- Blutooth,EDGE,3G and WiFi(하드웨어지원시)
- Camera,GPS,compass, acclerometer
- 풍부한 개발환경 지원: device emulator, debugging tool, profiler, plugin
- View : lists, grids, text boxes, buttons, and even an embeddable web browser 등 component를 제공
- content provider : 다른 app의 data를 사용하거나 다른 app를 통해 data를 접근 하는 api를 제공하는듯함.
- resource manager : code가 아닌 문자열 그림에 대한 접근을 가능 하게 하는
- Notification manager : 모든 application은 notification manager의 어떤 함수를 제공하는거 같고 이는 status bar에 경고 메시지를 보낼수 있게함
- Activate manager : 이건 application의 life cycle와 user가 사용한 순서를 stack 에 저장하고 있을 텐데 이를 관리하는 api를 제공 이건 따로
- Application framework enabling reuse and replacement of components
- Dalvik virtual machine optimized for mobile devices
- Integrated browser based on the open source WebKit engine
- Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
- SQLite for structured data storage
- Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
- GSM Telephony (hardware dependent)
- Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
- Camera, GPS, compass, and accelerometer (hardware dependent)
- Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE
- A rich and extensible set of Views that can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser
- Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
- A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
- A Notification Manager that enables all applications to display custom alerts in the status bar
- An Activity Manager that manages the lifecycle of applications and provides a common navigation backstack
- System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
- Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
- Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications
- LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view
- SGL - the underlying 2D graphics engine
- 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer
- FreeType - bitmap and vector font rendering
- SQLite - a powerful and lightweight relational database engine available to all applications
|
Android는 무엇인가? Android는 software stack이다. Software stack은 operating system, middleware와 key application을 포함한다는 말이다. 즉 하나의 플랫폼이다.Android SDK는 tool과 api를 제공한다. 이는 application을 개발하는데 필수적이다. 즉 Android라는 플랫폼의 resource를 사용하기 위한 함수와 그리고 tool을 제공한다는 말일뿐이다.
Android의 특징 => application framework은 자주 쓰이는 혹은 application을 개발하는데 반드시 쓰이는 component, 즉 모듈을 미리 만들어 놓고 이를 그룹화 했다고 생각하면 된다. 운영체제가 출시되면 우리는 흔히 시스템레벨만 생각할지 모르지만, application도 당연히 포함되는데 이 application프로그램들을 여기서는 core application이라고 부른다. 브라우저니 contact메뉴 라던지..이런 게 core program이라고 한다. 하여튼 우리가 개발할 app던 기존에 있던 app던 customizing이 가능하다는 말이다.
=> 추상적임...여튼 개념 소개하는데...차로 치면 엔진에 해당하는 중추적이고 핵심적인 부분을 소개하려면 한도 끝도 없겠기에... 은 옵션이란다. Custome 2d library라는게 있는지는 모르겠다. Opengl이 시스템에 이미 포함되어 있구, 하드웨어가속이 option이라는것은 cell phone에서 chip상에서 지원되는 폰이 있을 수도 있고 아닐 수도 있기 때문이다. 만일 chip(멀티미디어 프로세서가 있어서 듀얼프로세서를 하던)이 있다면 driver단에서 chip을 제어하고 제어할 수있는 함수를 만들어야 될듯하다. H264, MP3, AAC, AMR, JPG, PNG, GIF)
Android architecture
![]()
Application : android가 default로 포함하고 있는 application. 특징은 모두 자바로 쓰여졌다.
Application framework : 이것은 어떠한 service를 수행하는 api나 component들이 다. App들은 이들을 재사용도 가능하고 교체해도 상관없다. api 제공 설명한다고 함.
Libraries Framework의 component나 service들이 이용하는 system에 내재된 libraries. C library : libc Media library : PacketVideo's OpenCORE Surface Manager : 여러 app가 display를 하기 때문에 이를 조정하는 library.. LibWebCore : web browser관련한 library. SGL : 2d library 3D libraries : opengl ES 1.0 FreeType : font관련한 library. SQLite : database 관련한 library. Android Runtime Linux Kernel => android가 특이한 것은 kernel은 linux kernel을 사용한다. 즉 scheduling, process, memory관리 같은 핵심적인 기능은 linux커널에서 한다. 그런데 java virtual machine이 있다는거. 하나의 app를 실행하면 이는 virtual machine에서 동작한다는 것이다. 각각의 app마다 virtual machine이 하나씩 생성되고 그위에서 app가 실행된다. App가 실행된다는건 cpu가 java의 기계어코드인 instruction을 직접 수행하진 않을 것일진데, 그럼 또 한번의 translation을 거쳐야 한다는 뜻. 그럼 linux kernel의 기능을 이용하려면 jni를 사용해서 libc라이브러리와 연결해서 사용한다? 따라서 모든 app는 java로 만들어져야 하며 만들어진 class code들 즉 instruction들 일부는 kernel과 communication한다..라고 생각됨.. 참고로 dex파일이 instruction code 즉 최종 코드임.
|
|
What is Android? Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language. Features Android Architecture The following diagram shows the major components of the Android operating system. Each section is described in more detail below. ![]() Applications Android will ship with a set of core applications including an email client, SMS program, calendar, maps, browser, contacts, and others. All applications are written using the Java programming language. Application Framework Developers have full access to the same framework APIs used by the core applications. The application architecture is designed to simplify the reuse of components; any application can publish its capabilities and any other application may then make use of those capabilities (subject to security constraints enforced by the framework). This same mechanism allows components to be replaced by the user. Underlying all applications is a set of services and systems, including: For more details and a walkthrough of an application, see the Notepad Tutorial. Libraries Android includes a set of C/C++ libraries used by various components of the Android system. These capabilities are exposed to developers through the Android application framework. Some of the core libraries are listed below: Android Runtime Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language. Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool. The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management. Linux Kernel Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model. The kernel also acts as an abstraction layer between the hardware and the rest of the software stack.
|
원본 위치 <http://developer.android.com/guide/basics/what-is-android.html>

댓글 없음:
댓글 쓰기