|
안드로이드(Android 운영체제)
Android는 Linux 커널을 기반으로 Google에서 제작하고 있는 범용 모바일 운영 체제와 미들웨어 및 중요 애플리케이션이 포함된 소프트웨어이다. Google은 새로운 운영 체제의 버전 공개와 동시에 소스를 공개하고 있다. 이렇게 공개된 소스를 AOSP라고 한다.
의외로 많이들 지나치는 사실이지만 원래는 구글에서 개발한 운영체제가 아니다. 앤디 루빈이 설립한 Android Inc.에서 개발했으며 이후 Google이 이 회사를 인수하여 구글에서 개발을 하고 있다.
Android는 세계에서 가장 대표적인 오픈 소스 플랫폼이며 세계 최다 사용자를 보유한 모바일 운영 체제다. 소스코드 공식 사이트 2008년에 1.0 버전이 첫 등장했다.
개방성과 범용성이 뛰어나 여러 플랫폼으로 이식 및 개발이 가능하다.
2021년 기준 Android (72.20%)와 iOS 점유율 (26.99%)을 합치면 99.18%이다. 스마트폰 OS 점유율 3위였던 Windows Phone의 점유율조차 0.02%까지 떨어 져서 결국 Microsoft에서도 모바일 운영 체제 시장 포기를 선언하였고 모바일 OS 시장은 Android와 iOS로 정리되었다. iOS는 Apple 전용 운영 체제이고 KaiOS는 피쳐폰 전용 OS니 사실상 아이폰을 제외한 시장에 출시된 모든 스마트폰에 탑재되어 있는 셈이다. 자세한 내용은 운영체제/점유율 문서를 참조.
기본적으로 오픈소스 기반 무료 운영체제지만, 안드로이드는 구글이 가진 가장 큰 무기 중 하나이다. 안드로이드 덕분에 모바일 기기 제조사와 이동통신사들을 상대로 우위를 점할 수 있게 되었으며 구글 플레이, 구글검색, 유튜브 등 자사 앱을 기본 앱으로 의무 채택하여 광고수익을 늘릴 수 있는 기반이 되었다.
커널부터 시작해서 SDK(Software Development Kit, 소프트웨어 개발 툴)까지 몽땅 다 무료로 풀려 있으며 프로그램을 만들어서 실제 폰과 비슷한 환경에서 돌려볼 수 있는 에뮬레이터 (AVD - Android Virtual Device)도 당연히 공개되어 있다. 자신이 타겟 플랫폼의 H/W 구조를 다 이해하고 있고 관련 프로그래밍이 가능하고 개발 툴을 가지고 있다는 전제하에 원한다면 Android를 포팅 가능한 핸드폰을 한 대 구입해서 내부를 통째로 뜯어고쳐 완벽하게 자신만의 단말기를 만들어 버리는 것도 가능하다. 다만 일부 기종을 제외한 피처폰들은 Android의 커널을 구성하는 Linux 커널을 구동시키기 위한 최소한의 하드웨어 사양을 충족하지 못하므로 Android 구동은 어렵다.
기본적으로는 ARM 프로세서로 포팅되어 있으며 MIPS, Power Architecture, x86-64로도 포팅이 되어 있다. 지원하는 언어는 커널 쪽은 C, 몇몇 라이브러리는 C++, 그리고 UI 및 응용 소프트웨어는 Java로 되어있다. 가상 머신은 Java VM이 아니라 자체 개발한 Dalvik VM을 사용한다. 이후 4.4에서 ART가 개발자용으로 탑재되었고 AOSP 4.4 ART 기본값 기사 5.0에서는 기본으로 사용하도록 하여 Dalvik을 완전히 대체하였다.
Linux 커널을 기반으로 한 OS이고 Java 가상 머신을 사용하여 성능은 좀 떨어질지라도 호환성 하나는 막강하여 ARM 코어 프로세서뿐만 아니라 다른 플랫폼으로도 포팅이 가능해 스마트폰, PMP는 물론이고 태블릿 컴퓨터, 텔레비전 심지어 PC에도 포팅이 가능하다. 하지만 Google Android 인증 조건에 터치스크린, GPS, 카메라 등의 조건이 반드시 필요하기 때문에 사실상 스마트폰이나 일부 태블릿 컴퓨터 그리고 디지털 카메라 이외에는 인증을 받기가 어렵다. 사실 Android는 Linux 커널 이외에 다른 커널에서도 동작이 가능하다고 한다. Windows 커널 기반으로 동작하는 Windroye(구 WindowsAndroid)가 있다.
이론상으로는 Android는 Linux 커널 기반이므로 Android 앱을 다른 Linux 계열 운영체제에서 구동할 수 있다. 하지만 Android 앱은 독자적인 포맷 파일(APK)을 사용하고 그 외에도 Android 자체 라이브러리를 사용하므로 구동 불가능하다. 예를 들면 Linux에서는 GUI를 만들기 위해 X11 라이브러리를 사용하지만 Android에서는 이걸 쓰지 않고 자체 GUI 라이브러리를 사용하므로 GUI Linux 프로그램은 Android에서 실행할 수 없다.
초창기의 Android는 디지털 카메라의 운영체제로 개발되고 있었다. 그러다가 iPhone 등 경쟁 스마트폰이 나온 이후 스마트폰 운영체제로 개발 방향을 바꾸게 되었다.
라이선스는 아파치 라이선스 2.0을 사용한다. 단, Linux 커널을 수정한 부분에 대해서는 GPL 2.0이 적용된다.
앱 마켓인 Play Store의 수익구조도 다른데 Apple의 App Store의 경우 앱 구매/인앱 결제 등에서 발생한 수익 중 개발자가 70%를 가져가고 나머지 30%는 Apple과 카드 회사가 반반 나눠 가지게 되지만 Google Play의 경우 개발자가 70%, 나머지 30%는 Google이 아니라 이동통신망사업자가 가져가는 구조였다. 사실 이건 Android, 플레이 스토어의 규모를 고려했을때 Google이 상당한 규모의 이득을 포기해버린 경우인데 이 계획의 파급 효과가 엄청났다. 이러한 정보가 나오자마자 전세계의 주요 통신사들이 앞다투어 Google과 계약하게 된 것. 하지만 2012년도 이후에는 Google Play에 출시하는 앱은 Google 인앱 결제만 허가하고 2013년 6월에는 국내 MNO에 할당하는 수익 비율을 종전 25~27%에서 15%로 대폭 줄이려 한다는 소식이 나왔다.
오픈 소스 OS이긴 하나 Android를 이용해 휴대폰을 만들 시 휴대폰 제조사는 Microsoft에 라이선스 비용을 지불해야 하는 경우가 발생하기도 한다. 이 부분에 대한 자세한 사항은 안드로이드(운영체제)/문제점 특허 문제 부분 참고.
오픈소스로 풀어버린 만큼 많은 제조사들에 의해 오만 가지 기종이 다 나왔으며 그 덕분에 시장 점유율이 높은 편이다. 한 예로 2013년 2분기에는 시장 점유율이 81%로 iOS (14.2%)를 큰 격차로 따 돌렸다. 이미 명실상부한 시장 지배적인 모바일 OS의 위치에 올라섰다. 구글 코리아가 공개한 자료에 의하면 현재 Android 사용자의 수는 10억 명 정도라고. 전체 인구 7분의 1이 Android를 사용하고 있다고 볼 수 있다.
Android가 휴대전화/태블릿 이외에도 갤럭시 기어와 같이 다양한 디바이스에 활용되었으나 Google에서 웨어러블, 자동차 등에 맞춰 개량 버전을 출시했다. 2017년 2월 HoneyComb과 Gingerbread의 Google Play 지원이 종료되었다.
버전 9.0까지 코드네임은 A부터 시작하여 알파벳 순으로 지어지며 그 이름이 모두 디저트 이름이다. 버전 10.0부터는 원래 디저트가 더 있었지만 국가마다 발음이 다르다는 이유와 비영어권 나라의 코드 네임 발음이 다르다는 이유 등으로 숫자로 OS의 이름을 정한다. 다만 코드 네임으로 버전명을 정하지 않을 뿐, 내부 개발 시에는 계속 디저트 이름이 코드 네임으로 사용되고 있는 중이다. (10 - Quince Tart, 11 - Red Velvet Cake, 12 - Snow Cone, 13 - Tiramisu, 14 - Upside Down Cake)
참고로 Android의 Linux 커널은 최신 버전을 사용하지 않으며 3~5년 전의 커널을 사용하는 것이 보통이다. 그 이유는 크게 두 가지이다. 먼저 충분히 검증된 안정적인 커널을 이용해 문제 발생의 소지를 최소화하겠단 의도이다. 이러한 경향은 커널 사용이 지연되는 시기의 차이만 있을 뿐 데스크톱 버전용 (롤링 릴리즈가 아닌) Linux 배포판 역시 비슷하다. 또한 스마트폰의 성능 동향에 따른 것이기도 하다. 스마트폰의 성능이 아무리 비약적으로 발전한다 한들 데스크톱의 성능에는 크게 미치지 못하기 때문에 굳이 최신 기술과 기능이 포함된 최신 커널에 집착할 필요가 없다. 때문에 커널에 Android의 구조를 맞추기보다는 Android의 구조에 커널 버전을 맞추는 것이다.
Google I/O 2017에서 Android Go라는 이름으로 간단히 소개되었고 2017년 12월 Android Oreo (Go edition)으로 세부사항과 함께 공개되었다.
기존에 저사양 기기를 타겟으로 하였지만 운영 체제의 변경점은 없었던 Android One 프로젝트를 Mi A1의 공개와 함께 중급형 사양으로 상향시키고 저사양 기기의 퍼포먼스를 위한 몇 가지의 수정 사항과 전용 어플리케이션을 탑재한 Android Go edition을 선보였다.
1GB보다 적은 용량의 메모리를 탑재한 저사양 Android 스마트폰으로 더 나은 스마트폰 경험을 제공하기 위해 만들어졌으며 적은 저장공간과 제한된(적거나 느린) 모바일 데이터 환경 등도 고려되었다.
기존 Android와 비교한 특징으로
8GB ROM 기준 Android 7에서 OS 등의 용량을 제외하고 이용 가능한 용량이 2배가 될 정도로 경량화되었다.
일부 선탑재 어플리케이션이 Google Go와 같이 Go 버전으로 탑재되어 50% 더 적은 용량을 차지하면서 더 나은 퍼포먼스를 보여준다.
데이터 절약 모드와 Peer to Peer 공유 기능의 기본 탑재로 데이터 사용량을 줄여준다.
어플리케이션 전환 화면에서 앱이 기존 Android와 달리 겹쳐보이지 않는 등 퍼포먼스를 위해 몇몇 UI 효과가 제거되었다.
Wear OS by Google과 연동할 수 없다.
UI 구성이 대다수 면에서 상당히 간략화되었다. 또한 Google에서 공식적으로 지원하거나 개발해서 내놓는 앱들 또한 해당 에디션 버전에 맞춰서 재구성 되었다.
결론적으로 기존의 필수적인 기능은 모두 잘 작동하면서 저사양 기기에서 약 15% 더 빠르게 작동된다는 장점을 가진다. 그리고 Android 9에 이어 Android 10까지 역시 기존 Android 9처럼 '동일한 틀(필수적인 기능 작동 및 저사양 기기 최적화)'을 보유한 상태로 업데이트되었다.
이 Go Edition이 탄생하게 된 배경에는 위에서 말했던 저사양의 기기와 제한된 데이터 사용량 때문인데, 이를 수치로 환산해 보면 확실하게 알 수 있다.
위의 표를 보면 한국, 미국의 경우 데이터 요금이 상당히 비싸지만, 그만큼 최저임금이 높다. 따라서 10GB의 데이터를 사용하더라도 겨우 125.5$일 뿐이다. 이는 단순히 데이터를 종량제로 사용했을 경우이고, 무제한 요금제를 이용하거나, 할인이 적용되면 이 금액은 더 줄어든다. 따라서 충분히 최저임금으로도 데이터 사용량을 어느정도 자유롭게 보장받을 수 있다.
인도의 경우 요금이 세계에서 가장 저렴하기로 손꼽히며, 실제로도 표를 확인해보면 최저임금이 적은 편이지만, 데이터 요금 또한 저렴함을 알 수 있다. 그러나 이는 단순히 최저임금을 늘어놓은 것이고, 인도의 최저임금이 법으로 제정된 것이 겨우 2년 전인 2019년이었다. 그때까지는 공식적으로 통계에 잡히는 일자리의 약 40%정도가 최저임금보다 낮은 임금을 받고 일해 왔으며, 도시에 비해 농촌지역은 훨씬 더 적은 임금을 지불받는다고 한다. 물론 통계에 잡히지 않는 일자리의 경우에는 말할 필요도 없이 최저임금에 아득히 미치지 못하는 저렴한 임금을 지불받는다.
계속해서 인도네시아나 수단 같은 개발도상국의 경우 한달 최저임금에 비교하면 데이터 요금이 어마어마하다. 특히 시간당 최저임금이 겨우 0.06$, 0.01$인데 반해, 데이터 1GB의 요금은 무려 0.46$, 2.51$이다. 10배인 10GB를 사용한다고 하면 요금은 4.6$, 25.1$가 되며, 인도네시아는 한달 최저임금의 반에 근접하고, 수단은 무려 근 14달치 월급이다.
게다가 이들이 한국이나 미국처럼 4G나 5G를 사용하는 것도 아니고, 대부분의 개발도상국들은 아직도 2G나 3G가 대부분이다. 오히려 한국이 빠르게 4G와 5G를 상용화시킨 사례일 뿐, 미국마저도 땅덩어리가 워낙에 커서 일부 대도시를 제외하면 3G마저도 겨우겨우 지원하거나 그마저도 지원이 안 되는 오지도 있다.
즉, Go Edition은 이러한 데이터 사용이 물리적으로 어려운 사람들을 타겟으로 삼고 개발된 녀석이다. 따라서 이 Go Edition에 따라붙는 각종 Go 애플리케이션들은 기본적으로 오프라인인 상황을 염두에 두고, 보다 친화적인 방향으로 개발된 것을 알 수 있다.
YouTube Go를 예로 들자면, 한국에서 쓰이는 일반적인 YouTube는 온라인이 아닐경우 라이브러리 화면으로 자동으로 연결되긴 하지만, 오프라인 상태임을 알리는 메시지와 함께 에러메시지를 띄운다. 그러나 YouTube Go는 오프라인임을 알리는 메시지는 일절 보이지 않으며, 직전에 갱신해뒀던 영상목록이 그대로 보인다. 물론 새로운 영상을 보려면 온라인 상태여야 하지만, 오프라인 메시지를 마치 에러마냥 띄워대지는 않는다는 점이다. 또한 YouTube Go는 프리미엄 기능을 활성화시키지 않아도 영상을 기본적으로 다운로드하는 기능이 있으며, 나아가 다운로드할 영상의 품질(= 용량)을 선택할 수 있게끔 하는 서비스를 제공한다.
마찬가지로 Google Go 또한 한국에서 흔히 사용하는 Google 앱과는 달리 오프라인일 경우 온라인으로 연결하라는 에러메시지 대신, 자신이 예전에 검색했었던 타임라인을 띄워주고, 인터넷에 연결하기 위한 과정을 아이콘으로 보며주는 등의 노력을 하여 데이터의 제한으로 인해 발생하는 오프라인으로 느껴지는 긴장감이나, 박탈감을 해소하고자 하는 모습을 보여준다.