34
Open Mobile PlatformGoogle Android, 그리고 Market Issue www.kandroid.org 일시 : 2008년 3월 27일, 목요일 / 15:00 ~ 16:30 장소 : 인티규브 발표자 : www.kandroid.org 운영자, 들풀

Open Mobile Platform 과 Google Android, 그리고 Market Issue

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Open Mobile Platform 과 Google Android, 그리고 Market Issue

Open Mobile Platform과 Google Android, 그리고 Market Issue

www.kandroid.org

일시 : 2008년 3월 27일, 목요일 / 15:00 ~ 16:30

장소 : 인티규브

발표자 : www.kandroid.org 운영자, 들풀

Page 2: Open Mobile Platform 과 Google Android, 그리고 Market Issue

2

2008.3.27.Kandroid

for Inticube

www.kandroid.org

part 1 Google Android – Google의 과거, 현재, 그리고 미래

Don’t be evil !

Open Access !Open Mobile Platform !

Page 3: Open Mobile Platform 과 Google Android, 그리고 Market Issue

3

2008.3.27.Kandroid

for Inticube

www.kandroid.org

part 1part 1 Google Android – Open Access & 700MHz 주파수 경매

The “FOUR OPENS” of Successful Open Access - The letter of GOOGLE to FCC, July 18, 2007

Open Devices

Open Applications

Open Services

Open Networks

700MHz 대역 주파수 중 상업용 상위 C블럭 22MHz

2007.12.3 FCC 경매 참여 마감 (총 214개업체)2008.1.24 Auction 73 시작Platform that is more open to devices and applications.☞ 주파수 자체의 매매/임대는 불가능.

Verizon Wireless 가 유력 (금주 중 경매 마감 예정)

이통망개방 컨퍼런스 (3/19~20) – ‘Network only’가입자와 중간서비스업체, 단말기업체들로부터네트워크 사용료를 받는 형태의 비즈니스 모델로 전환할 계획

구글의 경매 성패에 상관없이 미국에서 주파수는 분명하게 개방된 것이라고 볼 수 있으며, 이 네트워크를 통해 많은 오픈 플랫폼이 정착할 것.

그 중 서비스와 컨텐츠, 그리고 명분과 전략을 갖고 있는 구글이 MS나 야후, Apple 보다 유리한 고지를 점할것은 분명.

이 경매는 분명 세계적 영향력을 파생하여 새로운 모바일 생태시스템을 구축하는데 기여했다는 점에 의의.

Consumers should be able to download and utilize any software applications, content, or services they desire

Consumers should be able to utilize a handheld communications device with whatever wireless network they prefer

Third parties (like internet service providers) should be able to interconnect at any technically feasible point in a 700 MHz licensee's wireless network

Third parties (resellers) should be able to acquire wireless services from a 700 MHz licensee on a wholesale basis, based on reasonably nondiscriminatory commercial terms

700MHz 주파수경매진행사항및의의

Page 4: Open Mobile Platform 과 Google Android, 그리고 Market Issue

4

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android란 무엇인가?

Android는 운영체제, 미들웨어 그리고 핵심 애플리케이션들을 포함하고 있는 모바일 디바이스를 위한 “하나의 소프트웨어 스택”이다. Android SDK의 초기 형태는 Java 프로그래밍 언어를 사용하여 안드로이드 플랫폼 상에서 애플리케이션 개발을 시작하기

위해 필요한 도구들과 API들을 제공하고 있다.

Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.

Page 5: Open Mobile Platform 과 Google Android, 그리고 Market Issue

5

2008.3.27.Kandroid

for Inticube

www.kandroid.org

ddms(Dalvik Debug Monitor Service)

Android Developer Tools Pluginfor the Eclipse IDE

Android Developer Tools Pluginfor the Eclipse IDE

adb(Android Debug Bridge)

aapt(Android Asset Packing Tool)

aidl(Android Interface Description Language)

Android Emulator(QEMU, goldfish)

Android Emulator(QEMU, goldfish)

mksdcard

dx

Traceview, sqlite3, activityCreator

Hardware

AndroidAndroid Android SDKAndroid SDK

Android and Android SDK

Page 6: Open Mobile Platform 과 Google Android, 그리고 Market Issue

6

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android 관련 주요 일정

Real Android Phone 출시 예상2008.2~3Q.

The Mobile World Congress 2008 BarcelonaTexas Instruments, Google Android 프로토타입 시연2008.2.11~14.

Google, Android SDK m5-rc14 릴리즈2008.2.13.

Google, Android ADC 일정 연기 발표2008.1.28.

美FCC, 700MHz 주파수 경매 시작2008.1.24.

Google, 700MHz 주파수 경매 참여2007.12.3.

Google, Android SDK 릴리즈

Google, Android ADC 발표. (총 1,000만 달러 상금규모)2007.11.12.

Ascender Corp, OHA를 위한 Droid Font Collection 공급2007.11

OHA, 모바일 디바이스에 대한 오픈 스탠다드 개발 착수2007.11

Google, Jaiku Inc. 를 매입함.2007.10

Google, Skia 를 사들임.2005.11

Google, Android Inc. 를 매입함.2005.8

Page 7: Open Mobile Platform 과 Google Android, 그리고 Market Issue

7

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android의 주요 특징

디바이스 에뮬레이터, 디버깅 도구, 메모리 및 성능 프로파일링,

그리고 Eclipse IDE를 위한 플러그인을 포함함.풍부한 개발 환경

(하드웨어 의존적임)Geographical and Location Based – Geocoding 추가됨

카메라, GPS, 나침판, 가속도계

(하드웨어 의존적임) 블루투스, EDGE, 3G, 그리고 WiFi

(하드웨어 의존적임)GSM 테크놀로지

일반적인 오디오, 비디오, 그리고 정지 이미지 포맷들을 지원

