0️⃣ 안드로이드를 사용해본 사람으로서...
지금이야 아이폰을 쓰고 있지만 사실 안드로이드 휴대폰을 사용한지 정말 오래됐다. 10년 넘게 사용하던 Android를 바꾸게 된 계기는 정말 의아하게도 아이패드와의 연동성 때문이었는데 iCloud의 편리함에 깜빡 속아 넘어가게 된 것이다...
아이폰이 갤럭시보다 더 예쁘다, 성능이 좋다 등등의 말들은 제법 많이 들어봤을 것이다. 예쁜 것은 주관적인 것이고 성능은 분명 수치에 기반한 말일테니 철썩 같이 믿고 아이폰을 처음 사용 했을 때의 실망감은 이로 말할 수 없을 것이다. 버그가 나고 렉이 걸리는 부분이 갤럭시와 조금 다를 뿐이지 아이폰이라고 버그가 없는 게 아니었기 때문이다. 그러면서 점점 느끼게 된 점은 '아하, Android나 iOS나 사용자 입장에선 크게 다를 바가 없구나.' 였다.
그렇다면 지금 내가 여기서 이야기 하고 있는 Android는 도대체 무엇일까?
1️⃣ Android란?
Android는 휴대전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램을 포함하고 있는 모바일 운영 체제이자 모바일 플랫폼이다.
모바일 하드웨어 자원을 직접 제어하고 관리하며 모바일 앱(응용 소프트웨어)을 실행하기 위한 플랫폼을 제공하는 것이다. 한마디로 그냥 작은 컴퓨터인데 다만 그 디바이스가 PC에만 국한된 것 아닐 뿐이다. 운영체제에 대한 자세한 설명은 아래 링크에서 확인해보자.
[얼레벌레 공부하는 CS] 운영체제
0️⃣ 운영체제란?운영체제는 OS라고 부르기도 하는데, 이는 Operating System의 약칭이다. 컴퓨터 시스템의 핵심 소프트웨어로 현존하는 프로그램 중에서 가장 규모가 큰 프로그램 중 하나다. 사용
kkevido.tistory.com
아무튼, 운영체제이자 플랫폼이라고 하니 더 헷갈리는데 이는 의미에 따라 같을 수도 다를 수도 있다.
운영체제의 대표적인 예시로는 보통 리눅스와 윈도우 등이 언급되는데 안드로이드 같은 경우엔 넓은 의미에서는 운영체제로 볼 수 있지만 좁은 의미에서 보면 리눅스 기반의 운영체제라고 볼 수 있다. 커널이 리눅스로 되어있기 때문이다.
또한, 안드로이드의 여러 구성요소를 포함하면 다양한 환경에 적용 가능한 플랫폼이 된다. 스마트폰이 아닌 다른 디바이스에서도 활용 가능하다. 이러한 특징 덕분에 안드로이드는 모바일, PC, 타블렛을 모두 통틀어도 점유율이 1등이다.
2️⃣ Android 특징
- 오픈소스: 안드로이드는 아파치 2.0 라이선스를 사용하는 오픈 소스 소프트웨어로서, 개발자들이 소스 코드에 접근하여 이를 수정하고 배포할 수 있게 한다. 모바일 뿐만 아니라 다양한 임베디드 디바이스에서도 안드로이드를 많이 사용하기 때문에 이는 매우 큰 장점으로 다가온다.
- 다양한 하드웨어 지원: 다양한 하드웨어 플랫폼을 지원하기 때문에 제조업체 측에서도 다양한 종류의 기기를 출시할 수 있고 이는 곧 소비자에게 다양한 선택지를 제공하게 된다. 이는 안드로이드가 리눅스 기반의 OS이기 때문에 가능한 것이다.
- 구글 서비스와의 통합: 안드로이드는 구글이 2005년 인수하고 2008년 오픈 소스를 공개한 이후로 구글의 다양한 서비스와 (구글 플레이 스토어, 파이어베이스 등) 밀접하게 통합되어 있다.
구분 | iOS | Android |
개발언어 | Swift, Objective-C | Java, Kotlin |
개발OS | macOS | Window, macOS, Linux |
개발도구 | XCode | Android Studio, Eclipse 등 |
제조사 및 스토어 | 단일 제조사(애플), 단일 앱스토어 (앱스토어) | 다중 제조사, 다중 앱스토어 (구글 플레이 스토어 등) |
iOS와 비교한 Android 특징은 위 표와 같다.
3️⃣ Android 구조
- System Apps: 처음부터 깔려있는 기본 앱을 일컫는다. 주소록, 캘린더, SMS 문자 등 기본 앱이다.
- JavaAPI Framework: AndroidOS의 전체기능 세트는 Java언어로 작성된 API를 통해 접근 가능하다. 앱 UI를 빌드하거나 앱 수명주기를 관리하고 서로 다른 앱간의 데이터를 공유하는 등의 기능을 지원한다.
- Native C/C++ Libraries & Android Runtime: 기본적으로 하드웨어를 제어하기 위해선 C/C++ 언어로 작성된 네이티브 라이브러리에 접근해야한다. 하지만 제조사마다 서로 다른 하드웨어를 사용하기 때문에 이러한 환경에서도 동일한 프로그램이 실행되도록 보장해준다.
- HAL (Hardware Abstraction Layer): 하드웨어 추상화 영역으로, 서로 다른 하드웨어를 동일한 방식으로 접근할 수 있도록 제공되는 호환 인터페이스 레이어다. 카메라, 블루투스 등 공통 요소에 대한 연결을 보장한다.
- Linux Kernel: 우리가 일반적으로 생각하는 OS의 영역이다. 전원관리, 스레드, 보안 등 소프트웨어가 기본적으로 구동하고 사용할 수 있도록 만든다.
❗ 출처
https://ko.wikipedia.org/wiki/안드로이드_(운영체제)
안드로이드 (운영체제) - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 안드로이드(영어: Android)는 스마트폰, 태블릿 PC 같은 터치스크린 모바일 장치 용으로 디자인된 운영 체제이자 수정된 리눅스 커널 버전을 비롯한 오픈 소스 소
ko.wikipedia.org
https://dinfree.com/lecture/android/android_1.1.html
안드로이드 기초
안드로이드 운영체제에 대한 기본 개념과 동작구조 개발 절차 등을 살펴 봅니다.
dinfree.com
'Android' 카테고리의 다른 글
Android의 4대 구성요소 알아보기 (0) | 2024.08.14 |
---|---|
Android에서 Fragment와 TabLayout, 그리고 RecyclerView 적용하기 (0) | 2024.08.05 |
Android에서 Lottie Animation 적용하기 (0) | 2024.07.04 |
Android에서 원형 ImageView 만들기 (2) | 2024.07.04 |
HTML과 XML 의 차이 (2) | 2024.05.30 |