본문 바로가기
App

안드로이드

by oncerun 2021. 9. 16.
반응형

안드로이드는 구글에서 개발한 오픈소스의 모바일 운영체제이다. 

리눅스 커널부터 시작해서 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

댓글