'Android'에 해당되는 글 12건

Porting Android to x86

Android 2011. 11. 23. 13:39
Android-x86 2.2-r2 is released (Froyo).

[1] Getting source code


Getting Android-x86 source code
$ mkdir android-x86
$ cd android-x86
$ repo init -u git://git.android-x86.org/manifest.git -b $branch
$ repo sync -j$n

$ repo init -u git://git.android-x86.org/manifest.git -b android-x86-2.2-r2
$ repo sync –j4

[2] Building the image


Choose a target
froyo-x86 / gingerbread-x86 
 
       generic_x86: for generic x86 PC/notebook
eeepc: for ASUS EeePC family only
asus_laptop: for some ASUS laptops
viewpad10: for ViewSonic ViewPad 10 (may work with other Atom N45x based tablets)
sparta: for Dell Inspiron Mini Duo platform
vm: for virtual machine (virtual box, qemu, vmware)
motion_m1400: for Motion M1400 (Intel Centrino M based with Intel PRO/Wireless)

Build
$ . build/envsetup.sh
$ lunch eeepc-eng
$ m -jX usb_img

Make
$ cd ~/Android-x86/bin
$ make -j4 usb_img
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.2.2
TARGET_PRODUCT=eeepc
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=x86
TARGET_ARCH_VARIANT=
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=FRG83G
============================================

[3] Installation


Android Installation 선택


* ETC

Ubuntu live booting 후에 Window file system에 접근 후 USB booting image 생성
fdisk –l 명령어로 USB 파일 시스템 파악
dd if=xxx/eeepc_usb.img of=/dev/sdb
USB 파일 시스템으로 booting image 생성


'Android' 카테고리의 다른 글

인사이드 안드로이드 Chapter3 (1)  (0) 2011.12.08
인사이드 안드로이드 Chapter3  (0) 2011.12.08
인사이드 안드로이드 Chapter1-2  (0) 2011.12.08
Linaro  (0) 2011.11.28
인사이드 안드로이드  (0) 2011.11.23
블로그 이미지

민둥

,
인사이드 안드로이드 (Inside the Android Framework)

----------[[ Chapter 06 안드로이드 서비스 개요 ]]----------

Android Service
UI없이 주기적으로 특정한 일을 수행하는 백그라운드 프로세스
ex) Alarm service

Android service 
1) System service
2) Application service

Binding: service를 원격제어할 수 있게 다른 service에 연결하는것
실행 startService()
제어 bindService()

서비스와 이를 생성한 서비스가 동일한 프로세스인지에 따라 로컬 서비스, 리모트 서비스로 구별
- 로컬 서비스: 자신을 생성한 app안에서만 사용, app이 종료되면 종료
- 리모트 서비스: 별개의 독립적인 프로세스에서 동작, main app이 종료되어도 계속 실행

* 바인더 IPC 통신
서비스와 액티비티 사이에 데이터를 주고받을때 --> 마샬링/언마샬링 과정
AIDL (Android Interface Definition Language)


----------[[ Chapter 07 안드로이드 바인더 IPC ]]----------

바인더는 원래 IPC (Inter Proocess Communication) 도구
안드로이드에선 RPC (Remote Procedure Call)를 지원하는데 주로 이용된다.

바인더 IPC 데이터
1) 핸들: 서비스를 구별하는 번호
2) RPC 데이터: 서비스에서 호출할 함수의 인자
3) RPC 코드: 서비스에서 호출할 함수
4) Binder Protocol: IPC 데이터의 처리방법

IPC --> Binder driver : Binder command protocol (BC_)
Binder driver --> IPC : Binder Return protocol (BR_)

Context Manager (핸들번호 0)
다양한 서비스를 모두 목록화해서 관리하는 컨텍스트 매니져
서비스마다 핸들 번호를 할당. 서비스의 추가/검색 등의 관리 기능 수행

Binder Addressing
IPC 핸들을 가지고 서비스 서버를 찾는 과정

컨텍스트 매니져 (Service manager process)

 
----------[[ Chapter 08 안드로이드 서비스 프레임워크 ]]----------

시스템 서비스 <-- 서비스 프레임워크를 통해 구현
서비스 프레임워크: 안드로이드 플랫폼에서 동작하는 서비스를 개발하기위한 클래스의 집합

프레임워크의 대표적인 특징
1) 확장을 통해 새로운 기능을 추가할 수 있다.
2) 구현된 프로그램의 제어 흐름이 프로그램 자체에 있는게 아니라 프레임워크에 의해 좌우된다.

안드로이드 서비스 프레임워크
- 서비스 인터페이스
- 서비스 생성 (서비스, 서비스 프록시)
- 바인더 IPC 지원
- 서비스 매니져

서비스 클라이언트
- 서비스 레이어
- RPC 레이어
- IPC 레이어
- (바인더 드라이버)

* 마샬링 (Marshalling)
하나 이상의 프로그램 또는 연속되어 있지 않은 저장 공간으로 부터 데이터를 모은 다음, 데이터들을 메세지 버퍼에 집어넣고, 특정 수신기나 프로그래밍 인터페이스에 맞도록 그 데이터 를 조직화하거나, 미리 정해진 다른 혀식으로 변환하는 과정을 말한다.
클라이언트에서 마샬링된 데이터를 서버에 전달하게 되면, 서버에서는 그 데이터를 언마샬링하여 사용함으로써 원격지(다른 프로세스)간의 데이터 사용이 가능하게 된다.


'Android' 카테고리의 다른 글

인사이드 안드로이드 Chapter3 (1)  (0) 2011.12.08
인사이드 안드로이드 Chapter3  (0) 2011.12.08
인사이드 안드로이드 Chapter1-2  (0) 2011.12.08
Linaro  (0) 2011.11.28
Porting Android to x86  (0) 2011.11.23
블로그 이미지

민둥

,