1. Android와 Kotlin
Android는 2005년 Google이 Android라는 회사를 인수해 Opensource로 공개한 것으로서 Linux를 기반으로 동작하는 Android Flatform입니다. Kotlin은 Android Flatform API를 통해 Android Runtime상위에서 동작하는 App을 개발하기 위한 언어로서 쉽게 얘기하면 Android App을 개발하기 위한 Programming언어 중 하나라고 할 수 있습니다.
Kotlin으로 App을 개발할 때 자주 등장하는 것이 API(Application Programming Interface)라는 것입니다. 이 API는 Android의 Version에 따라 특정 기능이 추가되기도 하고 삭제, 혹은 변경되기도 합니다. 따라서 App을 만들 때는 이러한 API 규격에 따라 잘 만들어져야 합니다.
실제 Android의 전체적인 Architecture를 살펴보면 맨 아래 Linux의 Kernel이 있으며 상위에 API Framework가 자리하고 있는 걸 알 수 있습니다. Applications영역에 해당하는 App은 App실행에 필요한 각종 Library와의 결합을 통해 Android Runtime영역 안에서 실행되는데 바로 이때 API Framework 계층을 사이에 두고 상호작용을 통해 실행되는 것입니다. 참고로 본래 App은 JVM(JAVA Virtual Machine)이라고 하는 영역 안에서 실행된다고 하였는데 현재는 Android Runtime이 이를 대체하고 있습니다.
기타 Android개발에 관한 전체적인 사항은 아래 Homepage에서 확인할 수 있습니다.
https://developer.android.com/
2. Kotlin
Jetbrains이라는 회사에서 개발된 Kotiln은 2017년 Google에서 Android용 개발 주요언어로 채택하면서 점차 사용률이 증가하고 있습니다. 기존의 Android용 App은 JAVA가 주류를 이루었으나 Kotlin이 이를 점차 대체해나가고 있는 것입니다. 아무래도 Google과 Oracle과의 8년간 License분쟁에서 Google이 패소한 것과 JAVA 언어에서의 간결성 등 언어적인 개선 등의 이유가 있을 것입니다.
그렇다고 해서 JAVA와 완전히 동떨어진 것은 아니고 JVM에서 구동되며 JAVA와의 상호운영이 가능하도록 만들어 졌습니다. Android가 JAVA와 Kotlin을 같이 지원하도록 되어 있기 때문에 Kotiln도 JAVA와 같은 형식으로 만들어져야 하는 것이니다. 뭐 여러 가지 사항이야 어찌 되었건 Kotiln은 Android App을 개발하기 위한 주요 언어이고 이를 통해 App을 어떻게 개발하고 최종적으로 사용자에게 어떤 식으로 배포될 것인가에 대해 아는 것이 중요한 것이겠죠.
App의 개발과 실행에 관한 전체적인 흐름을 간단히 설명드리면 우선 처음 Kotlin으로 App을 만들기 위해 Code를 작성하고 이를 APK라는 설치 파일 형태로 변환합니다. 이때 Build라는 과정을 거치게 되는데 Source Code를 Android가 이해할 수 있는(실행할 수 있는) 실행파일로 변환시키는 것을 의미합니다. Build와 Compile의 차이를 간단히 말씀드리면 Compile은 단순히 기계어로 변환하는 것을 의미하지만 Build는 변환 + 실행에 필요한 Library와의 결합과정을 포함합니다.
이렇게 만들어진 APK파일을 Google의 App Store에 등록하게 되면 Google에서는 App의 정상적인 실행 여부를 점검하고 Store에 해당 앱을 게시합니다.(APK 파일만 있으면 Google App Store를 거치지 않고 곧바로 설치/실행할 수도 있습니다.) 그러면 사용자가 해당 App을 내려받아 설치하고 실행하는 전체적인 흐름을 가지게 되는 것이죠.
그런데 App을 설치하고 실행하는 가정에서 App은 2번의 Compile과정을 거치게 됩니다. 첫 번째는 App을 설치할 때 발생하는 AOT(Ahead of Time) Compile입니다. 이때는 App을 Linux에서 실행 가능한 형태로 만들기 위해 Compile 하는 단계에 해당하며 설치하는 과정이기 때문에 설치에 필요한 권한을 요청하고 이를 함께 처리하게 됩니다.
App을 설치한뒤 실행할 때는 JIT(Just in Time) Compile이라는 과정을 거치며 이전에 AOT Compile단계에서 Compile 되지 않았던 파일을 Compile 하게 되고 실행에 필요한 권한을 처리합니다. Android에서 이렇게 2번의 Compile단계를 거치는 이유는 AOT Compile시 모든 File을 Compile 하게 되면 너무 용량이 커져서 효휼성이 떨어지기 때문입니다. 사실 Android 5.0 버전에서는 모든 파일을 한꺼번에 Compile 하는 형태로 진행했었는데 효휼성문제로 바뀐 것입니다.
참고로 근래에는 APK보다는 AAB형태로 빌드하는 경우가 많아졌다고 합니다. AAB는 APK를 대체하는 파일 형태인데 AAB는 사용자가 App을 내려받을 때 사용자의 Device에 필요한 File만 추려서 APK로 생성해 주는 방식입니다.
3. 개발도구
Kotlin으로 App을 개발하기 위한 주요 도구로 Android Studio라는 IDE(Integrated Development Environment)를 사용할 수 있습니다. IDE는 Coding, Debug, Compile 등 Program의 개발에 필요한 모든 사항을 처리할 수 있도록 해주는 도구를 의미합니다.
Android Studio는 Kotlin을 개발한 JetBrains사의 개발도구인 IntelliJ를 기반으로 만들어졌습니다.
https://www.jetbrains.com/ko-kr/idea/
Android Studio는 아래 주소에서 내려받을 수 있으며 설치와 기본적인 실행 과정은 다음 편에서 알아보도록 하겠습니다.
https://developer.android.com/studio?hl=ko
지금까지 Android와 Kotlin에서 최대한 간략하게나마 알아보았습니다. 사실 세부적으로 들여다보면 더 많은 내용이 나올 수 있으나 나머지는 진행하면서 천천히 알아보도록 하겠습니다.
수고하셨습니다.
안드로이드, 코틀린, 빌드, 컴파일, APK, AAB
'Mobile > Kotlin' 카테고리의 다른 글
[Kotlin] 변수와 상수 (0) | 2020.10.01 |
---|---|
[Kotlin] 에뮬레이터(Emulator)와 스마트폰연결 (0) | 2020.08.10 |
[Kotlin] SDK 설정 살펴보기 (0) | 2020.08.04 |
[Kotlin] android studio (안드로이드 스튜디오) (0) | 2020.06.01 |
[Kotlin] Log(로그)와 Logcat(로그켓) (0) | 2020.05.16 |