(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)OGG Vorbis (.ogg) MIDI (.mid, .smf), XMF (.xmf, .mxmf), iMelody (.imy), RTTTL/RTX (.rtttl, .rtx) 그리고 OTA (.ota) 오디오 파일 포맷 지원 추가됨.

미디어 지원

정형화된 데이타 저장공간을 위한 것.SQLite

구글이 만든 2D 그래픽 라이브러리에 의해 강화됨;

OpenGL ES 1.0 스펙에 기반한 3D 그래픽

(하드웨어 가속은 선택사항임)최적화된 그래픽

오픈 소스 WebKit 엔진 기반임.통합 브라우저

모바일 디바이스를 위해 최적화 됨.Dalvik 가상 머신

컴포넌트의 재사용 및 대체를 가능하게 함. 애플리케이션 프레임워크

Page 8: Open Mobile Platform 과 Google Android, 그리고 Market Issue

8

2008.3.27.Kandroid

for Inticube

www.kandroid.org

안드로이드 SDK m5-rc14 주요 Upgrade 항목

1. AndroidManifest.xml2. Layout Files 3. Adapters4. Widgets and Views5. Menus6. Animations7. Alerts8. SQLite and ContentProvider9. Geographical and Location Based10. Notification Manager11. Browser12. GTalk (formerly XMPP)13. OpenGL14. Media15. Search Manager

안드로이드 SDK m5-rc15 주요 Upgrade 항목

1. Bitmap Image Minor Bug Patch

상금 : 10개 (각 $275,000)10개 (각 $100,000)

자격 : 본선 출품작50개에 한함

상금 : 50개(각 $25,000)

비 고

2008.7.21.

2008.6.30.

2008.5.5.

2008.4.14.

변경일정

최우수 당선작 및 최종당선작 발표- (총 20개 당선작 발표)

2008.5월 말

1차 본선 접수 마감2008.5.1.

본선 출품 당선작 발표- (총 50개 당선작 발표)

2008.3월 말

1차 예선 공모 접수 마감2008.3.2.

1차 예선 공모 접수 시작2008.1.2.

내 용초기일정

※ 아래는 구글이 안드로이드 개발자 챌린지를 연기한 이유를 언급한 부분임.

우리는 여러분이 우리의 첫번째 안드로이드 개발자 챌리지에 대한 제출 마감일을2008년 4월 14일까지로 연기하는 것을 알기를 원합니다. 여러분이 우리에게주었던 엄청난 피드백에 기반해서 우리는 몇주내로 배포될 SDK에 의미있는업데이트를 만들었습니다. 이러한 새로운 UI와 API 확장에 대한 장점을 만들 수있는 추가적인 시간을 여러분에게 주기 위해서 우리는 제출 마감일을 연기하기로결정했습니다. 추가적으로 꽤 많은 수의 개발자들이 자신들의 애플리케이션들을만들고 다듬을더 많은 시간을 요구했었습니다.

Android ADC 관련 주요 일정 및 SDK Update 현황

Page 9: Open Mobile Platform 과 Google Android, 그리고 Market Issue

9

2008.3.27.Kandroid

for Inticube

www.kandroid.org

The Design goal of Android – Openness

Be as flexible as possibleHow it handles access to data (Mashups on the internet and everything else)Rapid development (XML, Java)

IPC/Data Sharing Method

AIDL (Android Interface Definition Language)COM/CORBA like IDL ← Binder

SQLiteContent ProviderFileSystem

Dev Language?

App : JavaFramework : JavaLibraries : C/C++OS & Driver : C

Creating Native C Applications

Possible, but not supported

Android Architecture Detail

Page 10: Open Mobile Platform 과 Google Android, 그리고 Market Issue

10

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Cellular Wibro WiFi

Real Phone App.

always-on networking

USBBlueTooth

- 생각해 볼 만한 문제

주파수 혁명은 이제 시작이다. (white spaces)

Networking : Wireless, Wired

Page 11: Open Mobile Platform 과 Google Android, 그리고 Market Issue

11

2008.3.27.Kandroid

for Inticube

www.kandroid.org

QEMUQEMU

ARM CPUSimulatorARM CPUSimulator

goldfishHardware Simulator

goldfishHardware Simulator

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Goldfish

Android SDK isn't targeted for a special (ARM) SoC. Instead, they use QEMU to create a virtual ARM SoC called Goldfish. The virtual ARM SoC boots an (currently 2.6.23, m5-rc14) ARM Linux kernel with Goldfish platform support on your (x86) Windows, MacOS X or Linux host.

This virtual ARM SoC comprises:

ARM926T CPU Thumb support MMC RTC Keyboard USB Gadget FramebufferTTY driver NAND Software compiled for ARMv5TEJ instruction set (!) with EABI no TLS yet

Android Emulator : QEUM, Goldfish

Page 12: Open Mobile Platform 과 Google Android, 그리고 Market Issue

12

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Running Android on real hardware, some prerequisites should be fulfilled:

SoC with ARM926 or higher (e.g. ARM11) (check ARM MPCore or ARM Cortex regarding TLS issue) Note: ARM920T with ARMv4 instruction set will not work You have already a recent (~2.6.23) Linux kernel with Thumb & MMU & EABI etc support running on your target

Soc/HW has and Linux kernel supports

Display/frame buffer (touchscreen would be good but optional). Frame buffer has to support double buffer/page flipping. Keyboard USB (optional) RTC (optional?) Serial console Some storage, sufficient for ~64MB, e.g. NFS or USB stick or NAND or NOR or MMC/SDcardetc. NFS would be easiest for development Sufficient main memory (SDRAM) >=32MB. While 32MB seems to be enough to start, system will be really slow then. Therefore 32MB is sufficient for proof of concept, but not for a usable system.

Known to work HW

OMAP1 based boards (ARM926) OMAP2 based boards (ARM11) Sharp Zaurus SL-C760 Sharp Zaurus SL-C3000 Armadillo-500 (Freescale i.MX31L ARM11) OMAP1 based OSK (OMAP5912 ARM926 with only 32MB SDRAM). Really slow, mainly usable as proof of concept.

