슬라이드 1

Download Report

Transcript 슬라이드 1

2008 Korea Android 를 준비하며
A first look at Google
Android
2008. 2. 20.
www.kandroid.org
2008.3.13.(목) 코엑스 그랜드볼룸
들풀
네이버 카페 “2008코리아 안드로이드”
http://cafe.naver.com/mobitoday.cafe
Introduction
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.
Introduction
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 공급
2007.11.12.
Google, Android SDK 릴리즈
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 릴리즈
2008.2.11~14.
2008.2~3Q.
The Mobile World Congress 2008 Barcelona
Texas Instruments, Google Android 프로토타입 시연
Real Android Phone 출시 예상
Introduction
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를 위한 플러그인을 포함함.
System Architecture
System Architecture
Applications
안드로이드에는 E-mail 클라이언트, SMS 프로그램, 달력, 지도, 브라우저, 전화번호부, 그리고 다른 것들을
포함하는 핵심 애플리케이션들의 탑재될 것이다. 모든 애플리케이션은 Java 프로그래밍 언어로 작성된다.
개발자들은 핵심 애플리케이션들에서 사용되는 것과 동일한 프레임워크 API에 완벽하게 접근할 수 있다.
애플리케이션의 아키텍처는 컴포넌트의 재사용을 쉽게 하도록 디자인되었다.
어떤 애플리케이션은 해당 애플리케이션의 기능들을 외부에 제공할 수 있으며, 다른 임의의 애플리케이션은
그렇게 제공된 기능들을 사용할 수 있다. (단, 프레임워크에 부여된 보안 제약을 따른다.)
이와 같은 메카니즘은 사용자에 의한 컴포넌트의 대체를 가능하게 한다.
아래에 나열된 모든 애플리케이션은 하나의 서비스와 시스템의 집합체이다.
풍부하고 확장성 있는 View 집합 :
Application
Framework
list, grid, 텍스트 박스, 버튼, 심지어는 임베딩 가능한 웹 브라우저를 포함하는 애플리케이션을
제작하는 데 사용될 수 있음.
Content Proivder :
애플리케이션이 전화번호부와 같은 다른 애플리케이션 데이터에 접근하는 것이나 자신의
데이타를 공유시키는 것을 가능하게 함.
Resource Manager :
문자열,그래픽,레이아웃 파일과 같은 코드화되지 않는 자원에 대한 접근을 제공함.
Notification Manager :
모든 애플리케이션이 상태바에 애플리케이션이 만든 알림메시지를 표시하는 것을 가능케 함.
Activity Manager :
애플리케이션의 생명주기를 관리하며, 일반적인 네비게이션 히스토리를 제공함.
System Architecture
안드로이드는 안드로이드 시스템의 다양한 컴포넌트에 의해 사용되는 C/C++ 라이브러리 집합을 포함
하고 있다. 이러한 라이브러리의 기능들은 안드로이드 애플리케이션 프레임웍크을 통해서 개발자들에게
제공된다. 아래에 나열될 것은 핵심 라이브러리들 중 일부분이다.
시스템 C 라이브러리
임베디드 리눅스 기반의 디바이스를 위해서 튜닝된 표준 C 시스템 라이브러리의
BSD 기반 파생 구현물 (libc)
미디어 라이브러리
PacketVideo의 OpenCORE기반임. MPEG4, H.264, MP3, AAC, AMR, JPG, PNG를 포함하는
정적 이미지 파일뿐 아니라, 널리 대중화된 오디오나 비디오 포맷들의 재생 및 녹화를 지원함.
Surface 관리자
디스플레이 서브시스템에 대한 접근을 관리하며, 다수의 애플리케이션들과 분리된
Libraries
통합된 2D 와 3D 그래픽 계층을 제공함.
LibWebCore
안드로이드 브라우저와 임베딩 가능한 웹 뷰를 제공하는 최신 웹 브라우저
SGL
기반이 되는 2D 그래픽 엔진
3D 라이브러리
OpenGL ES 1.0 API들에 기반한 구현. 하드웨어 3D 가속기가 있다면 그것을 사용하거나
또는 설치된 고도로 최적화된 3D 소프트웨어 래스터라이저를 사용함.
FreeType
비트맵 또는 벡터 폰트 랜더링
SQLite
모든 애플리케이션에서 사용 가능한 강력하며 경량화된 관계형 데이타베이스 엔진
System Architecture
안드로이드는 Java 프로그래밍 언어의 핵심 라이브러리에서 사용가능한 대부분의 기능들을 포함하는
핵심 라이브러리들을 포함한다.
모든 안드로이드 애플리케이션은 Dalvik 가상 머신내의 자신의 인스턴스를 가지고, 자신의
프로세스내에서 동작한다. Dalvik은 하나의 디바이스가 복수의 VM들을 효과적으로 실행하도록
Android Runtime
만들어졌다. Dalvik VM 최소 메모리 사용하도록 최적화된 Dalvik Executable(.dex) 포맷의 파일들을
실행한다. Dalvik VM은 레지스터 기반이며, Java 언어 컴파일러에 의해 컴파일된 클래스를 "dx"라는
도구에 의해 .dex 포맷으로 변환된 클래스를 실행한다.
Dalvik VM은 쓰레딩과 저수준 메모리 관리와 같은 기능을 위해 리눅스 커널에 기초한다.
안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트웍 스택, 드라이버 모델 등과 같은 핵심 시스템
Linux Kernel
서비스를 위해 리눅스 버전 2.6 에 기반한다. 또한 이 커널은 하드웨어와 나머지 소프트웨어 스택간의
추상화된 계층으로써 역할을 수행한다.
Developing Applications
Designing Screen in XML
<?xml version="1.0" encoding="utf-8"?>
<!-- Demonstrates using a relative layout to create a form -->
<RelativeLayout xmlns: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(Bundle savedValues)
{
// 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.xml
setContentView(R.layout.hello_activity);
// Retrieve any important stored values.
restoreValues(savedValues);
}
Developing Applications
Application Build Blocks
AndroidManifest.xml file은 여러분이 생성했던 모든 최상위 레벨 컴포넌트(특별히, 아래에 언급된
activity,service, intent receiver, 그리고 content provider)를 가지고 시스템이 무엇을 하는가를
AndroidManifest.xml
말하는 제어파일이다. 예를들어, 이것은 여러분의 activity들이 어떤 intent를 받는가를 실질적으로
명세하는 glue이다.
Activity는 기본적으로 생명주기를 가지는 오브젝트이다. Activity는 어떤 작업을 하는 코드의 묶음이다.
만약 필요하다면, 그것은 사용자에게 UI를 보여주는 것을 포함할 수 있다. 그것은 그럼에도 그것을
Activitys
가지고 있지 않다 - 어떤 Activity는 결로 UI를 보여주지 않는다. 전통적으로 여러분은 여러분의
애플리케이에 대한 시작점으로써 애플리케이션의 Activity들중 하나를 가르킬 것이다.
View는 스스로 스크린에 그리는 방법을 아는 하나의 오브젝트이다. 안드로이드 사용자 인터페이스는
View의 계층구조로 구성된다. 만약 여러분이 어떤 자체제작한 그래픽한 기술(게임을 제작하거나,
Views
또는 어떤 특별한 새로운 사용자 인터페이스 위젯을 만들 때)을 수행하길 원한다면, 여러분은
View를 생성할 수 있다.
Intent는 어떤 것을 할 의도를 표현하는 단순한 메시지 오브젝트이다. 예를들어, 여러분의 애플리케이션이
웹 페이지를 표시하길 원한다면, 그것은 Intent 인스턴스를 생성하는 것에 의해 URI를 보기 위한 Intent를
Intents
표명하고, 시스템에게 그것을 넘긴다. 시스템은 그 Intent를 처리할 방법을 아는 (이 경우는 브라우저)
약간의 다른 코드 조각들을 위치세우고, 그것을 실행한다. Intent는 또한 시스템 전역에 걸쳐 notification
과 같은 흥미로운 이벤트를 방송하기 위해 사용될 수도 있다.
Developing Applications
Application Build Blocks
Service는 background로 동작하는 코드의 몸체이다. 그것은 자신의 프로세스 안이나, 또는 그것의
필요에 의존하는 다른 애플리케이션의 프로세스의 컨텍스트 안에서 실행할 수 있다. 다른 컴포넌트들은
Services
서비스에 "bind"하고, 원격프로세스호출을 통해 그 위의 메쏘드를 invoke한다. Servide의 하나의 예가
미디어 플레이어다.사용자가 미디어 선택 UI를 끝냈을 때 조차도, 그녀는 여전히 그녀의 음악이 재생
되고 있기를 여전히 원할 수 있다. Service는 UI가 끝났을 때 조차도 음악을 계속 재생시킨다.
Notification은 상태바에 나타나는 작은 아이콘이다. 사용자는 정보를 수신하는 이 아이콘과 상호작용
할 수 있다. 가장 널리 알려진 Notification들이 SMS 메시지, 통화목록, 그리고 음성메일이지만,
Notifications
애플리케이션들은 자기 소유의 것을 만들 수 있다. Notification은 사용자들이 주목해야 할 필요가
있는 어떤 것을 사용자에게 알리기 위한 아주 좋은 메카니즘이다.
ContentProvider는 디바이스상의 데이타에 대한 접근을 제공하는 하나의 데이타 저장소이다; 전통적인
예는 사용자의 전화번호부 목록에 접근하기 위해 사용되는 ContentProvider이다. 여러분의 애플리케이션
ContentProviders
은 ContentProvider를 통해 다른 애플리케이션들이 보여주는 데이타에 접근할 수 있으며, 여러분은 또한
여러분 소유의 데이타를 보여주기위한 여러분 소유의 ContentProvider들을 정의할 수 있다.
Developing Applications
Application lifecycle
foreground
process
visible
process
service
process
background
process
empty
process
foreground 프로세스는 사용자와 상호작용을 하고 있는 스크린의 최상위에 있는 Activity나 현재
수행되고 있는 IntentReceiver를 점유하고 있는 프로세스이다. 시스템에는 매우 작은 수의 그러한
프로세스들이 존재할 뿐이며, 이런 프로세스가 계속 실행 되기조차 어려운 최후의 메모리 부족
상태에서만 종료된다. 일반적으로 디바이스가 메모리 페이징 상태에 도달하는 시점에, 사용자
인터페이스에 대한 응답을 처리하기 위해서 그러한 행위가 요구된다.
visible 프로세스는 사용자의 화면상에는 나타나지만 foreground 상태는 아닌 Activity를 점유하는
프로세스이다. 예를 들어 foreground activity 다이얼로그 형태로 그 뒤에 이전에 보여졌던 activity를
허용하면서 표시될 때 이러한 것은 발생하게 된다. 그러한 프로세스는 극도록 중요하게 고려되며
더이상 그것을 수행하지 않을 때까지 종료되지 않으며, 모든 foreground 프로세스들을 실행 상태로
유지하는 것이 요구된다.
service 프로세스는 startService() 메쏘드를 가지고 시작된 Service를 점유하고 있는 프로세스
이다. 이러한 프로세스는 사용자에게 직접적으로 보여지는 않지만, 이것은 일반적으로 사용자와
관련된 어떤 일을 일반적으로 수행하며, 시스템이 모든 foreground와 visible 프로세스를 보유하기에
충분한 메모리가 존재하는 한, 시스템은 그러한 프로세스들은 항상 실행상태로 유지할 것이다.
background 프로세스는 사용자에게는 현재 보여지지 않는 Activity를 점유하는 프로세스이다.
이러한 프로세스는 사용자에게 어떤 것도 직접적으로 영향을 미치지 않는다. activity 생명주기를
정확하게 구현하기 위해서 마련된 것이며, 시스템은 위의 3가지 프로세스 타입 중 한 가지를 위한
메모리 반환 요청이 있을 시에만 그러한 프로세스를 종료시킬 것이다. 일반적으로 많은 수의
이런 프로세스가 실행되고 있으며, 해당 프로세스들은 메모리 결핍 시 사용자에게 가장 최근에
보여진 것이 가장 마지막에 종료되는 절차를 확립하기 위해 LRU 리스트 상에서 유지된다.
empty 프로세스는 어떤 활성화 된 애플리케이션 컴포넌트도 점유하지 않는 프로세스이다.
이러한 프로세스를 유지하고 있는 유일한 이유는 다음번에 해당 애플리케이션을 실행할 필요가
있을 때 시동(startup) 시간을 개선하기 위한 캐쉬로써 사용하기 위함이다. 그런 이유로, 시스템은
이러한 캐쉬화된 empty 프로세스들과 기반에 있는 커널 캐쉬들 사이에서 전반적인 시스템
균형을 유지하기 위해 이러한 프로세스들을 가끔 종료하게 된다.
Developing Applications
Security Issues (추후정리 예정)
- Security Features of Google Android
User IDs and File Access
Using Permissions
Declaring and Enforcing Permissions
Enforcing Permissions in AndroidManifest.xml
Enforcing Permissions when Broadcasting Intents
Other Permission Enforcement
- Security vendor McAfee, a member of Linux Mobile (LiMo) Foundation
- LiMo Foundataion and members of OHA
- Disadvantage for Open platform and Open source
source code vulnerability for black-hat hackers
- SMobile Systems mobile package
- Application helpdesk
Market Research
Open Access
Open
Devices
Open
Applications
Open Access
= Open Devices
+ Open Applications
+ Open Services
+ Open Networks
Open Devices
소비자들이 원하는 다양한 네트웍에
접속할 수 있도록 Device Lock 해제.
Open Applications
소비자들이 원하는 애플리케이션을
Device에 탑재할 수 있도록 하는 것.
Open
Access
Open
Network
Open
Services
Open Services
다양한 사업자들이 적정가격에 임대
하여 새로운 서비스를 만들 수 있도록
하는 것.
Open Networks
다양한 사업자들이 무선망에 대한
기술적 정보에 대한 접근 및 기술적
접속이 허용되는 것.
Market Research
Market Research & Impact (추후 정리 예정)
A prospective
customer
- 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
Alliance Operators
Google vs. Microsoft,Nokia,Symbian
Winners
HTC
Traditional ODM model
+ high-end product innovation
(Original Design Manufacturing)
Client application framework pure plays,
Google has a better start in this
Speculations
with cellular
carriers
potentially on-device-portal (ODP) pure plays
race than any company had
before to bring new rules to the
Losers
mobile market with all carriers,
mobile devices and its customers.
This nice and healthy competition
ODP : client-side environments that permit
rendering, manipulation of, and interaction
with web-based content without the need
for a persistent data connection
is just what the mobile industry
needs at the moment, at least for
Manufacturers’
war
Samsung and LG
the consumers. The wars being
waged between Google and the
In the
Motorola
field will only create better, cheaper
Balance
Verizon Wireless
handsets and more advanced
applications.
Google
Mobile Future
Mobile Ads
Jaiku(http://jaiku.com/) - an activity stream and sharing service that works from the Web
and mobile phones - 는 모바일 광고에 대한 중요한 투자로써, 구글에 의해 매입되었다.
사람들은 구글이 요즈음 더 인기있는 Twitter보다 마이크로블로깅 서비스를 왜 더 선호하는지
의아해 했다. 그 해답은 Jaiku의 마이클로블로깅과 사용자 위치의 결합에 대한 독특한 능력에
있다. 그 서비스의 하나의 필수영역이 심비안 S60 플랫폼 모바일 폰에 대한 Jaiku 클라이언트
애플리케이션이며, 그것은 안드로이드 플랫폼에도 동일하게 적용될 것이다. 그 클라이언트는
근처의 셀룰라 네트웍 타워들에 기반한 핸드셋과 사용자의 위치를 얻기 위하여 디바이스내의
Location API를 사용한다. 그 지점에서 텍스트는 사용자 위치에 연결되며, 사용자가 자주
방문하는 각각의 장소에 대한 선호하는 목록을 생성한다. 그러한 기술을 사용해서, 사용자들이
맥도날드에 들어서거나 공항에 앉아 있을 때, 폰의 IP 주소를 통해 사용자를 추적하는 것은
간단하다. 구글은 그들의 위치나 그들의 효용성같은 그들의 프로파일에 기반한 개인들에게 보다
나은 광고를 푸쉬할 수 있게 되는 것으로 부터 백만마일 멀리 벗어나 있지 않다. 그들은 이미
데스크 탑 사용자들을 위한 광고에 대한 지역적 공간적 타켓팅을 제시한다. 그러나 이것은 모바일
폰에 대해서 더 유용하게 될 것이다. 그리고 만약 그 광고가 정말로 잘맞고 흥미있고 무례하지
않다면 사람들은 실질적으로 그들을 좋아하기 시작할 수 있다.
Mobile Future
Mobile Services
모바일 애플리케이션들과 서비스들의 빠른 성장에 더해서,
구글은 사용자들이 모바일 폰을 사용해서 소매가게들에서
결재를 할 수 있도록 하는 모바일 결재 서비스에 대한 특허
를 제출했다.
텍스트 메시지 결재 특허는 하나의 시스템을 묘사하는데,
그곳에서 구글이 GPay라고 부르는 모바일에 초점을 둔 결
재를 제시한다. 이것은 하나의 시스템을 설명하는데, 그곳
에서 SMS 메시지는 결재액수와 다른 정보를 포함하여 전
송될 수 있다. 그 결재액수가 검증되고 나면, 사용자의 계
좌로 부터 인출되고, 서버에서 서버로 전달된다. 수신하게
된 결재 확인은, 왼쪽의 다이어그램에서 묘사되듯이 관련
된 당사자들에게 또한 동시에 보내진다.
특허 애플리케이션에서 언급된, 온라인 결재를 유효화하는
컴퓨터 구현 방법으로 묘사된 그 시스템은 이미 존재하는
모바일결재 서비스와 유사하다. PayPal의 모바일 버전같
은 이들 서비스들은
가끔 유용했었지만, have had little success bursting with
merchants and with customers. 이미 존재하는 모바일 결
재와 GPay의 주된 차이는, GPay가 구글에 의해 만들어졌
고, 안드로이드플랫폼에 쉽게 장착될 것이라는 것이다.
안녕하세요.
2008 코리아 안드로이드 카페회원 여러분.
설 연휴를 보내고, 바르셀로나 WMC 소식에 귀기울이다 보니,
어느새 2월 한 달이 훌쩍 지나간 느낌입니다.
3월 13일로 예정된 '2008 코리아 안드로이드' 행사도
이제 어느덧 한 달이 채 안남았습니다.
아직은 조금 미흡하지만,
'2008 코리아 안드로이드' 행사 공식 홈페이지를 아래와 같이
오픈하였음을 알려드립니다.
www.kandroid.org
얼마 남지 않은 시간이지만, 차근차근 잘 준비해 나가고 있으니,
회원 여러분들의 많은 관심과 성원을 부탁드립니다.
저희 카페는 구글 안드로이드라는 시기적인 이슈와
회원 여러분들의 많은 관심 덕분에 급성장하고 있습니다.
이러한 힘을 모아 이번 행사를 성공적으로 치를 수 있도록
최선을 다할 것을 다시 한번 약속드립니다.
2008.2.19.
네이버 카페 “2008 코리아 안드로이드”
카페지기 들풀 올림