안드로이드 애플리케이션 구성요소
Activity
애플리케이션 1개의 화면을 의미한다.
동작방식 : 생애 주기에 따라 사용자와 상호작용을 하지 않는 액티비티는 비활성화 및 소멸 수 있다.
Service
화면에 표시되지 않고 백그라운드에서 실행되는 컴포넌트
BroadcastReceiver
다양한 이벤트를 개발자가 항상 확인하고 처리해야 하는 비효율적이고 어려운 작업을 해결하고자 BoardCastReceiver는 어떠한 특정 작업이 발생되는 경우 그것을 받고자 하는 곳에 알려주는 기능(방송알림 기능)
Content Provider
애플리케이션 내의 데이터들은 기본적으로 해당 애플리케이션에서만 접근할 수 있고 다른 애플리케이션은 접근할 수 없기 때문에, 이에 대한 접근을 허용하기 위해 사용.
안드로이드 플랫폼을 구성하고 있는 파일시스템
로컬데이터가 저장되는 위치
Eclipse 기반
/src
안드로이드 애플리케이션 소스를 포함한 폴더
/gen
안드로이드 애플리케이션을 위해 자동으로 생성하는 디렉토리
내부에는 R.java 파일이 자동으로 생성됨 : 실행 코드 내부에서 리소스들을 쉽게 사용할 수 있게 해주는 R객체 인스턴스의 기본이 되는 클래스
/res
안드로이드 애플리케이션의 모든 리소스들을 포함하는 디렉토리
/layout/main.xml
안드로이드 애플리케이션의 레이아웃들을 정의
main.xml : 애플리케이션의 기본 레이아웃
/values/strings.xml
안드로이드 애플리케이션의 문자열, 배열, 색상 및 크기 등에 대한 리소스들을 관리
AndroidManifest.xml
안드로이드 애플리케이션에 대한 이름, 버전 정보, 애플리케이션 구성요소 및 권한 등을 설정
Android studio 기반
해당 툴은 IntelliJ 기반으로 안정성과 속도면에서 eclipse보다 뛰어나다는 평가를 받고 있다.
Project
모듈이라는 작은 프로젝트로 구성
이클립스 : 애플리케이션이나 라이브러리가 각각 1개의 프로젝트로 구성
Module
애플리케이션이나 라이브러리를 구성하는 최소단위
이클립스 : 프로젝트
Gradle Wrapper
빌드에 사용되는 Gradle 툴을 편리하게 사용할 수 있도록 도와주는 스크립트
기타
프로젝트 내 모듈들의 빌드 진행시 공통으로 적용해야 하는 설정정보가 제공
크게 5개의 큰 레이어로 분리할 수 있다.
아래의 표와 같이, 가장 하단부터,
Linux Kernel, Libraries, Android Runtime, Application FrameWork, Applications 으로 구성
Linux Kernel 레이어
안드로이드는 가장 하단에 Linux Kernel이 있기 때문에, 리눅스 기반을 가지고 있다고 할수 있다.
Linux의 모든 요소를 가져온것은 아니고 Core부분과 휴대폰 사용에 필요한 부분만 추가해서 사용하는 Linux Kernel 을 가지고있다.
Android와 리눅스를 비교한 이미지
중요한것은, 리눅스에 Dalvik가상머신을 올리고,
그위에 Android에 필요한 API들을 추가한 FrameWork를 올렸다는점.
Libraries 레이어
주요 라이브러리가 위치
모바일 데이터 베이스 SQLite
Media Player에 관련한 MediaFrameWork나 화면과 관련된 Surace Manager등이 위치
Android Runtime레이어
이곳에 구글의 자바 가상머신인 Dalvik위치
Dalvik의 실행 파일은최소한의 메모리에 최적화된 DEX(Dalvik Execute)포맷을 사용.
이 DEX파일을 APK로 만들어서 배포가 되어지는 것
Application Framework 레이어
안드로이드 SDK에 의해서 제공되는 API라이브러리나 emulator, 디버깅툴 같은 툴
여기에는 데이터를 공유할 때 사용하는 Content Providers부터 푸쉬메시지와 관련된 Notification Manager와 위치와 관련된 Location Manager까지 안드로이드 프로그래밍을 하면서 사용되는 라이브러리들도 포함
Applications 레이어
여기가 바로 사용자들과 만나는 최상위 레이어
안드로이드에서 제작되어 번들로 실리는 앱이나, 사용자가 설치한 앱들을 가르킴