Known to not work HW

Neo 1973 (ARM920T)

Android Hardware : Requirements

Page 13: Open Mobile Platform 과 Google Android, 그리고 Market Issue

13

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

linux-2.6.23Ordinary kernel at a glance• No peculiar change found• Added source code dependent on goldfish hardware• Presuming ARM 926 as CPU

CONFIG_CPU_32=yCONFIG_CPU_ARM926T=yCONFIG_CPU_32v5=yCONFIG_CPU_ABRT_EV5TJ=yCONFIG_CPU_CACHE_VIVT=yCONFIG_CPU_COPY_V4WB=yCONFIG_CPU_TLB_V4WBI=yCONFIG_CPU_CP15=yCONFIG_CPU_CP15_MMU=y

Linux 2.6 on ARM v5 or later seems sufficient environment to run Android

They only use kernel!!No linux-like (unix-like) initialization seen• No initialization with scripts such as init.rc• Almost just after small initialization with /init, transferred to application environment• No loadable module in current versionRoot file system is charasteristicFor libc, BSD libc is used instead of glibc or uClibc often used

Android Kernel : Linux-2.6.23

Page 14: Open Mobile Platform 과 Google Android, 그리고 Market Issue

14

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android Kernel : Linux-2.6.23

1. Target Device Limitation 관련.

2. S/W Requirement

- Linux Kernel Source- Android Platform Image - Cross Compilation Tools- Util :

http://www.busybox.net/downloads/

3. Build Kernel Image

- Kernel Build Configuration- Make Kernel Image

4. Install Kernel Image and File System

5. Boot Configuration...

6. Startup

○ARM11 계열Unaligned Access 지원Media 처리용 명령어 추가

v6

○ARM7, ARM9 계열v5TE + Java 코드 실행v5TEJ

○ARM9, xSCALE 계열v4T 기능개선v5TE

ⅩARM7,ARM9 계열v4 + Thumb 기능 지원v4T

ⅩStrong ARMSystem mode 지원v4

Ⅹ현재는 단종초기버전v1,v2,v3

Android 지원 여부Processors주요 특징Architecture

Page 15: Open Mobile Platform 과 Google Android, 그리고 Market Issue

15

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

안드로이드는 안드로이드 시스템의 다양한 컴포넌트에 의해 사용되는 C/C++ 라이브러리 집합을 포함하고 있다. 이러한 라이브러리의 기능들은 안드로이드 애플리케이션 프레임웍크을 통해서 개발자들에게제공된다. 아래에 나열될 것은 핵심 라이브러리들 중 일부분이다.

시스템 C 라이브러리임베디드 리눅스 기반의 디바이스를 위해서 튜닝된 표준 C 시스템 라이브러리의BSD?기반 파생?구현물 (libc)?

미디어 라이브러리PacketVideo의 OpenCORE기반임. MPEG4, H.264, MP3, AAC, AMR, JPG, PNG를 포함하는정적 이미지 파일뿐 아니라, 널리 대중화된 오디오나 비디오 포맷들의 재생 및 녹화를 지원함.

Surface 관리자디스플레이 서브시스템에 대한 접근을 관리하며, 다수의?애플리케이션들과 분리된통합된 2D 와 3D 그래픽 계층을 제공함.

LibWebCore안드로이드 브라우저와 임베딩 가능한 웹 뷰를 제공하는 최신 웹 브라우저

SGL 기반이 되는 2D 그래픽 엔진

3D 라이브러리OpenGL ES 1.0 API들에 기반한 구현.?하드웨어 3D 가속기가 있다면 그것을 사용하거나또는 설치된 고도로 최적화된 3D 소프트웨어 래스터라이저를 사용함.

FreeType비트맵 또는 벡터 폰트 랜더링

SQLite모든 애플리케이션에서 사용 가능한 강력하며 경량화된 관계형 데이타베이스 엔진

Android Libraries

Page 16: Open Mobile Platform 과 Google Android, 그리고 Market Issue

16

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Dynamic object Build and Install 절차

1. armelf_linux_eabi.xsc 수정

2. object 생성 (tool: arm-none-linux-gnueabi-gcc)3. dynamic object 생성 (tool: arm-none-linux-gnueabi-ld)4. 설치 (tool: adb)

SkiaBug Issue (가장 최근 SDK 업데이트도 이 부분의 Bug임)SGL

KDE & AppleCallback Function IssueWebKit

FreetypePerformance & License Issue FreeType

i18n Issue (아직 어떠한 대안도 언급된 적이 없음. Why?)ICU

Porting IssueRIL

최근 다양한 데이타베이스들이 나오고 있음.SQLite

비고주요 이슈Library 분류

Kernel, Dalvik등과 관련성이 많은 영역libc

SSL을 포함한 다양한 Security 문제들이 최근 언급되고 있음.SSL

packetvideo최근 Add-On 이 가장 많이 된 영역.Media Framework

Hardware 의존성이 많은 영역.OpenGL|ES

2D/3D 단일 Interface 제공이 목적임.Surface Manager

Android Libraries : Dev. Tip & Issue

Page 17: Open Mobile Platform 과 Google Android, 그리고 Market Issue

17

2008.3.27.Kandroid

for Inticube

www.kandroid.org

안드로이드는 Java 프로그래밍 언어의 핵심 라이브러리에서 사용가능한 대부분의 기능들을 포함하는핵심 라이브러리들을 포함한다.모든 안드로이드 애플리케이션은 Dalvik 가상 머신내의 자신의 인스턴스를 가지고, 자신의프로세스내에서 동작한다. Dalvik은 하나의 디바이스가 복수의 VM들을 효과적으로 실행하도록만들어졌다. Dalvik VM 최소 메모리 사용하도록 최적화된 Dalvik Executable(.dex) 포맷의 파일들을실행한다. Dalvik VM은 레지스터 기반이며, Java 언어 컴파일러에 의해 컴파일된 클래스를 "dx"라는도구에 의해 .dex 포맷으로 변환된 클래스를 실행한다.Dalvik VM은 쓰레딩과 저수준 메모리 관리와 같은 기능을 위해 리눅스 커널에 기초한다.

