Android

[Android 1-1] 안드로이드 소개

연나연 2024. 1. 16. 09:34

안드로이드 소개

- 구글이 제작한 스마트폰 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 : 프로젝트를 컴파일하고 실행파일로 만들기 위한 설정 파일 형식