이 글은 책 "이것이 안드로이드다 with 코틀린" 을 바탕으로 썼습니다.
문제가 될 시 바로 삭제하겠습니다.
1. 안드로이드와 코틀린
1.1 운영체제와 플랫폼
안드로이드 플랫폼은 리눅스 운영체제 안에서 동작함.
전체 아키텍처 위쪽에 안드로이드가 실행되고 있는 런타임 영역이 존재.
1.2 플랫폼 버전과 API 레벨
안드로이드는 사용하는 플랫폼 버전과 별개로 API 레벨이 있음.
API 레벨의 변경 사항이 있을 경우 기존 코드를 다시 한번 확인할 필요가 있음.
1.3 코틀린
안드로이드 플랫폼의 구조는 리눅스 커널과 자바 API 프레임워크가 결합된 형태.
과거에는 JVM(정확하는 Dalvik VM)을 썼지만, 지금은 안드로이드 런타임(Android RunTime, ART) 를 사용함.
2017년 5월 코틀린(Kotlin)을 공식 언어로 채택함.
1.4 함수형 프로그래밍 언어 코틀린
코틀린은 함수형 프로그래밍을 표방.
1.5 안드로이드 개발에 있어서 자바와 코틀린의 차이
자바로 작성했을 때보다 코드의 양이 훨씬 적어짐.
2. 안드로이드 아키텍쳐
핵심 키워드 : 컴파일, 빌드, 런타임, APK
소스 코드 ---(빌드)---> 앱 설치 파일 ---(등록)---> 앱스토어 ---(설치)---> 실행
안드로이드 스튜디오, 플레이 스토어, 스마트폰까지 하나의 거대한 안드로이드 플랫폼이라고 봐야함.
2.1 소스 코드 작성에서 실행까지
소스 코드 작성에서 실행까지의 순서.
1. 소스 코드 작성 : 코틀린으로 작성
2. 설치 파일 생성 : 안드로이드에서 실행될 수 있는 설치 파일의 형태로 변환함.
3. 업로드 : 플레이 스토어에 앱 업로드.
4. 앱 등록 : 플레이 스토어에 앱 등록.
5. 앱 선택/설치 : 스마트폰으로 앱 선택/설치.
6. 스마트폰에서 실행 : 아이콘 터치 후 앱 실행.
2.2 코드가 스마트폰에서 실행되는 과정
1. 빌드(컴파일 + 비밀번호) : 소스코드를 바이트코드로 변환해 APK 매니저에서 비밀번호를 가지고 있는 키스토어와 조합해서 최종 설치파일을 생성함.
2. 파일 검증 : 플레이 스토어에서 앱을 검수하는 과정을 거침. 정상 동작 유무, 보안 문제 등을 검사.
3. 플랫폼 버전 체크 : 플레이 스토어에서 스마트폰의 플랫폼 버전을 확인 후 설치 가능한 앱의 목록을 보여줌.
4. AOT 컴파일/설치 권한 체크 : APK 파일을 설치하면 리눅스에서 실행 가능한 파일로 한 번 더 컴파일함. 이 과정을 통해 실행속도 향상 및 사용자에게 기능 요청.
5. JIT 컴파일/실행 권한 체크 : 첫 번쨰 앱을 실행할 때 미리 컴파일되지 않은 파일을 호출하면서 리눅스 실행 파일로 컴파일함. 권한 중에 '실행 시 권한'이 포함되어 있으면 해당 코드가 동작해서 사용자에게 확인 요청을 함.
2.3 빌드
소스코드를 변환해서 안드로이드에서의 실행파일인 APK 파일로 만드는 것을 빌드라고 함.
컴파일이란? : 사람이 읽을 수 있는 형태의 소스 코드를 컴퓨터가 읽을 수 있는 형태의 기계어로 변환해주는 과정.
리눅스에서의 빌드 : 컴퓨터가 읽을 수 있는 기계어로 번역하고, 내가 만든 소스코등에서 사용하는 라이브러리와 연결해서 최종 실행 파일 형태로 만드는 것.
안드로이드에서의 빌드 : 2개의 단계로 나뉨