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

안드로이드

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

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

개요

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

역사

구성

  • 리눅스 커널(Linux Kernel)
  1. 최하위 계층
  2. 보안, 메모리, 프로세스, 네트워크스택, 드라이버모델과 같은 주요 시스템 서비스를 포함
  • 네이티브 라이브러리(Native Library)
  • 안드로이드 런타임(Android Runtime)
  1. 달빅 가상 머신(Dalvik Virtual Machine)
  2. JIT컴파일러(just in Time, 컴파일러)
  3. ART(Android run Time, 안드로이드 런타임) 처리속도, 배터리 소모량 등의 문제점을 보안한다.
  • 안드로이드 프레임워크(Android Framework)
  1. 액티비티 관리자 : 리사이클을 제어한다.
  2. 내용 제공자 : 데이터 공유를 제공한다.
  3. 리소스 관리자 : 리소스 관리
  4. 위치관리자 : 위치 파악에 필요한 기능을 제공한다.
  5. 알림관리자 : 알람기능을 제공한다.
  • 애플리케이션(Application)
  1. 애플리케이션은 자바로 작성되며 프레임워크의 API를 사용할 수 있다.
  2. 개발자가 개발한 애플리케이션
  3. 주요 애플리케이션의 앱은 이메일, SMS, 지도, 웹브라우저, 연락처 등이 있다.
  • 라이브러리(Libranies)
  1. 커널 바로 위 영역
  2. 코어 라이브러리
  3. C언어나 C++로 구성된 라이브러리로 프레임워크를 통해 사용할 수 있도록 구성이 되었다.

특징

  • 리눅스 커널(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)를 통한 관계형 데이터베이스 라이브러리를 제공한다. 멀티미디어 환경에 걸맞게 동영상, 오디오, 이미지 포맷을 지원한다. 개방형 플랫폼으로 다양한 통신환경을 지원한다. 해외에서 많이 사용되는 통신환경인 와이파이, 블루투스등 비 휴대전화 무선 통신 환경도 지원한다. 그리고 마지막으로 디바이스 에뮬레이터를 이용하여 실제 안드로이드 디바이스가 없어도 개발이 가능하다. 디바이스와 관련된 디버깅 툴 분석 툴 들을 제공하여 애플리케이션 개발시 편리한 환경을 제공해준다는 것들이 있다.[1]

장단점

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

종류

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

개발

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

안드로이드의 취약점

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

버전

안드로이드 10

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

안드로이드 11

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

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

각주

  1. 모빌리티, 〈(안드로이드 #2)안드로이드의 특징 9가지〉, 《티스토리》, 2017-06-06
  2. 준, 〈iPhone과 Android 개발의 장단점〉, 《티스토리》, 2011-01-17
  3. 이안이아빠, 〈한눈에 보는 안드로이드의 역사〉, 《티스토리》, 2020-04-01
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 구글 안드로이드 11 개발자 프리뷰 배포, 주요 특징을 살펴보자〉, 《일분》, 2020-02-20

참고자료

같이 보기


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