Dalvik virtual machine

The Dalvik virtual machine is a register-based virtual machine, designed and written by Dan Bornstein with contributions from other Google engineers as part of the Android mobile phone platform.It is optimized for low memory requirements, and is designed to allow multiple VM instances to run at once, relying on the underlying operating system for process isolation, memory management and threading support. Dalvik is often referred to as a Java Virtual Machine, but this is not strictly accurate, as the bytecode on which it operates is not Java bytecode. Instead, a tool named dx, included in the Android SDK, transforms the Java Class files of Java classes compiled by a regular Java compiler into another class file format (the .dex format).

Core Libraries

The core Java libraries are also part of the Android runtime. They are written in Java, as is everything above this layer. Here, Android provides a substantial subset of the Java 5 Standard Edition packages, including Collections, I/O, and so forth.

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android Run-Time

Page 18: Open Mobile Platform 과 Google Android, 그리고 Market Issue

18

2008.3.27.Kandroid

for Inticube

www.kandroid.org

1. Dalvik VM Source는 Open될 것인가? - Dalvik Source를 공개한 상태에서도 안드로이드에 대한 Google의 Initiative는 유지되는가?- Dalvik Source를 공개할 경우, 호환성 또는 어떤 더 큰 문제들에 봉착할 가능성은 없는가?- 구글은 모바일 플랫폼의 안정성과 더불어 오픈 소스 요구들을 어떻게 해결해 나갈까?

2. Dalvik VM이 Application의 Performance를 결정하는 요소인가?- Embedded Application에서의 Moore’s law는 유효한가?- VM 내부 구조(Stack-base or Register-base) 이슈가 App. 성능에 미치는 영향은?- JIT Compilation 이슈가 App. 성능에 미치는 영향은?- 아래는 안드로이드 Application Performance 관련 Tip임.

3,000,000Launch an empty activity

135,000Inflate 1 LinearLayout containing 6 TextView objects

100,000Inflate 1 LinearLayout containing 6 View objects

25,000Inflate 1 LinearLayout containing 1 TextView

22,000Inflate 1 View from XML

600Call put() on a HashMap

165Call Iterator:next() on a HashMap

15Call empty interface method

12.5Call empty virtual method

12Call empty static method

5Call empty static native method

5Call String.length()

4Add a member variable

1Add a local variable

TimeAction1. Avoid Creating Objects.2. Use Native Methods3. Prefer Virtual Over Interface4. Prefer Static Over Virtual5. Avoid Internal

Getters/Setters6. Cache Field Lookups7. Declare Constants Final8. Use Enhanced For Loop

Syntax With Caution9. Avoid Enums10. Use Package Scope

with Inner Classes11. Avoid Float12. Some Sample Performance

Numbers

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android Run-Time : Dalvik VM Issue

Page 19: Open Mobile Platform 과 Google Android, 그리고 Market Issue

19

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android App. Framework

Application Building Block

- AndroidManifest.xml : 생성된 컴포넌트가 수행할 것들에 대한 제어파일.- Activities : 생명주기를 가지는 오브젝트

- Views : 스크린에 그리는 것에 관여하는 오브젝트

- Intents : 어떤 것에 대한 의도를 표현하는 메시지 오브젝트

- Services : background도 동작하는 a body of code.- Notifications : 상태바를 나타내는 작은 아이콘

- ContentProviders : 디바이스상에 존재하는 데이터에 대한 접근을 가능하게 하는 저장소.

ContentProvider는 디바이스상의 데이타에 대한 접근을 제공하는 하나의 데이타 저장소이다; 전통적인 예는 사용자의 전화번호부 목록에 접근하기 위해 사용되는 ContentProvider이다. 여러분의 애플리케이션은 ContentProvider를 통해 다른 애플리케이션들이 보여주는 데이타에 접근할 수 있으며, 여러분은 또한

여러분 소유의 데이타를 보여주기위한 여러분 소유의 ContentProvider들을 정의할 수 있다.ContentProviders

Notification은 상태바에 나타나는 작은 아이콘이다. 사용자는 정보를 수신하는 이 아이콘과 상호작용 할 수 있다. 가장 널리 알려진 Notification들이 SMS 메시지, 통화목록, 그리고 음성메일이지만, 애플리케이션들은 자기 소유의 것을 만들 수 있다. Notification은 사용자들이 주목해야 할 필요가 있는 어떤 것을 사용자에게 알리기 위한 아주 좋은 메카니즘이다.

Notifications

Service는 background로 동작하는 코드의 몸체이다. 그것은 자신의 프로세스 안이나, 또는 그것의 필요에 의존하는 다른 애플리케이션의 프로세스의 컨텍스트 안에서 실행할 수 있다. 다른 컴포넌트들은 서비스에 "bind"하고, 원격프로세스호출을 통해 그 위의 메쏘드를 invoke한다. Servide의 하나의 예가

미디어 플레이어다.사용자가 미디어 선택 UI를 끝냈을 때 조차도, 그녀는 여전히 그녀의 음악이 재생 되고 있기를 여전히 원할 수 있다. Service는 UI가 끝났을 때 조차도 음악을 계속 재생시킨다.

Services

Intent는 어떤 것을 할 의도를 표현하는 단순한 메시지 오브젝트이다. 예를들어, 여러분의 애플리케이션이 웹 페이지를 표시하길 원한다면, 그것은 Intent 인스턴스를 생성하는 것에 의해 URI를 보기 위한 Intent를 표명하고, 시스템에게 그것을 넘긴다. 시스템은 그 Intent를 처리할 방법을 아는 (이 경우는 브라우저) 약간의 다른 코드 조각들을 위치세우고, 그것을 실행한다. Intent는 또한 시스템 전역에 걸쳐 notification 과 같은 흥미로운 이벤트를 방송하기 위해 사용될 수도 있다.

