Upload
peterbuck
View
3.521
Download
3
Embed Size (px)
DESCRIPTION
Citation preview
Open Mobile Platform과 Google Android, 그리고 Market Issue
www.kandroid.org
일시 : 2008년 3월 27일, 목요일 / 15:00 ~ 16:30
장소 : 인티규브
발표자 : www.kandroid.org 운영자, 들풀
2
2008.3.27.Kandroid
for Inticube
www.kandroid.org
part 1 Google Android – Google의 과거, 현재, 그리고 미래
Don’t be evil !
Open Access !Open Mobile Platform !
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 주파수경매진행사항및의의
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.
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
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
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 가상 머신
컴포넌트의 재사용 및 대체를 가능하게 함. 애플리케이션 프레임워크
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 현황
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
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
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
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
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
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
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
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
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
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
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
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
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
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?
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
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
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
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
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
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
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
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
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
32
2008.3.27.Kandroid
for Inticube
www.kandroid.org
www.kandroid.org
Microsoft, Apple, Google, and Ours
33
2008.3.27.Kandroid
for Inticube
www.kandroid.org
Samsung and LG
Motorola
Verizon Wireless
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
www.kandroid.org