Home » Android -2. 안드로이드 개요

Android -2. 안드로이드 개요

2.1. 안드로이드란?

  • 안드로이드는 Google을 중심으로 한 OHA(Open Handset Alliance) 컨소시엄에서 만든 최초의 오픈 소스 모바일 애플리케이션 플랫폼이며, 리눅스 커널을 기반으로 한 운영체제, 풍부한 UI(user Interface), 다양한 애플리케이션, 라이브러리, 애플리케이션 프레임워크, 멀티미디어 지원 등의 구성 요소들을 포함하며 휴대전화 기능도 포함 되어 있다.

2.2. 안드로이드의 특징

1) 운영체제의 핵심이라고 할 수 있는 커널은 공개 운영체제인 리눅스에 기반한다.
2) 자바 언어를 기반으로 프로그램을 작성한다.
3) 개방된 환경인 만큼 개발 툴과 관련 문서들이 모두 무료로 제공된다.

2.3. 안드로이드 플랫폼


그림 13. 안드로이드 플랫폼

1) 리눅스커널
메모리관리, 프로세스관리, 파일시스템 관리, 네트워크 스택등 하드웨어 지원

2) Native라이브러리(C, C++)
안드로이드 프레임워크에서 필요한 C와 C++ 라이브러리

3) 안드로이드런타임
코어라이브러리 지원, Dalvik Virtual Machine으로 안드로이드 애플리케이션 실행환경 제공

4) 어플리케이션프레임워크
안드로이드 어플리케이션 개발시 필요한 API 제공

상세 구성 요소 기능 설명
Activity Manager 애플리케이션의 생명주기를 관리한다.
Window Manager 윈도우의 모양이나 크기 등을 관리한다.
Content Manager 애플리케이션이 다른 애플리케이션의 정보나 메시지를 공유, 작업 등을 요청하는 기능을 담당한다.
View Manager 윈도우 매니저와 같이 리스트, 텍스트 박스, 버튼 및 다이얼로그 등 애플리케이션 제작을 용이하게 하는 UI 세트를 제공한다.
Notification Manager 콜수신, 메시지수신, 배터리 부족, 시스템 상태 변화, 네트워크 시그널 등 이벤트 발생에 따라 상태바나 토스트와 같은 알람을 디스플레이하는 기능을 한다.
Package Manager 패키지 설치, 제거 등을 지원하는 관리자이다.
Telephony Manager 음성 및 영상통화, MMS/SMS, SIM/USIM 관리한다.
Resource Manager 애플리케이션에게 파일, 그래픽 등의 자원 할당하고 해제한다.
Location Manager 위치정보를 제공하는 기능을 담당한다.

5) 어플리케이션
Email 클라이언트, SMS 프로그램, 달력, 지도, 브라우저 등의 코어 어플리케이션

2.4. 안드로이드 프로그램 구조

1) 뷰
뷰(View)는 사용자와 직접 상호작용을 할 UI를 의미한다.

2) 액티비티
보통 액티비티와 UI화면은 일대일 대응 관계를 갖고 시스템 혹은 사용자로부터 시작된 이벤트에
반응한다.

3) 인텐트
컨포넌트간의 통신 수단이며 메시지에 대한 상세한 정보를 가진다. 예를 들면 주소록 목록 액티
비티에서 편집 액티비티를 호출할 때 누구의 주소를 어떤 식으로 편집하라는 지시가 인텐트에 실
려 전달된다.

4) 서비스
서비스는 주로 백그라운드에서 돌아가는 실행코드로, 일단 실행되면 휴대폰이 꺼질 때까지 돌아
간다. 서비스는 일반적으로 사용자 인터페이스가 없다.
예) MP3 플레이어

5) 브로드캐스트 리시버(BroadcastReceiver)
만약 애플리케이션이 전화가 오거나 문자메시지 수신과 같은 이벤트를 받거나 반응하기를 원한다면 반드시 브로드캐스트 리시버로서 등록되어 있어야만 한다. 신호만 대기할 뿐 UI를 따로 가지지는 않으므로 신호 수신시 적절한 액티비티를 띄워 내용을 전달한다.

6) 컨텐트 프로바이더
다른 응용 프로그램을 위해 자신의 데이터를 제공한다. 안드로이드는 보안이 엄격하여 다른 응용 프로그램의 데이터를 함부로 액세스 하지 못하도록 되어 있다. 응용프로그램 간에 데이터를 공유할 수 있는 합법적인 유일한 장치가 바로 콘텐트 프로바이더이다.

