검수요청.png검수요청.png

안드로이드

해시넷
elwn123 (토론 | 기여)님의 2020년 8월 12일 (수) 11:41 판 (구성)
이동: 둘러보기, 검색
안드로이드(Android)
안드로이드(Android)

안드로이드(Android)는 2003년 앤디 루빈(Andy Rubin)이 리눅스를 기반으로 만든 오픈소스 운영체제이다. 안드로이드(android)라는 말은 인조인간, 즉 "인간을 닮은 로봇"이라는 뜻이다. 2005년 7월 구글이 안드로이드 회사를 인수하여 전 세계에 무료로 보급하였다. 이때부터 구글 안드로이드(Google Android)라고 불린다. 삼성전자㈜, LG, 화웨이, 샤오미 등 전 세계 스마트폰의 운영체제로 사용되고 있다.

개요

안드로이드는 스마트폰을 비롯한 모바일기기를 위한 운영체제미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램(웹브라우저, 이메일 클라이언트, SMS, MMS) 등을 포함하고 있는 소프트웨어 스택이자 모바일 운영체제이다. 안드로이드는 개발자들이 자바 언어로 응용 프로그램을 작성할 수 있게 하였으며, 컴파일바이트코드를 구동할 수 있는 런타임 라이브러리를 제공한다. 또한 안드로이드 소프트웨어 개발 키트(SDK)를 통해 응용 프로그램을 개발하는 데 필요한 각종 도구와 API를 제공한다.

역사

구성

  • 커널 계층(Kernel Layer): 안드로이드 계층 최하단에 위치 하며, 시스템전체의 중심역할을 한다. 사용자나 개발자가 이쪽 계층에서 작업을 한다거나 상호작용할일은 없다. 커널에서 담당하는 일은 하드웨어 추상화, 메모리 관리, 보안 설정, 전원관리, 다른 하드웨어 장치 드라이버 관리, 네트워크 시스템 관리가 있다. 안드로이드의 버전과 함께 커널의 버전도 업데이트된다.[1]
  • 네이티브 라이브러리 계층(Native Libraries Layer): 안드로이드는 상대적으로 작은 용량의 주기억장치와 저전력의 중앙처리장치(CPU)가 탑재된 기기에서 동작하기 때문에 이러한 기기에 최적화된 원시코드로 컴파일 한다. libc 또는 libm과 같은 기본적인 라이브러리는 특히 메모리 소비가 적기때문에 안드로이드에 적합하다. 이 계층의 서피스 매니저(Surface Manager)는 프레임워크 계층의 윈도우 매니저(Window Manager)의 화면 접근에 대한 처리를 하기도 하고, 미디어 프레임워크(Media Framework)는 오디오 및 비디오 코덱을 포함하며 각종 음악, 동영상, 사진을 포함한 각종 미디어처리를 담당한다. 그 외에도 다양한 오픈소스 라이브러리들을 포함한다.[1]


  • 안드로이드 런타임(Android Runtime): 안드로이드의 런타임을 이해하기위해서는 자바의 가상머신을 알아야한다. 일반적인 컴파일 언어는 중앙처리장치의 아키텍쳐와 플랫폼의 환경에 맞추어 기계어로 컴파일한다. 간단히 말하면, 사람이 작성한 프로그램을 중앙처리장치가 알아들을 수 있는 언어로 바로 번역하여 저장하는 것이다. 이 중앙처리장치간의 서로 다른 언어가 아키텍처에 해당한다고 보면 된다. 그러나 자바의 경우는 기본적으로 한가지 중앙처리장치의 아키텍처나 환경에 맞추는 것이 아닌 바이트코드라는 것으로 컴파일 되며, 이를 실행하기 위해서는 자바 가상 머신이 필요하다. 이렇게 하는 이유는 자바는 바이트코드 하나만으로 여러가지 아키텍처나 플랫폼에서 작동할 수 있도록 하는 것이 목표이기 때문이다. 아키텍처와 플랫폼에 맞는 가상머신만 있다면 하나의 실행파일만 가지고도 각종 장치에서 쓸수 있다.[1]
  • 애플리케이션 프레임워크 계층(Application Framework Layer): 애플리케이션 프레임워크 계층부터는 자바로 작성되며 기본 네이티브 라이브러리와 안드로이드 런타임을 추상화한 계층이다. 안드로이드 애플리케이션은 자체 런타임에서 실행되며 액티브(Active)와 같은 여러 구성 요소로 구성된다. 이러한 컴포넌트는 다른 애플리케이션과 서로 상호작용할 수 있다.[1]
  • 애플리케이션 계층(Applications Layer): 안드로이드 구조 스택(Stack)의 최상위 계층에 있으며, 안드로이드기기를 사용하는 대부분의 사용자가 이 계층과 상호작용한다. 예를 들면, 전화걸기, 웹 브라우저, 카카오톡, 게임 등 개발자는 애플리케이션 프레임워크를 이용하여 애플리케이션을 개발한 다음 배포하여 설치되는 APK가 애플리케이션 계층에 속하게 된다.[1]

