소프트웨어/안드로이드앱

[안드로이드 기초#1] 플랫폼과 개발환경

2015. 6. 29. 23:00
목차
  1. A. 어플리케이션들
  2. B. 어플리케이션 프레임워크
  3. Notification Manager
  4. Location Manager
  5. Activity Manager
  6. Content Provider
  7. Resource Manager
  8. View System
  9. Package Manager
  10. Window Manager
  11. C. 안드로이드 런타임
  12. Core Java 라이브러리
  13. Dalvik Virtual Machine
  14. D. 시스템 라이브러리
  15. E. 리눅스커널 (안드로이드 수정 부분 포함)
  16. A. 다운로드 & 설치하기
  17. B. Using the Android Studio IDE
  18. C. 프로젝트 폴더 설명
반응형

목차

1. 안드로이드 플랫폼

A. 어플리케이션들

B. 어플리케이션 프레임워크

Notification Manager

Location Manager

Activity Manager

Content Provider

Resource Manager

View System

Package Manager

Window Manager

C. 안드로이드 런타임

Core Java 라이브러리

Dalvik Virtual Machine

D. 시스템 라이브러리

E. 리눅스커널 (안드로이드 수정 부분 포함)

2. 개발환경

A. 다운로드 & 설치하기

B. Using the Android Studio IDE

C. 프로젝트 폴더 설명

3. 시리즈 연재

1. 안드로이드 플랫폼

Coursera에서 강의를 하나 듣기 시작했다. 약간 강의 노트 비슷한 형태로 정리해가면서 들어볼 예정이다. 아래는 안드로이드 구조와 소프트웨어 스택에 대해서 알 수 있는 그림이다. 조금 연식이 된 그림이라. Android Runtime에 ART가 표시되어 있지는 않다.



A. 어플리케이션들

최초 릴리즈 될 때 포함되는 빌트인 앱들이라고 보면 된다. (Home 스크린, 연락처, 전화 등) 하지만 제조사에서는 이 앱들을 그대로 사용하지 않고 자체 앱들로 대체해서 제품을 출시한다. 제조사 입장에서는 제품에 특징을 부여할 수 있는 부분이니까 어쩔 수 없는 선택이라고 볼 수 있다. 다만 개인적으로는 순정의 성능에는 미치지 못하는 것 같다. Application 영역을 벗어나면 거의 하드웨어 싸움으로 흐르는 것 같다.



B. 어플리케이션 프레임워크

안드로이드 앱들이 공통적으로 사용하는 부분들이 존재하는 레이어이다. 대부분은 java 서비스 형태로 존재하고 있다.

Notification Manager

중요한 이벤트가 발생했을 때, Notification BAR에 Notification Icons을 표시해주는 모듈.

Location Manager

디바이스의 현재 위치와 움직임 정보를 제공해주는 모듈.

Activity Manager

앱의 라이브사이클을 관리하고 Navigation Stack을 관리하는 모듈.

Content Provider

어플리케이션간 데이터 공유에 사용되는 모듈.

Resource Manager

문자열, 이미지, 레이아웃 파일 등 컴파일 되지 않는 리소스들을 처리해주는 모듈.

앱은 여러 언어에 해당하는 문자열 테이블 파일들을 가지고 있고 시스템의 기본언어가 변경될 때마다 이 모듈의 도움을 받아 표시언어가 바뀐다.

View System

일반적인 유저 인터페이스 아이템들을 제공해주는 모듈.

(탭, 버튼, 텍스트 뷰, 텍스트 박스, 아이콘 등)

Package Manager

디바이스 내에 안드로이드 앱들을 관리하는 모듈.

응용간에 협력이 필요할 때 Package Manager가 제공해주는 기능을 사용하게 된다.

Window Manager

Notification BAR, Main Window, Menu & Dialog 같은 서브 윈도우를 처리해주는 모듈

C. 안드로이드 런타임

Core Java 라이브러리

안드로이드 앱을 개발하기 위한 빌딩블록을 제공해주는 라이브러리


  • 일반적인 자바 클래스들은 : java.*

  • 안드로이드 라이프사이클 관련은 : android.*

  • 인터넷/웹 서비스는 : org.*

  • 유닛 테스팅 : junit.*

Dalvik Virtual Machine

안드로이드 앱은 Dalvik Virtual Machine에 의해서 수행된다. Dalvik Virtual Machine은 모바일 디바이스의 리소스 제약사항 (낮은 CPU, 작은 메모리 등)에 맞게 개발된 java 런타임이다. Dalvik Virtual Machine에 대해서 상세한 내용은 아래 유투브 동영상 확인하자.




아래는 Dalvik Virtual Machine이 안드로이드 앱을 실행시키는 일반적인 흐름이다. 아주 명확한 그림이 있어서 여기 첨부한다.



  1. Java 언어를 이용해서 앱을 개발한다.

  2. javac (자바 컴파일러)를 통해서 java bytecode 파일로 변환한다. (JVM에서 구동 가능한 형태다)

  3. DX Converter를 통해 java bytecode 파일들은 하나의 DEX bytecode 파일로 변환한다. (classes.dex)

  4. DEX 파일은 다른 리소스와 함께 (이미지, 데이터파일 등) 앱으로 패키징한다.

  5. Dalvik Virtual Machine을 통해 DEX 파일을 구동한다.

D. 시스템 라이브러리

성능이 중요한 부분으로 C/C++로 구현된다.


  • System C Library : Bionic libc (라이센스 문제로 구글 자체에서 개발)

  • Surface Mgr : 렌더링 관련 작업

  • Media / Audio / Video Framework

  • Webkit : 브라우저 엔진

  • OpenGL

  • SQLite : 관계형 데이터베이스

E. 리눅스커널 (안드로이드 수정 부분 포함)

모바일 디바이스의 한계 (성능, 리소스 문제) 때문에 안드로이드에서 아래와 같은 기능들이 추가되었다.


  • Power Management

  • Android Shared Memory

  • Low memory Killer

  • Interprocess communication (=Binder)

2. 개발환경

앱을 개발하기 위한 라이브러리와 툴들 집합이다. 그리고 엄청난 문서들이 제공되고 있다. 다음 링크를 확인해보자.

A. 다운로드 & 설치하기

아래는 소프트웨어와 하드웨어 제약 & 권장 사항이다.


  • JAVA SDK를 먼저 설치해야 한다. (링크)

  • 2 GB RAM min, 4 GB RAM rec

  • 1 GB+ for Android SDK, emulator system images and caches

  • 400 MB hard disk space

  • 1280 x 800 min screen resolution


다운로드는 여기서 한다. 상세 내용은 다음 비디오를 참고하자.




안드로이드 SDK에 포함된 내용들이다.


  • Android platform

  • Android Studio IDE

  • Key development tools

  • System image for emulator

B. Using the Android Studio IDE




C. 프로젝트 폴더 설명

3. 시리즈 연재

  • [소프트웨어/안드로이드앱] - [안드로이드 기초#1] 플랫폼과 개발환경

  • [소프트웨어/안드로이드앱] - [안드로이드 기초#2] 어플리케이션 기본

  • [소프트웨어/안드로이드앱] - [안드로이드 기초#3] 액티비티 (Activity)

  • [소프트웨어/안드로이드앱] - [안드로이드 기초#4] 인텐트 (Intent)

  • [소프트웨어/안드로이드앱] - [안드로이드 기초#5] 권한 (Permission)

  • [소프트웨어/안드로이드앱] - [안드로이드 기초#6] 프래그먼트 (Fragment)

  • [소프트웨어/안드로이드앱] - [안드로이드 기초#7-1] UI 클래스들

  • [소프트웨어/안드로이드앱] - [안드로이드 기초#7-2] UI 클래스들


반응형
저작자표시 비영리 변경금지

'소프트웨어 > 안드로이드앱' 카테고리의 다른 글

[안드로이드 기초#3] 액티비티 (Activity)  (0) 2015.07.01
[안드로이드 기초#2] 어플리케이션 기본  (0) 2015.06.30
안드로이드 스튜디오의 유용한 단축키  (3) 2015.06.28
안드로이드 스튜디오 샘플코드 임포트  (0) 2015.06.27
안드로이드 코딩 스타일 가이드라인  (1) 2015.06.26
  1. A. 어플리케이션들
  2. B. 어플리케이션 프레임워크
  3. Notification Manager
  4. Location Manager
  5. Activity Manager
  6. Content Provider
  7. Resource Manager
  8. View System
  9. Package Manager
  10. Window Manager
  11. C. 안드로이드 런타임
  12. Core Java 라이브러리
  13. Dalvik Virtual Machine
  14. D. 시스템 라이브러리
  15. E. 리눅스커널 (안드로이드 수정 부분 포함)
  16. A. 다운로드 & 설치하기
  17. B. Using the Android Studio IDE
  18. C. 프로젝트 폴더 설명
'소프트웨어/안드로이드앱' 카테고리의 다른 글
  • [안드로이드 기초#3] 액티비티 (Activity)
  • [안드로이드 기초#2] 어플리케이션 기본
  • 안드로이드 스튜디오의 유용한 단축키
  • 안드로이드 스튜디오 샘플코드 임포트
강에바
강에바
일상/메모
강에바의 이것저것일상/메모
강에바
강에바의 이것저것
강에바
전체
오늘
어제
  • 전체 (79)
    • 소프트웨어 (51)
      • 파이썬 (python) (3)
      • 데브옵스 (DevOps) (0)
      • 리눅스 (4)
      • IDE (2)
      • AI (1)
      • 툴 & 프로파일링 (3)
      • 안드로이드앱 (16)
      • 라즈베리파이2 (5)
      • 모바일웹게임 (6)
      • OTA(on-the-air) (8)
      • 기타 (3)
    • 취미 (17)
      • 여행 (4)
      • 맛집 (6)
      • 자전거 (1)
      • 블로그 (6)
    • 기타 (6)

블로그 메뉴

  • 홈
  • 미디어로그

공지사항

인기 글

태그

  • ROS
  • systemd
  • program_options
  • systemctl
  • ChatGPT
  • ROS2
  • tcmalloc
  • call 그래프
  • 프롬프트 엔지니어링
  • Yocto
  • 안드로이드
  • LLM
  • 편집기
  • pixi.js
  • gperftools
  • Prompt engineering
  • 라즈베리파이2
  • Large Language Model
  • libsystemd
  • gprof

최근 댓글

최근 글

hELLO · Designed By 정상우.
강에바
[안드로이드 기초#1] 플랫폼과 개발환경
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.