Intents

View는 스스로 스크린에 그리는 방법을 아는 하나의 오브젝트이다. 안드로이드 사용자 인터페이스는 View의 계층구조로 구성된다. 만약 여러분이 어떤 자체제작한 그래픽한 기술(게임을 제작하거나, 또는 어떤 특별한 새로운 사용자 인터페이스 위젯을 만들 때)을 수행하길 원한다면, 여러분은 View를 생성할 수 있다.

Views

Activity는 기본적으로 생명주기를 가지는 오브젝트이다. Activity는 어떤 작업을 하는 코드의 묶음이다. 만약 필요하다면, 그것은 사용자에게 UI를 보여주는 것을 포함할 수 있다. 그것은 그럼에도 그것을 가지고 있지 않다 - 어떤 Activity는 결로 UI를 보여주지 않는다. 전통적으로 여러분은 여러분의

애플리케이에 대한 시작점으로써 애플리케이션의 Activity들중 하나를 가르킬 것이다.Activitys

AndroidManifest.xml file은 여러분이 생성했던 모든 최상위 레벨 컴포넌트(특별히, 아래에 언급된 activity,service, intent receiver, 그리고 content provider)를가지고 시스템이 무엇을 하는가를 말하는 제어파일이다. 예를들어, 이것은 여러분의 activity들이 어떤 intent를 받는가를 실질적으로

명세하는 glue이다.AndroidManifest.xml

ContentProvider는 디바이스상의 데이타에 대한 접근을 제공하는 하나의 데이타 저장소이다; 전통적인 예는 사용자의 전화번호부 목록에 접근하기 위해 사용되는 ContentProvider이다. 여러분의 애플리케이션은 ContentProvider를 통해 다른 애플리케이션들이 보여주는 데이타에 접근할 수 있으며, 여러분은 또한

여러분 소유의 데이타를 보여주기위한 여러분 소유의 ContentProvider들을 정의할 수 있다.ContentProviders

Notification은 상태바에 나타나는 작은 아이콘이다. 사용자는 정보를 수신하는 이 아이콘과 상호작용 할 수 있다. 가장 널리 알려진 Notification들이 SMS 메시지, 통화목록, 그리고 음성메일이지만, 애플리케이션들은 자기 소유의 것을 만들 수 있다. Notification은 사용자들이 주목해야 할 필요가 있는 어떤 것을 사용자에게 알리기 위한 아주 좋은 메카니즘이다.

Notifications

Service는 background로 동작하는 코드의 몸체이다. 그것은 자신의 프로세스 안이나, 또는 그것의 필요에 의존하는 다른 애플리케이션의 프로세스의 컨텍스트 안에서 실행할 수 있다. 다른 컴포넌트들은 서비스에 "bind"하고, 원격프로세스호출을 통해 그 위의 메쏘드를 invoke한다. Servide의 하나의 예가

미디어 플레이어다.사용자가 미디어 선택 UI를 끝냈을 때 조차도, 그녀는 여전히 그녀의 음악이 재생 되고 있기를 여전히 원할 수 있다. Service는 UI가 끝났을 때 조차도 음악을 계속 재생시킨다.

Services

Intent는 어떤 것을 할 의도를 표현하는 단순한 메시지 오브젝트이다. 예를들어, 여러분의 애플리케이션이 웹 페이지를 표시하길 원한다면, 그것은 Intent 인스턴스를 생성하는 것에 의해 URI를 보기 위한 Intent를 표명하고, 시스템에게 그것을 넘긴다. 시스템은 그 Intent를 처리할 방법을 아는 (이 경우는 브라우저) 약간의 다른 코드 조각들을 위치세우고, 그것을 실행한다. Intent는 또한 시스템 전역에 걸쳐 notification 과 같은 흥미로운 이벤트를 방송하기 위해 사용될 수도 있다.

Intents

View는 스스로 스크린에 그리는 방법을 아는 하나의 오브젝트이다. 안드로이드 사용자 인터페이스는 View의 계층구조로 구성된다. 만약 여러분이 어떤 자체제작한 그래픽한 기술(게임을 제작하거나, 또는 어떤 특별한 새로운 사용자 인터페이스 위젯을 만들 때)을 수행하길 원한다면, 여러분은 View를 생성할 수 있다.

Views

Activity는 기본적으로 생명주기를 가지는 오브젝트이다. Activity는 어떤 작업을 하는 코드의 묶음이다. 만약 필요하다면, 그것은 사용자에게 UI를 보여주는 것을 포함할 수 있다. 그것은 그럼에도 그것을 가지고 있지 않다 - 어떤 Activity는 결로 UI를 보여주지 않는다. 전통적으로 여러분은 여러분의

애플리케이에 대한 시작점으로써 애플리케이션의 Activity들중 하나를 가르킬 것이다.Activitys

AndroidManifest.xml file은 여러분이 생성했던 모든 최상위 레벨 컴포넌트(특별히, 아래에 언급된 activity,service, intent receiver, 그리고 content provider)를가지고 시스템이 무엇을 하는가를 말하는 제어파일이다. 예를들어, 이것은 여러분의 activity들이 어떤 intent를 받는가를 실질적으로

명세하는 glue이다.AndroidManifest.xml

Page 20: Open Mobile Platform 과 Google Android, 그리고 Market Issue

20

2008.3.27.Kandroid

for Inticube

www.kandroid.org

empty 프로세스는 어떤 활성화 된 애플리케이션 컴포넌트도 점유하지 않는 프로세스이다.이러한 프로세스를 유지하고 있는 유일한 이유는 다음번에 해당 애플리케이션을 실행할 필요가

있을 때 시동(startup) 시간을 개선하기 위한 캐쉬로써 사용하기 위함이다. 그런 이유로, 시스템은

