안드로이드 스튜디오

아사비치즈스틱·2021년 7월 27일
0


1-1. 스마트폰 운영체제

  • 스마트폰에는 각기 다른 운영체제(OS)가 있으며 주로 안드로이드 진형과 IOS진형으로 구분됩니다.

  • (2021년 7월 기준) 안드로이드 OS는 72.83%, IOS OS는 26.35%의 점유률을 보여줍니다.

  • 안드로이드의 주요 개발 언어로는 Java와 Kotlin이 있으며 ios의 개발 언어로는 Object C가 있습니다.

  • 다음은 2021년 7월 기준 전세계 스마트폰 OS 점유률입니다.


1-2. 안드로이드 OS에 대하여

  • 안드로이드는 2005년 구글에서 인수한 이후 2007년 11월 안드로이드를 무료로 공개한다고 선언하였습니다.

  • 안드로이드 OS는 2008년 9월 20일 최초로 출시되었습니다.

안드로이드 버전

  • 안드로이드는 10버전 이전까지 캔디 또는 과자 등 디저트 이름을 주로 사용하였습니다.

  • 그러나 10버전부터는 기존 네이밍 규칙과 다르게 Android Studio 10을 공식적으로 사용하였으며 현재 Android Studio 11버전까지 출시되었습니다.

  • 자세한 버전별 네이밍 이름은 다음의 안드로이드 공식 사이트를 통해 확인할 수 있습니다.

    안드로이드 스튜디오 버전별 네이밍


1-3. 안드로이드의 구조

  • 안드로이드의 구조는 응용 프로그램, 응용 프로그램 프레임 워크, 안드로이드 런타임, 라이브러리,리눅스 커널로 구분됩니다.

1. 응용프로그램

  • 일반적으로 안드로이드 OS 스마트폰에서 사용할 수 있는 어플리케이션입니다.
  • 웹 브라우저, 연락처 등이 여기에 속합니다.

2.응용 프로그램 프레임 워크

  • 안드로이드 API가 존재하는 곳입니다. 어플리케이션은 API를 통해 커널에 접근할 수 있습니다.
  • 안드로이드 OS의 스마트폰 하드웨어를 접근할 때 Java로 직접 접근하는 것이 아닌 API를 통해서만 접근이 가능합니다.
API란?
- 애플리케이션 프로그래밍 인터페이스 (Application Programming Interface)
- 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 의미합니다.

ex) open API, 공공 API

3. 안드로이드 런타임

  • java코어 라이브러리와 달빅 가상머신 또는 아트 런타임으로 구성되어 있습니다.

  • java 가상머신(JVM:Java Virtual Machine)을 사용하지 않고 모바일 환경에 최적화된 달빅 가상머신이나 아트 런타임을 사용합니다.

런타임이란?
- 애플리케이션을 관리하기 위해 특정한 컴파일러나 가상머신이 사용하는 기본 코드 라이브러리 또는 애플리케이션이 실행되고 있는 동안의 동작을 의미합니다.

달빅 가상머신이란?
- 레지스터 머신 형태의 가상머신입니다.
- 적은 메모리 요구사항에 최적화되어 있으며 자바 바이트 코드를 사용하지 않아 자바 가상 머신과 다릅니다.

아트 런타임이란?
- 안드로이드 운영체제 아래 만들어진 런타임 환경의 VM(Virtual Machine)입니다.
- 애플리케이션의 바이트 코드를 네이티브 명령어로 변환을 수행한 후 나중에 장치의 런타임 환경에 의해 실행됩니다.


4. 라이브러리

  • 소프트웨어를 개발할 때 필요한 자원(미리 작성된 코드, 서브루틴(함수), 클래스 등)들의 모임입니다.

  • 반복적인 코드 작성을 없애기 위해 필요한 곳에서 언제든지 호출할 수 있도록 클래스나 함수로 미리 만들어진 것입니다.

5.리눅스 커널

  • 하드웨어 운영과 관련된 저수준의 관리 기능이 들어 있고 주로 메모리 관리, 디바이스 드라이버, 보안 등을 관리합니다.

  • 리눅스는 오픈 소스라는 장점이 있으며 카메라, GPS등 많은 스마트폰 장치를 지원합니다.

커널이란?
- OS의 핵심으로 컴퓨터 자원을 관리합니다.
- 보안, 추상화 자원을 관리합니다.

1-4. 안드로이드의 개발환경

  • 안드로이드의 개발환경은 JDK, 안드로이드 SDK, 안드로이드 스튜디오, ADT로 구분됩니다.

1.JDK(Java Development Kit)

  • Android Studio 2.2 버전부터는 Open JDK가 내장되어 있어 JDK를 별도로 설치하지 않아도 됩니다.

2.안드로이드 SDK(Android Studio Software Development Kit)

  • 안드로이드 소프트웨어를 개발하기 위한 툴 킷을 의미합니다.
  • 모든 API가 들어 있지 않기에 추가로 API를 다운로드하여 사용할 수 있습니다.

3.Android Studio

  • 개발을 위한 안드로이드 스튜디오 IDE(Integrated Development Enviornment)입니다.

4.ADT(Android Development Tools)

  • 이클립스 또는 안드로이드 SDK, 안드로이드 AVD(Android Virtual Device:안드로이드 에뮬레이터)를 연결시키는 프로그램입니다.

  • 안드로이드 개발은 위의 사진과 동일하게 응용 프로그램 개발, 시스템 응용 프로그램 개발,하드웨어 및 커널 개발단계로 구분됩니다.

  • 응용프로그램 단계에서는 Java를 주로 사용하며 시스템 응용 및 하드웨어,커널 제어 개발 단계에서는 C, C++를 사용합니다.


참고 자료

1-2. 안드로이드 OS에 대하여

위키피디아 안드로이드 운영체제

1-3. 안드로이드의 구조

위키피디아 API
위키피디아 달빅 (소프트웨어)
레지스터 기반 vs 스택 기반 vm 정리글

  • 스택 기반 vm (java 가상 머신)과 레지스터 기반 vm(달빅 가상 머신)을 더 알고 싶으시다면 해당 블로그를 방문하는 것을 추천합니다.

안드로이드 런타임 정리글

  • 안드로이드 런타임에 대하여 더 알고 싶으시다면 해당 블로그를 방문하는 것을 추천합니다.

위키 피디아 라이브러리
위키피디아 커널

1-4. 안드로이드의 개발환경

안드로이드 개발 환경 종류 정리글

profile
달리는 개발자

0개의 댓글