안드로이드는 구글에서 개발한 오픈소스의 모바일 운영체제이다.
리눅스 커널부터 시작해서 Software Development Kit까지 모두 무료로 제공되고 실제 폰과 비슷한 환경에서 개발 테스트를 진행할 수 있는 에뮬레이터(AVD- Android Virual Device)도 오픈소스로 공개되어 있다.
지원하는 언어로는 리눅스 커널은 C, C++, UI 및 응용 소프트웨어는 Java로 되어 있다. 가상 머신은 JVM이 아닌 자체 개발한 Dalvik VM을 사용한다.
라이선스는 아파치 라이선스 2.0.을 사용한다. 다만 Linux 커널을 수정한 부분에 대해서는 GPL 2.0 이적 용 된다.
(소스 공개하고 만들어진 소프트웨어에 나중에라도 저작권료 청구하려는 생각인 듯)
리눅스 커널 기반에 Java 가상 머신을 이용한다는 것은 성능보다 호환성에 더 치중을 줬다고 생각한다.
버전
코드네임 | 버전 | 릴리즈 날짜 | API 버전 | 리눅스 커널 |
Android 11 | 11.0 | 2020년 9월 8일 | API level 30 | 4.14.x |
Android 10 | 10.0 | 2019년 9월 4일 | API level 29 | 4.14.x 4.9.x |
Pie | 9.0 | 2018년 8월 6일 | API level 28 | 4.9.x 4.4.x 3.18.x |
Oreo | 8.1 | 2017년 10월 25일 | API level 27 | 4.4 3.18.x |
8.0 | 2017년 8월 21일 | API level 26 | ||
Nougat | 7.1 - 7.1.2 | 2016년 10월 2일 | API level 25 | 3.10.73 |
7.0 | 2016년 8월 22일 | API level 24 | 3.10 | |
Marshmallow | 6.0 - 6.0.1 | 2015년 10월 5일 | API level 23 | |
Lollipop | 5.1 - 5.1.1 | 2014년 11월 12일 | API level 22 | 3.4.0 |
5.0 - 5.0.2 | API level 21 | |||
KitKat | 4.4 - 4.4.4 | 2013년 10월 31일 | API level 19 | |
Jelly Bean | 4.3 - 4.3.1 | 2012년 7월 9일 | API level 18 | |
4.2 - 4.2.2 | API level 17 | 3.0.53 | ||
4.1 - 4.1.2 | API level 16 | 3.0.31 | ||
Ice Cream Sandwich | 4.0.3 - 4.0.4 | 2011년 10월 18일 | API level 15, NDK 8 | 3.0.1 |
4.0 - 4.0.2 | API level 14, NDK 7 | |||
Honeycomb | 3.2.X | 2011년 2월 22일 | API level 13 | 2.6.36 |
3.1 | API level 12, NDK 6 | |||
3.0 | API level 11 | |||
Gingerbread | 2.3.3 - 2.3.7 | 2010년 12월 6일 | API level 10 | 2.6.35 |
2.3 - 2.3.2 | API level 9, NDK 5 | |||
Froyo(Frozen yogurt) | 2.2 - 2.2.3 | 2010년 5월 20일 | API level 8, NDK 4 | 2.6.32 |
Eclair | 2.1 | 2009년 10월 26일 | API level 7, NDK 3 | 2.6.29 |
2.0.1 | API level 6 | |||
2.0 | API level 5 | |||
Donut | 1.6 | 2009년 9월 15일 | API level 4, NDK 2 | |
Cupcake | 1.5 | 2009년 4월 27일 | API level 3, NDK 1 | 2.6.27 |
Petit Four | 1.1 | 2009년 2월 9일 | API level 2 | - |
Android 1.0 | 1.0 | 2008년 9월 23일 | API level 1 |
-- 나무 위키
안드로이드 스튜디오
구글이 안드로이드 앱 개발을 위해 JetBrains 사의 IntelliJ IEDA를 기반으로 만든 통합 개발 환경이다.
무료로 제공되고 있으며, Windows, macOS, Linux를 지원한다.
2017년부터 공식 프로그래밍 언어로 채택된 Kotlin도 사용 가능하다.
-- 2020년 5월에 Andorid Studio 4.0를 배포했으며 2021년 4월에 Android Studio 4.2 버전을 배포했다.
Gradle을 이용한 빌드 시스템이란 점과, IntelliJ IDEA면 말 다했지, 안드로이드 진영의 이클립스는 점차 사라지고 있는 추세이다.
안드로이드 스튜 비오 요구사항을 살펴보면 운영체제는 윈도 10~7, Mac OS X 10.10 ~ 10.14, 리눅스는 GNOME, KDE, JAVA는 JDK7, JRE는 6이다.
이와 별도로 Apple의 macOS, iOS.. 용 소프트웨어 개발을 위한 IDE가 있다.
SDK란?
소프트웨어를 개발하기 위한 킷트
안드로이드의 SDK 버전
- compileSdkVersion
- minSdkVersion
- targetVersion
상위 호환성
- 예전 버전이 최신 단말기에서 실행이 잘 되면 상위 호환
하위 호환성
- 이전 버전에서 만든 입력값을 처리할 수 있다면 하위 호환
compileSdkVersion
- gradle에 어떤 안드로이드 SDK 버전으로 앱을 컴파일할 것 인지 알려준다. 즉 지원 가능한 가장 높은 API 버전을 의미한다.
- 컴파일 시에만 적용되기에 런타임 동안은 영향을 받지 않는다. ( 항상 최신 버전의 SDk로 지정하는 것이 좋다.)
- import문으로 참조되는 클래스나 메서드를 찾을 대 어떤 버전의 SDK에서 찾을지 결정해준다.
minSdkVersion
- minSdkVersion보다 낮은 API 버전 앱은 설치할 수 없다.
- minSdkVersion보다 높은 API를 사용하면 lint 경고를 띄워 알려준다.
- Support Library나 Google Play Service는 자체 minSdkVersion을 가지므로 이 중 가장 높은 버전으로 맞춰야 한다.
targetSdkVerison
- 우리 어플이 호환성을 맞춘 버전이다.
- 해당 버전에 최적화되어 있다.
- 최신 버전보다도 최적의 버전으로 하는 것이 좋다.
- minSdkVersion 이상에서 지원하는 어떤 기능을 사용하고자 위함.
- 실제 컴파일에는 관여하지 않고, 빌드 시 버전을 낮춰 원하는 클래스의 메서드를 컴파일할 수 있다.
- 지정한 버전까지 앱을 테스트했음을 의미한다. 기기가 Nougat(API 24)라도 target이 MarshMellow(API 23)이라면 MarshMellow 단말기까지 정상 동작됨을 의미하여 Nougat기기는 정상적으로 돌아갈지 확신할 수 없다.
- 즉 targetSDKversion이 달라야 앱의 행동 로직이 달라지므로, 안드로이드가 상위 호환성을 제공할 수 있다.
- Marshmellow(API 23)에서 도입된 런타입 퍼미션은 targetSdkVersion을 API 23으로 지정해야 적용된다.
buildToolVersion
- build 툴의 버전 (사용할 컴파일러의 버전을 의미)
- minSdk : 21/ targetSdk :28 / OS SDK : 30 : 28에 맞춰서 호환성을 맞춰놨으니, 실제 단말기에선 하위 호환성 기능을 활성화시켜서 동작시켜야 할 것이고 완벽한 동작을 보장할 수 없다.
- minSdk : 23 / targetSdk:30 / OS SDK :27 : 30에 맞춰서 호환성을 맞췄기에 27에서 동작하는 단말기가 잘 동작하도록 상위 호환되도록 개발이 되었을 것이다.
'App' 카테고리의 다른 글
Ionic, AngularJS MVC, Apache Cordova (0) | 2021.11.07 |
---|---|
Ionic Framework (0) | 2021.09.17 |
Hybrid App (0) | 2021.09.15 |
댓글