특징

  • 리눅스 커널(Linux Kernel)
  • FreeType Font
  • SSL 보안 모듈
  • SQLite 데이터베이스 소프트웨어가 사용됨
  • GSM/EDGE, DBMA, EV-DO, UMTS, 블루투스, 와이파이 등을 포함하는 커넥션 기술 지원
  • SMSMMS 가능
  • H.263, H.264 (3GP 또는 MP4 컨테이너), MPEG-4 SP, AMR, AMR-WB (3GP 컨테이너), AAC, HE-AAC (MP4 또는 3GP 컨테이너), MP3, 미디, OGG Vorbis, WAV, JPEG, PNG, GIF, BMP 등의 오디오/비디오/이미지 포맷 지원
  • iOS의 앱 스토어와 유사한 구글 플레이에서 PC 사용 없이 무선으로 대상 하드웨어로 다운로드와 설치가 가능한 응용 프로그램 목록 제공
  • 멀티터치 제공
  • 애플리케이션 프레임워크 제공
  • Dalvik VM을 사용해 앱마다 고유의 가상머신(VM) 할당
  • 잘 만들어진 개발 툴과 API 라이브러리 – SDK 지속적인 업데이트
  • 이클립스(Eclipse) IDE와 Android Development Toolkit (ADT) 플러그인 등 안정된 통합개발환경(IDE)을 제공
  • JAVA 언어
  • 그래픽 최적화
  • 카메라, GPS, compass, G-sensor 지원

안드로이드 특징에는 애플리케이션 프레임워크(Application Framework)로 사용자가 개발에 사용할 다양하며 확장 가능한 컴포넌트를 제공해준다. 이것은 사용자가 화면을 구성할때, 복잡한 기능을 구현할때 편리하게 구현이 가능하도록 도와준다. 달빅 가상머신(Dalvik Virtual Machine)은 자바 가상머신과 유사한 가상머신으로 안드로이드 애플리케이션을 실행하기 위한 레지스터 머신형태의 가상 머신이다. 모바일 플랫폼과 같은 작은 메모리 요구 사양에서도 무리없이 동작하도록 최적화 되어있으며 하나의 장치에서 여러 가상머신 인스턴스가 동작하도록 설계되어 있다. 오픈소스(OpenSource)인 웹킷엔진(WebkitEngine)을 기본적으로 가지고 있어서 웹브라우저 애플리케이션에서 통합브라우저를 사용한다. 사용자 인터페이스 제공을 위한 프레임워크를 지원한다. 다양한 그래픽 표현을 위한 투디/쓰리디(2D/3D) 라이브러리를 제공한다. 효율적인 데이터 저장이나 검색이 가능하도록 에스큐엘라이트(SQLite)를 통한 관계형 데이터베이스 라이브러리를 제공한다. 멀티미디어 환경에 걸맞게 동영상, 오디오, 이미지 포맷을 지원한다. 개방형 플랫폼으로 다양한 통신환경을 지원한다. 해외에서 많이 사용되는 통신환경인 와이파이, 블루투스등 비 휴대전화 무선 통신 환경도 지원한다. 그리고 마지막으로 디바이스 에뮬레이터를 이용하여 실제 안드로이드 디바이스가 없어도 개발이 가능하다. 디바이스와 관련된 디버깅 툴 분석 툴 들을 제공하여 애플리케이션 개발시 편리한 환경을 제공해준다는 것들이 있다.[2]