이러한 캐쉬화된 empty 프로세스들과 기반에 있는 커널 캐쉬들 사이에서 전반적인 시스템

균형을 유지하기 위해 이러한 프로세스들을 가끔 종료하게 된다.

emptyprocess

background 프로세스는 사용자에게는 현재 보여지지 않는 Activity를 점유하는 프로세스이다.이러한 프로세스는 사용자에게 어떤 것도 직접적으로 영향을 미치지 않는다. activity 생명주기를

정확하게 구현하기 위해서 마련된 것이며, 시스템은 위의 3가지 프로세스 타입 중 한 가지를 위한

메모리 반환 요청이 있을 시에만 그러한 프로세스를 종료시킬 것이다. 일반적으로 많은 수의

이런 프로세스가 실행되고 있으며, 해당 프로세스들은 메모리 결핍 시 사용자에게 가장 최근에

보여진 것이 가장 마지막에 종료되는 절차를 확립하기 위해 LRU 리스트 상에서 유지된다.

backgroundprocess

service 프로세스는 startService() 메쏘드를 가지고 시작된 Service를 점유하고 있는 프로세스

이다. 이러한 프로세스는 사용자에게 직접적으로 보여지는 않지만, 이것은 일반적으로 사용자와

관련된 어떤 일을 일반적으로 수행하며, 시스템이 모든 foreground와 visible 프로세스를 보유하기에

충분한 메모리가 존재하는 한, 시스템은 그러한 프로세스들은 항상 실행상태로 유지할 것이다.

serviceprocess

visible 프로세스는 사용자의 화면상에는 나타나지만 foreground 상태는 아닌 Activity를 점유하는

프로세스이다. 예를 들어 foreground activity 다이얼로그 형태로 그 뒤에 이전에 보여졌던 activity를

허용하면서 표시될 때 이러한 것은 발생하게 된다. 그러한 프로세스는 극도록 중요하게 고려되며

더이상 그것을 수행하지 않을 때까지 종료되지 않으며, 모든 foreground 프로세스들을 실행 상태로

유지하는 것이 요구된다.

visibleprocess

foreground 프로세스는 사용자와 상호작용을 하고 있는 스크린의 최상위에 있는 Activity나 현재

수행되고 있는 IntentReceiver를 점유하고 있는 프로세스이다. 시스템에는 매우 작은 수의 그러한

프로세스들이 존재할 뿐이며, 이런 프로세스가 계속 실행 되기조차 어려운 최후의 메모리 부족

상태에서만 종료된다. 일반적으로 디바이스가 메모리 페이징 상태에 도달하는 시점에, 사용자

인터페이스에 대한 응답을 처리하기 위해서 그러한 행위가 요구된다.

foregroundprocess

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android App. Framework : Application Life Cycle

Page 21: Open Mobile Platform 과 Google Android, 그리고 Market Issue

21

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android App. Framework : Activity State Diagram

Page 22: Open Mobile Platform 과 Google Android, 그리고 Market Issue

22

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Reusing & Replacing Component 개념.

- Client component makes a request for a specific action- System picks best component for that action- Components can be replaced any time- New components can use existing functionality

핵심 이슈

- 이미 존재하는 Component에 대한 Tweaking(변경 또는 조정)의 범위는

어디까지 가능한가? 즉, 안드로이드 애플리케이션들에 대한 Localization함에 있어서 가장 손쉬운 방법은?

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android App. Framework : Related FAQ and Issues

Android Application Framework

Do all the Activities and Services of an application run in a single process? Do all Activities run in the main thread of an application process? How do I pass complicated data structures from one Activity/Service to another? How can I check if an Activity is already running before starting it? If an Activity starts a remote service,is there any way for the Service to pass a message back to the Activity? How to avoid getting the Application not responding dialog? How does an application know if a package is added or removed?

Page 23: Open Mobile Platform 과 Google Android, 그리고 Market Issue

23

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Anatomy of an Android Application

There are four building blocks to an Android application:

Activity Intent Receiver Service Content Provider

Not every application needs to have all four, but your application will be written with some combination of these. Once you have decided what components you need for your application, you should list them in a file called AndroidManifest.xml. This is an XML file where you declare the components of your application and what their capabilities and requirements are. See the Android manifest file documentation for complete details.

Android Application : Anatomy

Page 24: Open Mobile Platform 과 Google Android, 그리고 Market Issue

24

2008.3.27.Kandroid

for Inticube

www.kandroid.org

<?xml version="1.0" encoding="utf-8"?><!-- Demonstrates using a relative layout to create a form --><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android

android:layout_width="fill_parent" android:layout_height="wrap_content"android:background="@drawable/blue"android:padding="10px">

<TextView id="@+id/label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Type here:"/>

<EditText id="@+id/entry" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable

/editbox_background"android:layout_below="@id/label"/>

<Button id="@+id/ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/entry"android:layout_alignParentRight="true"android:layout_marginLeft="10px"android:text="OK" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_toLeft="@id/ok"android:layout_alignTop="@id/ok"android:text="Cancel" />

</RelativeLayout>

protected void onCreate(BundlesavedValues){

// Be sure to call the super class.super.onCreate(savedValues);// Load the compiled layout resource

into the window's// default ViewGroup.// The source file is

res/layout/hello_activity.xmlsetContentView(R.layout.hello_activity)

;

// Retrieve any important stored values.restoreValues(savedValues);

}

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android Application : Sample

Page 25: Open Mobile Platform 과 Google Android, 그리고 Market Issue

25

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Java(classes)

Resource

Manifest

Dalvik(.dex)

customizedWbXML(?)

AndroidApp.(.apk)

Zip 압축File

DalvikVM

Dynamic Library

JNI

JNI 사용을 위한 절차

- JNI Call Java Class 생성- Class 내에서 System.loadLibrary 정의- Build Class- Generate Dynamic Library Header File with javah

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android Application : Dev. Process

Page 26: Open Mobile Platform 과 Google Android, 그리고 Market Issue