2.5. 핵심 파일 및 디렉토리

이름 설명
AndroidManifest.xml AndroidManifest.xml파일은 응용프로그램의 전역 설정을 담는다.
이 파일은 응용프로그램의 능력, 권한, 실행 방식 등 정의
project.properties project.properties 파일은 자동으로 생성되는 프로젝트 파일로, 응용프로그램의 빌드 대상과 기타 적절한 빌드 시스템 옵션들 정의
src 디렉토리 응용프로그램의 모든 소스 코드를 담는 필수 폴더
bin 디렉토리 컴파일된 애플리케이션 코드가 들어감
gen 디렉토리 응용프로그램을 위해 자동으로 생성된 자원(resource)파일들을 담는 필수 폴더. R.java(응용프로그램 자원 관리자 소스 파일) 자동 생성
res 디렉토리 아이콘이나 GUI 레이아웃 등 컴파일된 자바 코드와 함께 애플리케이션 패키지에 포함될 파일 보관

2.6. Resource 디렉토리 구조

자원 형식 필수 디렉토리 파일 이름 핵심 xml요소 이름
문자열 /res/values/ strings.xml < string >
문자열 배열 /res/values/ arrays.xml < string-array >
색상 값 /res/values/ color.xml < color >
크기(dimension) /res/values/ dimens.xml < dimen >
단순 표시물 /res/values/ drawables.xml < drawable >
비트맵 그래픽 /res/drawable/ Ex) img.png, img.jpg, img.gif, selector.xml 지원되는 그래픽 파일 도는 도형 등의 표시물을 정의 하는 xml파일
애니메이션 시퀀스 /res/anim/ Ex) Slide_anim.xml < set >, < alpha >, < scale >, < translate >, < rotate >
메뉴 파일 /res/menu/ Ex) my_menu.xml < menu >
xml 파일 /res/xml/ Ex) more.xml 개발자가 정의
원본(raw) 파일 /res/raw/ Ex) audio.mp3, text.txt
레이아웃 파일 /res/layout/ Ex) main_activity.xml 다양하며 반드시 레이아웃 요소이어야 함
스타일 및 테마 /res/values/ styles.xml, themes.xml < style >

2.7. Manifest.xml 파일구조

이름 설명
Manifest package : 패키지명
android:versionCode : 버전코드(운영체제가 어플의 업그레이드를 관리하기 위해 사용)
android:versionName : 버전이름(어플을 내려받을 때 사용되는 버전 정보)
uses-permission 태그는 안드로이드 애플리케이션에 반드시 보안관련 권한이 필요함을 나타낸다.
– ACCESS_FINE_LOCATION : GSP 위치 추적기능에 필요한 권한
– ACCESS_LOCATION_EXTRA_COMMANDS : 위치와 관련된 추가 기능에 대한 권한.
– CALL_PHONE : 다이얼러로 전화를 걸 수 있는 권한.
– ACCESS_MOCK_LOCATION : 에뮬레이터에서 실행할 때 가상 위치 정보를 사용할 수 있는 권한
– INTERNET : 인터넷 접속권한
– ACCESS_COARSE_LOCATION : 지도 사용시 권한
permission 외부 액티비티나 서비스가 내부 데이터나 기능을 사용하고자 할 때 필요한 권한 지정
instrumentation 액티비티가 실행되는 등의 주요 시스템 이벤트가 발생했을 때 애플리케이션의 어느 부분을 호출하지 지정
uses-library 지도 서비스처럼 추가로 연동되는 안드로이드 컴포넌트를 지정
uses-sdk 애플리케이션을 어느 버전의 안드로이드 환경에서 사용할 수 있는지 알려준다.
service 서비스 지정
receiver 브로드캐스트 리시버 지정
application 실제 애플리케이션과 관련된 내용 기술
android:icon 어플의 아이콘 설정
android:label 어플의 이름 설정
——————————————

android:name 액티비티 클래스의 이름
android:label 액티비티가 화면에 떴을 때 가장 위에 표시할 레이블
——————————————

action 안드로이드는 애플리케이션을 시작할 때 MAIN action을 선언 한 액티비티를 찾는다.
category 안드로이드는 이 속성을 통해 찾아야 하는 인텐트 필터를 한정한다.