장단점

안드로이드의 장점으로는 개발자의 입장에서 전세계에서 가장 많이 쓰는 자바를 채택함으로서 자바를 개발하던 개발자들이 안드로이드의 개발 환경에 관심을 가지게한다. 또한 안드로이드 개발환경은 PC를 가지고 있다면 모두 공짜다. 개발자 등록비용이 1년에 99달러인 아이폰의 경우와 달리 안드로이드 개발자 등록 비용은 단지 25달러이며 그것도 1회만 등록하면 더이상의 비용은 필요없다. 단점으로는 플랫폼의 통일화가 불가능하다는 점에서 모든 단점이 발생한다. 플랫폼이 다 다르기 때문에 native code 상의 하드웨어적 접근은 불가하다. 대신 달빅(Dalvic)이라는 JVM같은 가상 머신을 둬서 이를 극복했다. 하지만 이 때문에 속도에 민감한 스마트폰에 치명적인 결과를 초래하였다. 또 다른 단점은 안정단계에 들어선 아이오에스(IOS)와 달리 안드로이드는 많은 문제점을 가지고 있다. 또한 버전별, 제조사 별로 호환되지 않는 애플리케이션이 존재하며 이는 사용자들에게 혼란을 준다. 안드로이드의 개발 환경구축은 아이폰보다 복잡하다.[3]

종류

안드로이드는 다양한 버전으로 출시되기 시작했으며 구글에서 안드로이드의 레퍼런스를 잡아주는 레퍼런스 폰을 출시하였다. 처음에 출시된 레퍼런스 폰은 넥서스 원이라는 스마트폰이다. HTC와 함께 만든 제품이며 안드로이드 2.1버전이 만들어졌다. 안드로이드는 버전마다 디저트의 이름이 붙어있다. 안드로이드 운영체제의 버전을 확인하는 창에서 확인할수 있다.

개발

안드로이드는 6개월 ~ 12개월에 한번씩 업데이트가 진행되고 구글에서 계속 개발 중이며, 안드로이드 업데이트는 새로운 기능 추가나 오류를 수정할 때 구성이 된다. 오픈소스는 안드로이드 오픈소스 프로젝트에서 사용 가능하다.

안드로이드의 취약점

보안 수준을 선택할 수 있지만, 자유로운 운영체제이기 때문에 각종 바이러스와 악성코드에 취약하다. 이로 인해 백신이 보급되고있다.

버전

안드로이드 10

