- 구글이 제작한 스마트폰 OS - 2008년 발표 - 운영체제와 미들웨어, 주요 애플리케이션을 포함 - 현재 Java, Kotlin 둘 다 지원하고 있다.
◇ 아이폰같은 경우, 출시하자마자 거의 성공했음. 그 이유는 1. 아이팟으로 이미 익숙한 단말기였기에(아이팟 + 전화기능) 2. 이미 나와있는 콘텐츠가 많았음. 아이폰이 전 세계 스마트폰 시장 장악하는데 2-3달 밖에 걸리지 않았음 다른 단말기 회사들도 출시하고자 하였지만 사용가능한 os가 없었음. 그때 당시 안드로이드 기능은 쓰레기였다만,, 당장 사용가능한 건 그 뿐이었기에 (발등에 불 떨어진 타회사들 입장에선 새로 만드려면 걸리는 시간,비용이 부담) 오픈소스로 공개되어 있는 안드로이드를 사용하게 됨. 단말기제조사들이 함께 개발하여 안드로이드가 많이 성장함. 오픈소스가 기업입장에서 전혀 손해가 아니라는 것 ! 막대한 인력,비용,시간을 오히려 줄일 수 있게 됨. 오픈소스는 굉장히 훌륭한 생태계라고 볼 수 있음. ◇ 출시하고 처음 5년간은 쓸 수 있는 os가 아니였다만 오픈소스 정책 덕분에 2013년쯤엔 제대로된 os를 갖추게 됨.
안드로이드 특징
- 애플리케이션 프레임워크 - ART 가상 머신 - OPEN GL ES 3.x 기반 3D 그래픽 지원 - SQLite 데이터 베이스 - 다양한 미디어 지원 - Android Studio IDE 제공 - 센서 등 다양한 하드웨어 지원
◇ Dalvik 이 ART 가 되었음 (가상머신) Dalvik -> JVM : 실행시 실시간으로 기계어로 번역하면서 실행되는 구조. ART -> 설치시 기계어로 번역해놓고 실행시 기계어코드가 실행된다. / 덕분에 안드로이드 속도가 매우 빨라짐
안드로이드 구조
▶ 리눅스 커널 : Android는 리눅스 커널을 사용 (애플은 유닉스 커널을 사용) ▶ HAL : 리눅스 커널과 하드웨어 기기간의 인터페이스 부분으로 단말기 제조사가 드라이버를 구현할 수 있도록 제공되는 계층 (하드웨어 영역은 단말기 제조사가, os 영역은 구글에서 만든다. HAL은 하드웨어를 os에 연동시키기 위해 하드웨어에 요구하는 부분. 즉, 하드웨어 만든 개발사가 os하고 연동될 수 있도록 주고받을 수 있도록 맞추는 부분) ▶ Android 런타임 : 안드로이드 애플리케이션을 구동하기 위한 가상머신. 5.0 이상은 ART를 사용한다. (안드로이드 구조상 스마트폰 뿐만 아니라 전기가 공급되는 모든 전자장치에 설치될 수 있도록 설계되어있음. 가상머신이 ART라는 것만 알아두자.) ▶ Native C/C++ : 안드로이드 OS가 애플리케이션 및 기능들을 구동하기 위해 사용하는 라이브러리. 개발자가 Java나 Kotlin으로 만들어진 API를 이용하면 여기에 구현되어 있는 C 코드가 동작하게 된다. ▶ Java/Kotlin API : 개발자가 애플리케이션을 제작할 때 사용하는 라이브러리 (우리가 이걸 가지고 개발을 하는 겁니다 !) ▶ 시스템 앱 : OS 내부에 내장되어 있는 애플리케이션으로 개발자가 애플리케이션을 개발할 때 일부 기능을 가져다 사용할 수 있다.
Android X 라이브러리
▶ 안드로이드는 지속적인 버전 업데이트를 통해 많은 변화를 이루었다. 이에 하위 버전의 OS와 상위 버전의 OS간의 차이가 심하게 나타난다. 이에 상위 버전에 추가된 기능 중 일부를 하위 버전에서도 사용할 수 있도록 라이브러리가 애플리케이션에 추가되는 데 이를 Support 라이브러리라고 부른다. 그런데 이 라이브러리도 버전 별로 너무 많이 나눠지게 되어 안드로이드 10 버전 부터는 Android X 라는 이름의 라이 브러리로 통합되었다. 이와같이 많은 버전이 있음. 인공지능은 OS버전 10부터 가능함.
▶ Name : 애플리케이션 이름. 아이콘 하단에 표시가 된다(아이콘 표시 하단에 표시되는 이름은 수정이 가능하다). 중복 이름으로 해 된다. ▶ Package Name : 애플리케이션 패지지 이름. 단말기 및 스토어에서 어플 구분하기 위한 이름. 절대로 중복되면 안된다. 회사 도메인(뒤집은 것) + 어플이름. 수정불가 (예: kr.co.lion.appname) ▶ Save location : 프로젝트가 저장될 경로. 한글이 포함되면 안된다. ▶ Language : 개발 언어. ▶ Kotlin or Java Minimun SDK : 애플리케이션 지원 최소 버전. 설정된 버전 이상의 단말기를 대상으로 서비스가 가능하다. 설정된 버전 이하의 모든 API 를 사용할 수 있으며 초과 버전의 대부분의 기능을 사용할 수 있 지만 일부는 사용할 수 없을 수도 있으며 버전별로 분기해야 할 수도 있다. ▶ Build configuration language : 프로젝트를 컴파일하고 실행파일로 만들기 위한 설정 파일 형식