26

2008.3.27.Kandroid

for Inticube

www.kandroid.org

이 영역은, 돈이 없어서 컴퓨터의 혜택을 누리지 못한 저개발국가의 아이들을 위해 100달러 미만의 컴퓨터를 만들고 있는 시도와 비슷한 듯하다. 하루 2달러 미만으로 살고 있는 30억 인구를 위한 글로벌 경제 개발 서비스를 위한 애플리케이션 !.

Applications in service of global economic development for the 3 billion people living on less than $2.00 per day

이 영역은, 인도주의적 이익을 추구하는 것들로 질병, 기후변화, 자연재해등에 대한 관측 및 대응에 대한 부분들이다.

Humanitarian benefits (monitoring and response for diseases, climate change, natural disasters, etc)

아마도 이 부분의 가장 대표적인 사례는 구글 마이맵일 듯 하다.구글 마이맵은 구글맵에 다양한 가젯을 추가한 서비스이다.

Use of mash-up functionality

모바일 인터페이스에 대해서는, 이미 애플이 iPhone 핑커터치 인터페이스를 통한 확대/축소, 스크롤 및 block 기반의 확대/축소 최적화 등을 선보인 것 같다. 이 부분에 대해서는 구글 Android도 많은 부분 모방을 하였으나, 보다 혁신적인 사용자 인터페이스는 매우 의미있는 영역이 될 듯하다.

Rethinking of traditional user interfaces

이 영역은 최근 모바일 대기화면이나 모바일 위젯에서 많은 사례들이 나오고 있는 듯하다.

News and information (weather, traffic, sports, stocks, etc.)

이 영역은, 모바일 게임에 해당할 것이다.Gaming

전자메일,일정관리,메신저 등을 모바일과 연동함으로써, 생산성이나 협력을 증대시키는 애플리케이션에 대한 것으로, 이러한 영역들 역시 우리주변에서 많이 볼 수 있는 듯 하다.

Productivity and collaboration such as email, IM, calendar, etc.

동영상이나 사진 등과 같은 매체에 대한 활용, 관리, 편집, 공유 등에 대한것으로 이와 비슷한 모바일 애플리케이션은 많이 볼 수 있는 듯 하다.

Media consumption, management, editing, or sharing, e.g., photos

사회적 네트워킹 영역은, 쉽게 생각하면 모바일 사이월드 같은 것이라고생각해도 될 듯하다. 어떤 이들은 구글 Android의 목표가 모바일 폰이 아니라 모바일 인프라와 결합된 글로벌 facebook 사이트라는 의견을 제시하는 사람들도 있다.

Social networking

비 고 (필자의견)주 제 영 역

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android Services : ADC Early Look

Page 27: Open Mobile Platform 과 Google Android, 그리고 Market Issue

27

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

안드로이드 개발자 챌린지 출품작 심사기준

1. Originality of Concept

- Does the application introduce a great new idea; for example, a new angle on social applications?

2. Effective Use of the Android Platform

- Does the application take advantage of Android’s unique and compelling features, such as built-in location-based services, accelerometer, and always-on networking?

3. Polish and Appeal

- Is the application easy to use and aesthetically appealing?

4. Indispensability

- Is the application compelling and essential, such as a game the user just can’t put down or a utility she can’t live without?

Android Services : ADC Recent Look

Page 28: Open Mobile Platform 과 Google Android, 그리고 Market Issue

28

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

etc.etc.

Networking

Messaging & ChatP2PTelnet ClientLog-in Indicator

Networking

Messaging & ChatP2PTelnet ClientLog-in Indicator

Games

다양한게임ApplicationS-Tris2 (Native App. 지원)GPS 기반네트워크게임유무선연동게임

Games

다양한게임ApplicationS-Tris2 (Native App. 지원)GPS 기반네트워크게임유무선연동게임

Map / Location

위치찾기

길안내및공유

건물및관광정보

지역기반블로그

Map / Location

위치찾기

길안내및공유

건물및관광정보

지역기반블로그

Multimedia

Photo AlbumMusic Player (ID3 tags 지원)Video Player (Streaming 지원)3D Application

Multimedia

Photo AlbumMusic Player (ID3 tags 지원)Video Player (Streaming 지원)3D Application

Productivity

Notepad / Tip 계산/ 계산기SAP 연동 / 고객관리Phone to Server SyncOutlook sync

Productivity

Notepad / Tip 계산/ 계산기SAP 연동 / 고객관리Phone to Server SyncOutlook sync

Utility

다양한Linux Console Util.Script Languageebook readerRSS reader

주소록(Contact) SyncPassword saverDVB-H Simulator 4 OlympicsApp. 4 The Muslim

Utility

다양한Linux Console Util.Script Languageebook readerRSS reader

주소록(Contact) SyncPassword saverDVB-H Simulator 4 OlympicsApp. 4 The Muslim

Web

TwitterServer-Side App & Thin ClientAuction ManagementFlickr clinet

Web

TwitterServer-Side App & Thin ClientAuction ManagementFlickr clinet

Developer Tool

UI 디자인도구 - DroidDrawBarcode 생성및readerVNC / 원격제어SWEmbeded DB 4 android

Developer Tool

UI 디자인도구 - DroidDrawBarcode 생성및readerVNC / 원격제어SWEmbeded DB 4 android

Android Services : ADC App. Classification

Page 29: Open Mobile Platform 과 Google Android, 그리고 Market Issue

29

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

DroidDrawDroidDraw HeclHecl Open IntentsOpen Intents MoseycodeMoseycode

My LocationMy Location AndroidSAPAndroidSAP WikiNotes & GTalk, etc.WikiNotes & GTalk, etc.

Android Services : ADC Hot Applications

Page 30: Open Mobile Platform 과 Google Android, 그리고 Market Issue

30

2008.3.27.Kandroid

for Inticube

www.kandroid.org

실시간으로 안드로이드 폰 화면에서 일어나는 모든 것을 그대로 반영하는 에뮬레이터.