안드로이드 10은 2019년 9월에 나왔다. 디저트 이름 대신 간단한 번호로 이름을 붙인 첫 번째 버전이다. 안드로이드 10 버전에서 구글은 안드로이드 제스처 인터페이스를 완전하게 뜯어고쳤다. 탭할 수 있는 뒤로 버튼을 빼고 스와이프 방식의 시스템 네비게이션을 적용했다. 내부를 들여다보면 안드로이드 10에는 핫픽스 스타일 업데이트를 위한 새로운 설정 기능이 들어갔다. 이를 이용하면 더 작은 규모의 문제를 수정하는 패치를 더 빠르고 지속적으로 내놓을 수 있다. 이는 소프트웨어 자체적으로도 중요한 개선이다. 예를들면 개선된 승인 시스템 덕분에 애플리케이션이 언제 어떻게 위치 데이터에 액세스(Access)하는지를 더 정확하게 사용자가 제어할 수 있다. 기기의 작동 내역을 추적하는 데 사용할 수 있어 특정 기기 사용자를 보호하는 것도 가능하다. 이외에도 안드로이드 10에는 다양한 개선사항이 추가됐다. 시스템 전반에 걸친 다크 테마와 화면 위 버튼을 탭하는것으로 산만하게 하는 애플리케이션의 방해를 최소화하는 포커스 모드(Focus Mode), 오랫동안 미뤄왔던 공유 메뉴 등이다. 새로운 라이브 캡션(Live Caption) 기능을 지원하기 위한 기반도 추가됐다. 이를 이용하면 비디오, 팟캐스트는 물론 일반적인 음성 녹음까지 휴대폰에서 재생되는 모든 미디어에 대한 캡션을 생성한다. 단 이 기능을 소프트웨어 공개 시점에서 당장 사용할 수는 없다.[4]

안드로이드 11

