Your SlideShare is downloading. ×
Open Mobile Platform 과 Google Android, 그리고 Market Issue
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

2,942
views

Published on


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,942
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
64
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Open Mobile Platform과 Google Android, 그리고 Market Issue 일시 : 2008년 3월 27일, 목요일 / 15:00 ~ 16:30 장소 : 인티규브 발표자 : www.kandroid.org 운영자, 들풀 www.kandroid.org
  • 2. 2008.3.27. part 1 Google Android – Google의 과거, 현재, 그리고 미래 Kandroid for Inticube Open Access ! Open Mobile Platform ! Don’t be evil ! www.kandroid.org 2
  • 3. 2008.3.27. part 1 Google Android – Open Access & 700MHz 주파수 경매 Kandroid for Inticube The “FOUR OPENS” of Successful Open Access - The letter of GOOGLE to FCC, July 18, 2007 Third parties (like internet Consumers should be 700MHz 주파수 경매 진행사항 및 의의 service providers) should able to utilize a handheld be able to interconnect at communications device any technically feasible point in with whatever wireless a 700 MHz licensee's network they prefer 700MHz 대역 주파수 중 상업용 상위 C블럭 22MHz wireless network 2007.12.3 FCC 경매 참여 마감 (총 214개업체) Open Open 2008.1.24 Auction 73 시작 Networks Devices Platform that is more open to devices and applications. ☞ 주파수 자체의 매매/임대는 불가능. Verizon Wireless 가 유력 (금주 중 경매 마감 예정) 이통망개방 컨퍼런스 (3/19~20) – ‘Network only’ 가입자와 중간서비스업체, 단말기업체들로부터 네트워크 사용료를 받는 형태의 비즈니스 모델로 전환 할 계획 Open Open 구글의 경매 성패에 상관없이 미국에서 주파수는 분명 Services Applications 하게 개방된 것이라고 볼 수 있으며, 이 네트워크를 통 해 많은 오픈 플랫폼이 정착할 것. Third parties 그 중 서비스와 컨텐츠, 그리고 명분과 전략을 갖고 있 (resellers) should be able to Consumers should be able 는 구글이 MS나 야후, Apple 보다 유리한 고지를 점할 acquire wireless services from a to download and utilize 것은 분명. 700 MHz licensee on a wholesale any software applications, basis, based on reasonably content, or services they 이 경매는 분명 세계적 영향력을 파생하여 새로운 모바 nondiscriminatory commercial desire 일 생태시스템을 구축하는데 기여했다는 점에 의의. terms www.kandroid.org 3
  • 4. 2008.3.27. Kandroid for Inticube 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. www.kandroid.org 4
  • 5. 2008.3.27. Kandroid for Inticube Android and Android SDK Android Android Android SDK Android SDK Android Developer Tools Plugin Android Developer Tools Plugin for the Eclipse IDE for the Eclipse IDE ddms (Dalvik Debug Monitor Service) adb (Android Debug Bridge) aapt (Android Asset Packing Tool) aidl (Android Interface Description Language) mksdcard dx Traceview, sqlite3, activityCreator Android Emulator Android Emulator Hardware (QEMU, goldfish) (QEMU, goldfish) www.kandroid.org 5
  • 6. 2008.3.27. Kandroid for Inticube Android 관련 주요 일정 2005.8 Google, Android Inc. 를 매입함. 2005.11 Google, Skia 를 사들임. 2007.10 Google, Jaiku Inc. 를 매입함. 2007.11 OHA, 모바일 디바이스에 대한 오픈 스탠다드 개발 착수 2007.11 Ascender Corp, OHA를 위한 Droid Font Collection 공급 Google, Android SDK 릴리즈 2007.11.12. Google, Android ADC 발표. (총 1,000만 달러 상금규모) 2007.12.3. Google, 700MHz 주파수 경매 참여 2008.1.24. 美FCC, 700MHz 주파수 경매 시작 2008.1.28. Google, Android ADC 일정 연기 발표 2008.2.13. Google, Android SDK m5-rc14 릴리즈 The Mobile World Congress 2008 Barcelona 2008.2.11~14. Texas Instruments, Google Android 프로토타입 시연 2008.2~3Q. Real Android Phone 출시 예상 www.kandroid.org 6
  • 7. 2008.3.27. Kandroid for Inticube Android의 주요 특징 애플리케이션 프레임워크 컴포넌트의 재사용 및 대체를 가능하게 함. Dalvik 가상 머신 모바일 디바이스를 위해 최적화 됨. 통합 브라우저 오픈 소스 WebKit 엔진 기반임. 구글이 만든 2D 그래픽 라이브러리에 의해 강화됨; 최적화된 그래픽 OpenGL ES 1.0 스펙에 기반한 3D 그래픽 (하드웨어 가속은 선택사항임) SQLite 정형화된 데이타 저장공간을 위한 것. 일반적인 오디오, 비디오, 그리고 정지 이미지 포맷들을 지원 (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) 오디오 파일 포맷 지원 추가됨. GSM 테크놀로지 (하드웨어 의존적임) 블루투스, EDGE, 3G, 그리고 WiFi (하드웨어 의존적임) (하드웨어 의존적임) 카메라, GPS, 나침판, 가속도계 Geographical and Location Based – Geocoding 추가됨 디바이스 에뮬레이터, 디버깅 도구, 메모리 및 성능 프로파일링, 풍부한 개발 환경 그리고 Eclipse IDE를 위한 플러그인을 포함함. www.kandroid.org 7
  • 8. 2008.3.27. Kandroid for Inticube Android ADC 관련 주요 일정 및 SDK Update 현황 변경일정 초기일정 내용 비고 안드로이드 SDK m5-rc14 주요 Upgrade 항목 2008.1.2. 1차 예선 공모 접수 시작 1. AndroidManifest.xml 2008.4.14. 2008.3.2. 1차 예선 공모 접수 마감 2. Layout Files 2008.5.5. 2008.3월 말 본선 출품 당선작 발표 상금 : 50개 3. Adapters - (총 50개 당선작 발표) (각 $25,000) 4. Widgets and Views 5. Menus 2008.6.30. 2008.5.1. 1차 본선 접수 마감 자격 : 본선 출품작 50개에 한함 6. Animations 7. Alerts 2008.7.21. 2008.5월 말 최우수 당선작 및 최종 상금 : 8. SQLite and ContentProvider 당선작 발표 10개 (각 $275,000) - (총 20개 당선작 발표) 10개 (각 $100,000) 9. Geographical and Location Based 10. Notification Manager 11. Browser 12. GTalk (formerly XMPP) ※ 아래는 구글이 안드로이드 개발자 챌린지를 연기한 이유를 언급한 부분임. 13. OpenGL 우리는 여러분이 우리의 첫번째 안드로이드 개발자 챌리지에 대한 제출 마감일을 14. Media 2008년 4월 14일까지로 연기하는 것을 알기를 원합니다. 여러분이 우리에게 15. Search Manager 주었던 엄청난 피드백에 기반해서 우리는 몇주내로 배포될 SDK에 의미있는 업데이트를 만들었습니다. 이러한 새로운 UI와 API 확장에 대한 장점을 만들 수 있는 추가적인 시간을 여러분에게 주기 위해서 우리는 제출 마감일을 연기하기로 안드로이드 SDK m5-rc15 주요 Upgrade 항목 결정했습니다. 추가적으로 꽤 많은 수의 개발자들이 자신들의 애플리케이션들을 만들고 다듬을더 많은 시간을 요구했었습니다. 1. Bitmap Image Minor Bug Patch www.kandroid.org 8
  • 9. 2008.3.27. Kandroid for Inticube Android Architecture Detail The Design goal of Android – Openness Be as flexible as possible How 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 SQLite Content Provider FileSystem Dev Language? App : Java Framework : Java Libraries : C/C++ OS & Driver :C Creating Native C Applications Possible, but not supported www.kandroid.org 9
  • 10. 2008.3.27. Kandroid for Inticube Networking : Wireless, Wired Cellular Wibro WiFi BlueTooth USB Services Applications Application Framework always-on networking Android Run-Time Libraries - 생각해 볼 만한 문제 주파수 혁명은 이제 시작이다. (white spaces) Linux Kernel Emulator or Hardware Network (Wireless,Wired) Real Phone App. www.kandroid.org 10
  • 11. 2008.3.27. Kandroid for Inticube Android Emulator : QEUM, Goldfish 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 Services with Goldfish platform support on your (x86) Windows, MacOS X or Linux host. This virtual ARM SoC comprises: Applications ARM926T CPU Thumb support Application Framework MMC RTC Keyboard Android Run-Time USB Gadget Framebuffer TTY driver Libraries NAND Software compiled for ARMv5TEJ instruction set (!) with EABI no TLS yet Linux Kernel QEMU Emulator or Hardware ARM CPU goldfish Simulator Hardware Simulator Network (Wireless,Wired) www.kandroid.org 11
  • 12. 2008.3.27. Kandroid for Inticube Android Hardware : Requirements 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 Services Soc/HW has and Linux kernel supports Display/frame buffer (touchscreen would be good but optional). Frame buffer has to support Applications double buffer/page flipping. Keyboard USB (optional) Application Framework RTC (optional?) Serial console Some storage, sufficient for ~64MB, e.g. NFS or USB stick or NAND or NOR or MMC/SDcard etc. NFS would be easiest for development Android Run-Time 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. Libraries Known to work HW OMAP1 based boards (ARM926) Linux Kernel OMAP2 based boards (ARM11) Sharp Zaurus SL-C760 Sharp Zaurus SL-C3000 Emulator or Hardware Armadillo-500 (Freescale i.MX31L ARM11) OMAP1 based OSK (OMAP5912 ARM926 with only 32MB SDRAM). Really slow, mainly usable as proof of concept. Network (Wireless,Wired) Known to not work HW Neo 1973 (ARM920T) www.kandroid.org 12
  • 13. 2008.3.27. Kandroid for Inticube Android Kernel : Linux-2.6.23 linux-2.6.23 Ordinary kernel at a glance • No peculiar change found • Added source code dependent on goldfish hardware • Presuming ARM 926 as CPU Services CONFIG_CPU_32=y CONFIG_CPU_ARM926T=y Applications CONFIG_CPU_32v5=y CONFIG_CPU_ABRT_EV5TJ=y CONFIG_CPU_CACHE_VIVT=y Application Framework CONFIG_CPU_COPY_V4WB=y CONFIG_CPU_TLB_V4WBI=y CONFIG_CPU_CP15=y Android Run-Time CONFIG_CPU_CP15_MMU=y Linux 2.6 on ARM v5 or later seems sufficient environment to run Android Libraries They only use kernel!! Linux Kernel No linux-like (unix-like) initialization seen • No initialization with scripts such as init.rc Emulator or Hardware • Almost just after small initialization with /init, transferred to application environment • No loadable module in current version Root file system is charasteristic Network (Wireless,Wired) For libc, BSD libc is used instead of glibc or uClibc often used www.kandroid.org 13
  • 14. 2008.3.27. Kandroid for Inticube Android Kernel : Linux-2.6.23 1. Target Device Limitation 관련. Architecture 주요 특징 Processors Android 지원 여부 v1,v2,v3 초기버전 현재는 단종 Ⅹ v4 System mode 지원 Strong ARM Ⅹ Services v4T v4 + Thumb 기능 지원 ARM7,ARM9 계열 Ⅹ v5TE v4T 기능개선 ARM9, xSCALE 계열 ○ Applications v5TEJ v5TE + Java 코드 실행 ARM7, ARM9 계열 ○ v6 Unaligned Access 지원 ARM11 계열 ○ Application Framework Media 처리용 명령어 추가 2. S/W Requirement Android Run-Time - Linux Kernel Source - Android Platform Image - Cross Compilation Tools Libraries - Util : http://www.busybox.net/downloads/ Linux Kernel 3. Build Kernel Image - Kernel Build Configuration - Make Kernel Image Emulator or Hardware 4. Install Kernel Image and File System Network (Wireless,Wired) 5. Boot Configuration... 6. Startup www.kandroid.org 14
  • 15. 2008.3.27. Kandroid for Inticube Android Libraries 안드로이드는 안드로이드 시스템의 다양한 컴포넌트에 의해 사용되는 C/C++ 라이브러리 집합을 포함 하고 있다. 이러한 라이브러리의 기능들은 안드로이드 애플리케이션 프레임웍크을 통해서 개발자들에게 제공된다. 아래에 나열될 것은 핵심 라이브러리들 중 일부분이다. 시스템 C 라이브러리 임베디드 리눅스 기반의 디바이스를 위해서 튜닝된 표준 C 시스템 라이브러리의 BSD?기반 파생?구현물 (libc)? Services 미디어 라이브러리 PacketVideo의 OpenCORE기반임. MPEG4, H.264, MP3, AAC, AMR, JPG, PNG를 포함하는 정적 이미지 파일뿐 아니라, 널리 대중화된 오디오나 비디오 포맷들의 재생 및 녹화를 지원함. Applications Surface 관리자 디스플레이 서브시스템에 대한 접근을 관리하며, 다수의?애플리케이션들과 분리된 Application Framework 통합된 2D 와 3D 그래픽 계층을 제공함. LibWebCore Android Run-Time 안드로이드 브라우저와 임베딩 가능한 웹 뷰를 제공하는 최신 웹 브라우저 SGL Libraries 기반이 되는 2D 그래픽 엔진 3D 라이브러리 Linux Kernel OpenGL ES 1.0 API들에 기반한 구현.?하드웨어 3D 가속기가 있다면 그것을 사용하거나 또는 설치된 고도로 최적화된 3D 소프트웨어 래스터라이저를 사용함. Emulator or Hardware FreeType 비트맵 또는 벡터 폰트 랜더링 Network (Wireless,Wired) SQLite 모든 애플리케이션에서 사용 가능한 강력하며 경량화된 관계형 데이타베이스 엔진 www.kandroid.org 15
  • 16. 2008.3.27. Kandroid for Inticube Android Libraries : Dev. Tip & Issue Dynamic object Build and Install 절차 1. armelf_linux_eabi.xsc 수정 2. object 생성 (tool: arm-none-linux-gnueabi-gcc) Services 3. dynamic object 생성 (tool: arm-none-linux-gnueabi-ld) 4. 설치 (tool: adb) Applications Library 분류 주요 이슈 비고 Application Framework RIL Porting Issue ICU i18n Issue (아직 어떠한 대안도 언급된 적이 없음. Why?) Android Run-Time FreeType Performance & License Issue Freetype SGL Bug Issue (가장 최근 SDK 업데이트도 이 부분의 Bug임) Skia Libraries WebKit Callback Function Issue KDE & Apple Surface Manager 2D/3D 단일 Interface 제공이 목적임. Linux Kernel OpenGL|ES Hardware 의존성이 많은 영역. Media Framework 최근 Add-On 이 가장 많이 된 영역. packetvideo Emulator or Hardware SQLite 최근 다양한 데이타베이스들이 나오고 있음. SSL SSL을 포함한 다양한 Security 문제들이 최근 언급되고 있음. Network (Wireless,Wired) libc Kernel, Dalvik등과 관련성이 많은 영역 www.kandroid.org 16
  • 17. 2008.3.27. Kandroid for Inticube Android Run-Time 안드로이드는 Java 프로그래밍 언어의 핵심 라이브러리에서 사용가능한 대부분의 기능들을 포함하는 핵심 라이브러리들을 포함한다. 모든 안드로이드 애플리케이션은 Dalvik 가상 머신내의 자신의 인스턴스를 가지고, 자신의 프로세스내에서 동작한다. Dalvik은 하나의 디바이스가 복수의 VM들을 효과적으로 실행하도록 만들어졌다. Dalvik VM 최소 메모리 사용하도록 최적화된 Dalvik Executable(.dex) 포맷의 파일들을 실행한다. Dalvik VM은 레지스터 기반이며, Java 언어 컴파일러에 의해 컴파일된 클래스를 "dx"라는 Services 도구에 의해 .dex 포맷으로 변환된 클래스를 실행한다. Dalvik VM은 쓰레딩과 저수준 메모리 관리와 같은 기능을 위해 리눅스 커널에 기초한다. Applications Dalvik virtual machine Application Framework 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 Android Run-Time 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 Libraries 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). Linux Kernel Core Libraries Emulator or Hardware 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, Network (Wireless,Wired) including Collections, I/O, and so forth. www.kandroid.org 17
  • 18. 2008.3.27. Kandroid for Inticube Android Run-Time : Dalvik VM Issue 1. Dalvik VM Source는 Open될 것인가? - Dalvik Source를 공개한 상태에서도 안드로이드에 대한 Google의 Initiative는 유지되는가? - Dalvik Source를 공개할 경우, 호환성 또는 어떤 더 큰 문제들에 봉착할 가능성은 없는가? - 구글은 모바일 플랫폼의 안정성과 더불어 오픈 소스 요구들을 어떻게 해결해 나갈까? Services 2. Dalvik VM이 Application의 Performance를 결정하는 요소인가? - Embedded Application에서의 Moore’s law는 유효한가? - VM 내부 구조(Stack-base or Register-base) 이슈가 App. 성능에 미치는 영향은? Applications - JIT Compilation 이슈가 App. 성능에 미치는 영향은? - 아래는 안드로이드 Application Performance 관련 Tip임. Application Framework 1. Avoid Creating Objects. Action Time 2. Use Native Methods Add a local variable 1 Android Run-Time 3. Prefer Virtual Over Interface Add a member variable 4 4. Prefer Static Over Virtual Call String.length() 5 5. Avoid Internal Call empty static native method 5 Libraries Getters/Setters Call empty static method 12 6. Cache Field Lookups Call empty virtual method 12.5 7. Declare Constants Final Call empty interface method 15 8. Use Enhanced For Loop Linux Kernel Call Iterator:next() on a HashMap 165 Syntax With Caution 9. Avoid Enums Call put() on a HashMap 600 10. Use Package Scope Inflate 1 View from XML 22,000 Emulator or Hardware with Inner Classes Inflate 1 LinearLayout containing 1 TextView 25,000 11. Avoid Float Inflate 1 LinearLayout containing 6 View objects 100,000 12. Some Sample Performance Inflate 1 LinearLayout containing 6 TextView objects 135,000 Network (Wireless,Wired) Numbers Launch an empty activity 3,000,000 www.kandroid.org 18
  • 19. 2008.3.27. Kandroid for Inticube Android App. Framework Application Building Block - AndroidManifest.xml : 생성된 컴포넌트가 수행할 것들에 대한 제어파일. - Activities : 생명주기를 가지는 오브젝트 - Views : 스크린에 그리는 것에 관여하는 오브젝트 Services - Intents : 어떤 것에 대한 의도를 표현하는 메시지 오브젝트 - Services : background도 동작하는 a body of code. Applications - Notifications : 상태바를 나타내는 작은 아이콘 - ContentProviders : 디바이스상에 존재하는 데이터에 대한 접근을 가능하게 하는 저장소. Application Framework AndroidManifest.xml file은 여러분이 생성했던 모든 최상위 레벨 컴포넌트(특별히, 아래에 언급된 activity,service, intent receiver, 그리고 content provider)를 AndroidManifest.xml 가지고 시스템이 무엇을 하는가를 말하는 제어파일이다. 예를들어, 이것은 여러분의 activity들이 어떤 intent를 받는가를 실질적으로 명세하는 glue이다. Android Run-Time Activity는 기본적으로 생명주기를 가지는 오브젝트이다. Activity는 어떤 작업을 하는 코드의 묶음이다. 만약 필요하다면, 그것은 사용자에게 UI를 보여주는 것 Activitys 을 포함할 수 있다. 그것은 그럼에도 그것을 가지고 있지 않다 - 어떤 Activity는 결로 UI를 보여주지 않는다. 전통적으로 여러분은 여러분의 애플리케이에 대한 시작점으로써 애플리케이션의 Activity들중 하나를 가르킬 것이다. View는 스스로 스크린에 그리는 방법을 아는 하나의 오브젝트이다. 안드로이드 사용자 인터페이스는 View의 계층구조로 구성된다. 만약 여러분이 어떤 자체 Libraries Views 제작한 그래픽한 기술(게임을 제작하거나, 또는 어떤 특별한 새로운 사용자 인터페이스 위젯을 만들 때)을 수행하길 원한다면, 여러분은 View를 생성할 수 있 다. Intent는 어떤 것을 할 의도를 표현하는 단순한 메시지 오브젝트이다. 예를들어, 여러분의 애플리케이션이 웹 페이지를 표시하길 원한다면, 그것은 Intent 인스 턴스를 생성하는 것에 의해 URI를 보기 위한 Intent를 표명하고, 시스템에게 그것을 넘긴다. 시스템은 그 Intent를 처리할 방법을 아는 (이 경우는 브라우저) Intents 약간의 다른 코드 조각들을 위치세우고, 그것을 실행한다. Intent는 또한 시스템 전역에 걸쳐 notification 과 같은 흥미로운 이벤트를 방송하기 위해 사용될 수 Linux Kernel 도 있다. Service는 background로 동작하는 코드의 몸체이다. 그것은 자신의 프로세스 안이나, 또는 그것의 필요에 의존하는 다른 애플리케이션의 프로세스의 컨텍스 트 안에서 실행할 수 있다. 다른 컴포넌트들은 서비스에 "bind"하고, 원격프로세스호출을 통해 그 위의 메쏘드를 invoke한다. Servide의 하나의 예가 Services 미디어 플레이어다.사용자가 미디어 선택 UI를 끝냈을 때 조차도, 그녀는 여전히 그녀의 음악이 재생 되고 있기를 여전히 원할 수 있다. Service는 UI가 끝났 을 때 조차도 음악을 계속 재생시킨다. Emulator or Hardware Notification은 상태바에 나타나는 작은 아이콘이다. 사용자는 정보를 수신하는 이 아이콘과 상호작용 할 수 있다. 가장 널리 알려진 Notification들이 SMS 메시 Notifications 지, 통화목록, 그리고 음성메일이지만, 애플리케이션들은 자기 소유의 것을 만들 수 있다. Notification은 사용자들이 주목해야 할 필요가 있는 어떤 것을 사용 자에게 알리기 위한 아주 좋은 메카니즘이다. ContentProvider는 디바이스상의 데이타에 대한 접근을 제공하는 하나의 데이타 저장소이다; 전통적인 예는 사용자의 전화번호부 목록에 접근하기 위해 사용 ContentProviders 되는 ContentProvider이다. 여러분의 애플리케이션은 ContentProvider를 통해 다른 애플리케이션들이 보여주는 데이타에 접근할 수 있으며, 여러분은 또한 Network (Wireless,Wired) 여러분 소유의 데이타를 보여주기위한 여러분 소유의 ContentProvider들을 정의할 수 있다. www.kandroid.org 19
  • 20. 2008.3.27. Kandroid for Inticube Android App. Framework : Application Life Cycle foreground 프로세스는 사용자와 상호작용을 하고 있는 스크린의 최상위에 있는 Activity나 현재 수행되고 있는 IntentReceiver를 점유하고 있는 프로세스이다. 시스템에는 매우 작은 수의 그러한 foreground 프로세스들이 존재할 뿐이며, 이런 프로세스가 계속 실행 되기조차 어려운 최후의 메모리 부족 process 상태에서만 종료된다. 일반적으로 디바이스가 메모리 페이징 상태에 도달하는 시점에, 사용자 인터페이스에 대한 응답을 처리하기 위해서 그러한 행위가 요구된다. Services visible 프로세스는 사용자의 화면상에는 나타나지만 foreground 상태는 아닌 Activity를 점유하는 프로세스이다. 예를 들어 foreground activity 다이얼로그 형태로 그 뒤에 이전에 보여졌던 activity를 Applications visible 허용하면서 표시될 때 이러한 것은 발생하게 된다. 그러한 프로세스는 극도록 중요하게 고려되며 process 더이상 그것을 수행하지 않을 때까지 종료되지 않으며, 모든 foreground 프로세스들을 실행 상태로 유지하는 것이 요구된다. Application Framework service 프로세스는 startService() 메쏘드를 가지고 시작된 Service를 점유하고 있는 프로세스 service 이다. 이러한 프로세스는 사용자에게 직접적으로 보여지는 않지만, 이것은 일반적으로 사용자와 Android Run-Time process 관련된 어떤 일을 일반적으로 수행하며, 시스템이 모든 foreground와 visible 프로세스를 보유하기에 충분한 메모리가 존재하는 한, 시스템은 그러한 프로세스들은 항상 실행상태로 유지할 것이다. background 프로세스는 사용자에게는 현재 보여지지 않는 Activity를 점유하는 프로세스이다. Libraries 이러한 프로세스는 사용자에게 어떤 것도 직접적으로 영향을 미치지 않는다. activity 생명주기를 background 정확하게 구현하기 위해서 마련된 것이며, 시스템은 위의 3가지 프로세스 타입 중 한 가지를 위한 process 메모리 반환 요청이 있을 시에만 그러한 프로세스를 종료시킬 것이다. 일반적으로 많은 수의 Linux Kernel 이런 프로세스가 실행되고 있으며, 해당 프로세스들은 메모리 결핍 시 사용자에게 가장 최근에 보여진 것이 가장 마지막에 종료되는 절차를 확립하기 위해 LRU 리스트 상에서 유지된다. empty 프로세스는 어떤 활성화 된 애플리케이션 컴포넌트도 점유하지 않는 프로세스이다. Emulator or Hardware 이러한 프로세스를 유지하고 있는 유일한 이유는 다음번에 해당 애플리케이션을 실행할 필요가 empty 있을 때 시동(startup) 시간을 개선하기 위한 캐쉬로써 사용하기 위함이다. 그런 이유로, 시스템은 process 이러한 캐쉬화된 empty 프로세스들과 기반에 있는 커널 캐쉬들 사이에서 전반적인 시스템 Network (Wireless,Wired) 균형을 유지하기 위해 이러한 프로세스들을 가끔 종료하게 된다. www.kandroid.org 20
  • 21. 2008.3.27. Kandroid for Inticube Android App. Framework : Activity State Diagram Services Applications Application Framework Android Run-Time Libraries Linux Kernel Emulator or Hardware Network (Wireless,Wired) www.kandroid.org 21
  • 22. 2008.3.27. Kandroid for Inticube 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? Services 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, Applications 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? Application Framework Android Run-Time Reusing & Replacing Component 개념. - Client component makes a request for a specific action Libraries - System picks best component for that action - Components can be replaced any time - New components can use existing functionality Linux Kernel 핵심 이슈 Emulator or Hardware - 이미 존재하는 Component에 대한 Tweaking(변경 또는 조정)의 범위는 어디까지 가능한가? Network (Wireless,Wired) 즉, 안드로이드 애플리케이션들에 대한 Localization함에 있어서 가장 손쉬운 방법은? www.kandroid.org 22
  • 23. 2008.3.27. Kandroid for Inticube Android Application : Anatomy Anatomy of an Android Application There are four building blocks to an Android application: Services Activity Intent Receiver Service Applications Content Provider Not every application needs to have all four, but your application will be written with some combination Application Framework of these. Once you have decided what components you need for your application, you should list them in a file called AndroidManifest.xml. Android Run-Time 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. Libraries Linux Kernel Emulator or Hardware Network (Wireless,Wired) www.kandroid.org 23
  • 24. 2008.3.27. Kandroid for Inticube Android Application : Sample protected void onCreate(Bundle <?xml version="1.0" encoding="utf-8"?> savedValues) <!-- Demonstrates using a relative layout to { create a form --> // Be sure to call the super class. <RelativeLayout super.onCreate(savedValues); xmlns:android="http://schemas.android.com/apk/ // Load the compiled layout resource res/android into the window's android:layout_width="fill_parent" // default ViewGroup. Services android:layout_height="wrap_content" // The source file is android:background="@drawable/blue" res/layout/hello_activity.xml android:padding="10px"> setContentView(R.layout.hello_activity) <TextView id="@+id/label" Applications ; android:layout_width="fill_parent" android:layout_height="wrap_content" // Retrieve any important stored values. android:text="Type here:"/> restoreValues(savedValues); <EditText id="@+id/entry" Application Framework } android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable Android Run-Time /editbox_background" android:layout_below="@id/label"/> <Button id="@+id/ok" Libraries android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/entry" android:layout_alignParentRight="true" Linux Kernel android:layout_marginLeft="10px" android:text="OK" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" Emulator or Hardware android:layout_toLeft="@id/ok" android:layout_alignTop="@id/ok" android:text="Cancel" /> </RelativeLayout> Network (Wireless,Wired) www.kandroid.org 24
  • 25. 2008.3.27. Kandroid for Inticube Android Application : Dev. Process Java Dalvik (classes) (.dex) Android App. Services (.apk) Zip 압축 Applications customized File Resource WbXML(?) Application Framework Android Run-Time Manifest DalvikVM Libraries JNI Linux Kernel JNI 사용을 위한 절차 Emulator or Hardware - JNI Call Java Class 생성 - Class 내에서 System.loadLibrary 정의 - Build Class Network (Wireless,Wired) - Generate Dynamic Library Header File with javah Dynamic Library www.kandroid.org 25
  • 26. 2008.3.27. Kandroid for Inticube Android Services : ADC Early Look 주제 영역 비 고 (필자의견) Social networking 사회적 네트워킹 영역은, 쉽게 생각하면 모바일 사이월드 같은 것이라고 생각해도 될 듯하다. 어떤 이들은 구글 Android의 목표가 모바일 폰이 아 니라 모바일 인프라와 결합된 글로벌 facebook 사이트라는 의견을 제시 하는 사람들도 있다. Media consumption, management, editing, 동영상이나 사진 등과 같은 매체에 대한 활용, 관리, 편집, 공유 등에 대한 Services or sharing, e.g., photos 것으로 이와 비슷한 모바일 애플리케이션은 많이 볼 수 있는 듯 하다. Productivity and collaboration such as 전자메일,일정관리,메신저 등을 모바일과 연동함으로써, 생산성이나 협 Applications email, IM, calendar, etc. 력을 증대시키는 애플리케이션에 대한 것으로, 이러한 영역들 역시 우리 주변에서 많이 볼 수 있는 듯 하다. Gaming 이 영역은, 모바일 게임에 해당할 것이다. Application Framework News and information (weather, traffic, 이 영역은 최근 모바일 대기화면이나 모바일 위젯에서 많은 사례들이 나 sports, stocks, etc.) 오고 있는 듯하다. Android Run-Time Rethinking of traditional user interfaces 모바일 인터페이스에 대해서는, 이미 애플이 iPhone 핑커터치 인터페이 스를 통한 확대/축소, 스크롤 및 block 기반의 확대/축소 최적화 등을 선 보인 것 같다. 이 부분에 대해서는 구글 Android도 많은 부분 모방을 하 였으나, 보다 혁신적인 사용자 인터페이스는 매우 의미있는 영역이 될 듯 Libraries 하다. Use of mash-up functionality 아마도 이 부분의 가장 대표적인 사례는 구글 마이맵일 듯 하다. Linux Kernel 구글 마이맵은 구글맵에 다양한 가젯을 추가한 서비스이다. Humanitarian benefits (monitoring and 이 영역은, 인도주의적 이익을 추구하는 것들로 질병, 기후변화, 자연재해 response for diseases, climate change, 등에 대한 관측 및 대응에 대한 부분들이다. Emulator or Hardware natural disasters, etc) Applications in service of global economic 이 영역은, 돈이 없어서 컴퓨터의 혜택을 누리지 못한 저개발국가의 아이 development for the 3 billion people living 들을 위해 100달러 미만의 컴퓨터를 만들고 있는 시도와 비슷한 듯하다. Network (Wireless,Wired) on less than $2.00 per day 하루 2달러 미만으로 살고 있는 30억 인구를 위한 글로벌 경제 개발 서비 스를 위한 애플리케이션 !. www.kandroid.org 26
  • 27. 2008.3.27. Kandroid for Inticube Android Services : ADC Recent Look 안드로이드 개발자 챌린지 출품작 심사기준 1. Originality of Concept Services - Does the application introduce a great new idea; for example, a new angle on social applications? Applications 2. Effective Use of the Android Platform - Does the application take advantage of Android’s unique and compelling features, Application Framework such as built-in location-based services, accelerometer, and always-on networking? 3. Polish and Appeal Android Run-Time - Is the application easy to use and aesthetically appealing? Libraries 4. Indispensability - Is the application compelling and essential, such as a game the user just can’t put down Linux Kernel or a utility she can’t live without? Emulator or Hardware Network (Wireless,Wired) www.kandroid.org 27
  • 28. 2008.3.27. Kandroid for Inticube Android Services : ADC App. Classification Networking Games Map / Location Messaging & Chat 다양한게임Application 위치찾기 P2P S-Tris2 (Native App. 지원) 길안내및공유 Services Telnet Client GPS 기반네트워크게임 건물및관광정보 Log-in Indicator 유무선연동게임 지역기반블로그 Applications Multimedia Productivity Utility Application Framework Photo Album Notepad / Tip 계산/ 계산기 다양한Linux Console Util. Music Player (ID3 tags 지원) SAP 연동/ 고객관리 Script Language Android Run-Time Video Player (Streaming 지원) Phone to Server Sync ebook reader 3D Application Outlook sync RSS reader Libraries Linux Kernel Web Developer Tool etc. Twitter UI 디자인도구 - DroidDraw 주소록(Contact) Sync Emulator or Hardware Server-Side App & Thin Client Barcode 생성및reader Password saver Auction Management VNC / 원격제어SW DVB-H Simulator 4 Olympics Flickr clinet Embeded DB 4 android App. 4 The Muslim Network (Wireless,Wired) www.kandroid.org 28
  • 29. 2008.3.27. Kandroid for Inticube Android Services : ADC Hot Applications DroidDraw Hecl Open Intents Moseycode Services Applications Application Framework Android Run-Time My Location AndroidSAP WikiNotes & GTalk, etc. Libraries Linux Kernel Emulator or Hardware Network (Wireless,Wired) www.kandroid.org 29
  • 30. 2008.3.27. Kandroid for Inticube Android Services : ADC Hot Idea 실시간으로 안드로이드 폰 화면에서 일어나는 모든 것을 그대로 반영하는 에뮬레이터. “나는 이미 안드로이드 SDK가 에뮬레이터를 가지고 있다는 것을 알고 있다. 내가 이야기 하고자 하는 것을 그것이 아니 다. 나는 안드로이드 폰 화면에서 어떤 일이 발생할 때, 그것을 정확하게 똑같이 컴퓨터 화면에 보여주는 에뮬레이터를 이야기하는 것이다. 이것은 마치 블루투스나 WiFi를 통해 안드로이드 폰이 컴퓨터 화면에 투영되는 것과 같다. 그러나, 이것은 단지 화면 이미지에 대한 투여은 아니다. 그것은 당신의 폰에서 할 수 있는 모든 것을 가능하게 하는 완벽한 기능 Services 을 가진 에뮬레이터여야 한다. 다소 웃긴 시나리오 두 가지를 이야기 해 보고자 한다. Applications 당신이 집안의 어떤 방에 안자 있다고 가정하자, 그리고 안드로이드 다른 방 옷장속 바지속 어딘가에 있다. 그 때 전화가 온다면, 당신은 컴퓨터 화면상의 에뮬레이터를 통해 전화를 받고 이야기를 나눌 수 있다. 당신은 전화를 걸 수도 있고, 문 자메시지를 보내고 받을 수 있으며, 당신의 폰에서 실행되는 폰 게임을 한다거나 재밌는 어떤 애플리케이션을 사용할 수 Application Framework 있다. 다른 시나리오는, 당신의 폰이 도둑맞았다고 가정하자. 당신은 컴퓨터상의 에뮬레이터를 가지고 도둑이 그 폰으로 무엇 을 하는지를 정확히 볼 수 있으며, 그의 통화내용을 들을 수 있으며, 폰의 카메라를 제어해서 도둑이나 그의 주변을 찍을 Android Run-Time 수 있다. 의심할 필요없이, 그런 에뮬레이터를 사용할 수 있다면, 많은 다른 흥미로운 시나리오나 애플리케이션들이 존재할 것이 Libraries 다.” - http://gphonesystem.blogspot.com/2007/12/android-developer-challenge-real-time.html Linux Kernel Emulator or Hardware Network (Wireless,Wired) 휴대폰 도둑 컴퓨터상의 안드로이드 www.kandroid.org 30
  • 31. 2008.3.27. Kandroid for Inticube Android & Issues i18n Issue Cellular Network Performance Issue - 현재 안드로이드 WebKit은 HTTP Cellular Network Performance 이슈 utf-8, iso-8859-1, utf-16 만을 지원하고 있음. - 현재 애플 iPhone을 WiFi가 아닌 Edge망에서 사용한다고 - 더불어 unicode encoding 하더라도 WebKit Performance 문제가 있음. 을 지원하기 위해 탑재된 - Android 역시 동일한 Apple의 WebKit을 기반으로 하고 ICU 역시 최소로 Build 되어 있기 때문에 WebKit Performance Issue는 존재할 것으로 보임. 있음. - 더불어 입력기와 관련된 주요 솔루션들 다양한 지역특허들을 해결 해야 하는 이슈가 있음. - Server-Side Optimization / Client-Server 구조 Application QA & Packing Issue App. Release/Install/Helpdesk Issue Quality Assurance 이슈 구글 안드로이드의 주요한 이슈 중 Helpdesk Issue가 존재함. 기존의 MNO 기반에서 App.가 단말에 탑재되기 전에 해당 오픈 플랫폼의 특성상 탑재될 App. 역시 다양한 경로를 가짐. 사업자에 의해 App.에 대한 QA가 실시되고 있음. 이런 다양한 경로를 통해 탑재된 App.들과 관련되어 Phone에 오픈 플랫폼 기반의 App.에 대한 QA는 소비자의 책임인가? 문제가 발생하였을 시, 이를 위한 Helpdesk 운영에 대한 Issue가 아니면 App. 배포자의 책임인가? 존재함. 더불어, 다양한 무수히 존재하는 다양한 App.들을 App. Suites 과연, 누가 이러한 Helpdesk를 운영할 것인가? 으로 만들어서 배포하는 집단들이 나올 수 있을 것으로 보임. 오픈 플랫폼이기 때문에, 소비자에게 모든것을 맡겨야 하는가? 등등의 이슈가 존재함. www.kandroid.org 31
  • 32. 2008.3.27. Kandroid for Inticube Microsoft, Apple, Google, and Ours www.kandroid.org www.kandroid.org 32
  • 33. 2008.3.27. Kandroid for Inticube Market Research & Impact - Better Connectivity Alliance Operators to Other Devices Google vs. Microsoft,Nokia,Symbian - Store and Look at Photos HTC A prospective - Access the Internet More Easily Winners Traditional ODM model customer - Listen to Music (or Other Audio Content) + high-end product innovation - Play Games (Original Design Manufacturing) - Watch TV or Internet Videos Client application framework pure plays, Google has a better start in this potentially on-device-portal (ODP) pure plays Speculations race than any company had with cellular before to bring new rules to the Losers ODP : client-side environments that permit carriers mobile market with all carriers, rendering, manipulation of, and interaction mobile devices and its customers. with web-based content without the need This nice and healthy competition for a persistent data connection is just what the mobile industry needs at the moment, at least for the consumers. The wars being Samsung and LG Manufacturers’ war waged between Google and the In the Motorola field will only create better, cheaper Balance Verizon Wireless handsets and more advanced Google applications. www.kandroid.org 33
  • 34. www.kandroid.org

×