“나는 이미 안드로이드 SDK가 에뮬레이터를 가지고 있다는 것을 알고 있다. 내가 이야기 하고자 하는 것을 그것이 아니

다. 나는 안드로이드 폰 화면에서 어떤 일이 발생할 때, 그것을 정확하게 똑같이 컴퓨터 화면에 보여주는 에뮬레이터를

이야기하는 것이다. 이것은 마치 블루투스나 WiFi를 통해 안드로이드 폰이 컴퓨터 화면에 투영되는 것과 같다. 그러나, 이것은 단지 화면 이미지에 대한 투여은 아니다. 그것은 당신의 폰에서 할 수 있는 모든 것을 가능하게 하는 완벽한 기능

을 가진 에뮬레이터여야 한다.

다소 웃긴 시나리오 두 가지를 이야기 해 보고자 한다.

당신이 집안의 어떤 방에 안자 있다고 가정하자, 그리고 안드로이드 다른 방 옷장속 바지속 어딘가에 있다. 그 때 전화가

온다면, 당신은 컴퓨터 화면상의 에뮬레이터를 통해 전화를 받고 이야기를 나눌 수 있다. 당신은 전화를 걸 수도 있고, 문자메시지를 보내고 받을 수 있으며, 당신의 폰에서 실행되는 폰 게임을 한다거나 재밌는 어떤 애플리케이션을 사용할 수

있다.

다른 시나리오는, 당신의 폰이 도둑맞았다고 가정하자. 당신은 컴퓨터상의 에뮬레이터를 가지고 도둑이 그 폰으로 무엇

을 하는지를 정확히 볼 수 있으며, 그의 통화내용을 들을 수 있으며, 폰의 카메라를 제어해서 도둑이나 그의 주변을 찍을

수 있다.

의심할 필요없이, 그런 에뮬레이터를 사용할 수 있다면, 많은 다른 흥미로운 시나리오나 애플리케이션들이 존재할 것이

다.” - http://gphonesystem.blogspot.com/2007/12/android-developer-challenge-real-time.html

휴대폰 도둑 컴퓨터상의 안드로이드

Android Run-Time

Application Framework

Applications

Libraries

Linux Kernel

Services

Emulator or Hardware

Network (Wireless,Wired)

Android Services : ADC Hot Idea

Page 31: Open Mobile Platform 과 Google Android, 그리고 Market Issue

31

2008.3.27.Kandroid

for Inticube

www.kandroid.org

i18n Issue Cellular Network Performance Issue

Application QA & Packing Issue App. Release/Install/Helpdesk Issue

HTTP Cellular Network Performance 이슈

- 현재 애플 iPhone을 WiFi가 아닌 Edge망에서 사용한다고

하더라도 WebKit Performance 문제가 있음.- Android 역시 동일한 Apple의 WebKit을 기반으로 하고

있기 때문에 WebKit Performance Issue는 존재할 것으로 보임.

주요 솔루션들

- Server-Side Optimization / Client-Server 구조

Quality Assurance 이슈

기존의 MNO 기반에서 App.가 단말에 탑재되기 전에 해당

사업자에 의해 App.에 대한 QA가 실시되고 있음.오픈 플랫폼 기반의 App.에 대한 QA는 소비자의 책임인가?아니면 App. 배포자의 책임인가?

더불어, 다양한 무수히 존재하는 다양한 App.들을 App. Suites으로 만들어서 배포하는 집단들이 나올 수 있을 것으로 보임.

구글 안드로이드의 주요한 이슈 중 Helpdesk Issue가 존재함.

오픈 플랫폼의 특성상 탑재될 App. 역시 다양한 경로를 가짐.이런 다양한 경로를 통해 탑재된 App.들과 관련되어 Phone에

문제가 발생하였을 시, 이를 위한 Helpdesk 운영에 대한 Issue가

존재함.

과연, 누가 이러한 Helpdesk를 운영할 것인가?오픈 플랫폼이기 때문에, 소비자에게 모든것을 맡겨야 하는가?등등의 이슈가 존재함.

- 현재 안드로이드 WebKit은utf-8, iso-8859-1, utf-16

만을 지원하고 있음.

- 더불어 unicode encoding

을 지원하기 위해 탑재된

ICU 역시 최소로 Build 되어

있음.

- 더불어 입력기와 관련된

다양한 지역특허들을 해결

해야 하는 이슈가 있음.

Android & Issues

Page 32: Open Mobile Platform 과 Google Android, 그리고 Market Issue

32

2008.3.27.Kandroid

for Inticube

www.kandroid.org

www.kandroid.org

Microsoft, Apple, Google, and Ours

Page 33: Open Mobile Platform 과 Google Android, 그리고 Market Issue

33

2008.3.27.Kandroid

for Inticube

www.kandroid.org

Samsung and LG

Motorola

Verizon Wireless

Google

In the Balance

Client application framework pure plays,

potentially on-device-portal (ODP) pure plays

ODP : client-side environments that permit rendering, manipulation of, and interactionwith web-based content without the needfor a persistent data connection

Losers

Alliance Operators

Google vs. Microsoft,Nokia,Symbian

HTC

Traditional ODM model

+ high-end product innovation

(Original Design Manufacturing)

Winners

Market Research & Impact

This nice and healthy competitionis just what the mobile industryneeds at the moment, at least forthe consumers. The wars beingwaged between Google and thefield will only create better, cheaperhandsets and more advancedapplications.

Manufacturers’war

Google has a better start in thisrace than any company had before to bring new rules to themobile market with all carriers,mobile devices and its customers.

Speculations with cellular carriers

- Better Connectivity to Other Devices

- Store and Look at Photos- Access the Internet More Easily- Listen to Music

(or Other Audio Content)- Play Games- Watch TV or Internet Videos

A prospective customer

Page 34: Open Mobile Platform 과 Google Android, 그리고 Market Issue

www.kandroid.org