안드로이드 11에서는 개인정보 보호 및 보안을 최우선으로 유지하면서 사용자가 최신 혁신을 활용할 수 있도록 집중하고 사용자가 중요한 데이터 및 파일에 대한 액세스를 관리할 수 있도록 여러가지 새로운 기능을 추가했다. 특히 개발자들에게 폴더 및 5G 개선, 통화 차단 API, 새로운 미디어 및 카메라 기능, 머신 러닝 등과 같은 애플리케이션을 위한 수많은 새로운 기능을 제공한다.[5]

  • 5G 경험: 5G 이동통신은 전세계 더 많은 사용자에게 지속적으로 빠른 속도와 낮은 대기 시간을 제공한다. 5G를 사용하면 4K 비디오 스트리밍 또는 고해상도 게임 자산 로딩 같은 와이파이 애플리케이션 경험을 모바일 사용자에게 확장하거나 특별히 설계된 새로운 경험을 구축할 수 있다. 안드로이드 11에서는 기존 연결 API 개선 및 업데이트를 통해 5G의 향상된 속도를 활용할 수 있다.[5]
  • 새로운 스크린 타입: 구글은 안드로이드 9 때부터 디스플레이 컷아웃(cutout) API를 통해 전면 카메라나 센서 등 디스플레이 일부 영역이 가려지는 경우에 대한 애플리케이션 최적화를 지원했다. 안드로이드 11에서는 기존 디스플레이 컷아웃 API를 사용해 핀홀(Pinhole) 및 워터폴(Waterfall) 스크린 화면을 관리할 수 있으며, 원하는 경우 새 API를 사용해 애플리케이션이 가장자리를 포함한 전체 워터폴 화면의 상호 작용을 관리할 수 있다.[5]
  • 사람과 대화: 스마트폰에서 가장 중요한 일은 친구 및 동료와 대화하는 것으로, 안드로이드 11에서는 개발자가 더 깊은 대화 경험을 만드는데 도움이 되는 변경사항으르 도입했다. 그 중 몇가지는 디피1(개발자프리뷰1) 초기 버전이다. 알림창 전용 대화 섹션을 통해 사용자는 즐겨 쓰는 애플리케이션에서 사람들과 진행중인 대화를 즉시 찾을 수 있다. 버블(Bubbles)은 스마트폰에서 멀티태스킹을 하면서 대화를 보고 액세스 할 수 있는 방법이다. 메시지 및 채팅 애플리케이션은 알림에서 버블 API를 사용해 안드로이드 11에서 이것을 활성화해야 한다. 안드로이드 11에는 알림 답장에 이미지 삽입 기능이 들어간다. 애플리케이션에서 이미지 복사/붙여넣기를 지원하는 경우 알림 창에 있는 인라인 회신에 직접 이미지를 삽입해 보다 풍부한 커뮤니케이션이 가능하게 만들어준다.[5]
  • 신경망 API 1.3: 신경망 API는 안드로이드 장치에서 머신 러닝(machine learning)을 위해 계산 집약적인 작업을 실행하도록 설계됐다. 안드로이드 11에서는 개발자가 사용할 수 있는 작업 및 제어 기능을 확장하고 있으며, 이 버전에서는 일반적인 사용 사례를 최적화하는데 도움이 되는 새로운 작업 및 실행 컨트롤이 추가됐다. 구글은 API 1.3에 대한 지원을 최적화하고 출시하기 위해 하드웨어 공급업체 및 텐서플로우와 같은 널리 사용되는 머신 러닝 프레임워크와 협력하고 있다.[5]
  • 개인정보 및 보안: 안드로이드 11에서는 새로운 권한 옵션, 범위가 지정된 스토리지 업데이트 등을 통해 사용자 개인 정보 보호에 주력한다. 일회성 권한(One-time permission)은 위치 정보 뿐만 아니라 장치 마이크 및 카메라에 대한 가장 민감한 유형의 데이터에 대해 사용자가 일회성 권한을 통해 임시 액세스 권한을 부여할 수 있다. 범위지정 스토리지(Scoped Storage)는 외부 스토리지에서 애플리케이션 및 사용자 데이터를 보다 효과적으로 보호하기 위한 노력의 일환이다. 보안 쪽에서는 광범위한 장치의 요구를 충족시키기 위해 생체인식 지원을 확장했다.[5]
  • 업데이트 및 호환성: 주요 특징으로는 안드로이드 장치의 중요한 개인정보 보호 제어에 대한 사용자 및 개발자의 액세스를 표준화하는 권한 모듈, 범위지정 스토리지 관련 개인정보 보호 노력에 필수적인 미디어 제공 업체 모듈 및 성능을 최적화하고 전체적으로 일관된 API를 보장하는 NNAPI 모듈이 있다. 애플리케이션 호환성 부문에서도 안드로이드 11에서는 플랫폼 업데이트 영향을 최소화하기 위해 새로운 프로세스, 개발자 도구 및 출시 이정표를 추가했다. 안드로이드 개발 정책을 바꾸면 운영체제가 더 유용하고 안전하며 성능이 향상될 수 있지만, 이러한 변경 중 일부는 개발자 앱에 영향을 줄 수 있기 때문에 가능하면 애플리케이션에 영향을 줄 수 있는 동작 변경을 최소화하기 위해 노력을 기울였다.[5]
  • 카메라: 카메라 촬영시 음소거 기능이 추가되어 애플리케이션이 새로운 API를 사용하여 세션이 활성화된 동안 벨소리, 알람 또는 알람 진동 등의 방해요소가 영향을 주지 않도록 끌 수 있다. 보케 모드(Bokeh modes)는 메타 데이터 태그를 사용해 이를 지원하는 장치의 카메라 캡처 요청으로 활성화 할 수 있다. 사진 촬영은 최고 품질 캡처를 제공하는 반면 연속 모드는 미디오 촬영과 같은 센서 출력을 유지한다.[5]

각주

  1. 1.0 1.1 1.2 1.3 1.4 Charlezz, 〈안드로이드의 구조〉, 《찰스의 안드로이드》, 2018-10-11
  2. 모빌리티, 〈(안드로이드 #2)안드로이드의 특징 9가지〉, 《티스토리》, 2017-06-06
  3. 준, 〈iPhone과 Android 개발의 장단점〉, 《티스토리》, 2011-01-17
  4. 이안이아빠, 〈한눈에 보는 안드로이드의 역사〉, 《티스토리》, 2020-04-01
  5. 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 구글 안드로이드 11 개발자 프리뷰 배포, 주요 특징을 살펴보자〉, 《일분》, 2020-02-20

참고자료

같이 보기


  검수요청.png검수요청.png 이 안드로이드 문서는 소프트웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.