안드로이드 개발공부를 처음 시작해보며 차근차근 정리해가보고자 글을 씁니다. 책은 "이것이 안드로이드다"를 보며 공부를 할 예정이고 책의 내용을 따라가며 정리 및 추가로 알게 되는 내용등을 정리해보겠습니다^^
자 이제 본격적으로 시작해보겠습니다!!!!
1-1) 운영체제와 플랫폼
안드로이드 플랫폼은 리눅스 운영체제 안에서 리눅스와 상호작용한다.
대충 뭐 우리 눈에는 실행 되는 앱만 보이지만 그 아래에는 리눅스커널과 같은 아키텍처가 있다는 얘기인 듯, 중요한건 이러한 아키텍처 위쪽에서 안드로이드가 실행되는 런타임 영역이 존재한다!
1-2) 플랫폼 버전과 API 레벨
안드로이는 플랫폼 버전과 별개로 API 레벨이 존재한다. API는 개발자에게 플랫폼의 기능을 사용할 수 있도록 제공하는 도구인데, 이 레벨에 따라서 사용할 수 있는 기능이 추가되고 코드를 바꿔야하는 경우도 있다.
잦은 업데이트는 개발에 혼란을 줄 수도 있을 것 같다. 하지만 사용자가 버전을 옮기는데는 시간이 걸리기 때문에 너무 최신 버전에 맞춰 개발할 필요는 없다고 한다.
1-3) 코틀린
안드로이드 플랫폼의 구조는 리눅스 커널과 자바 API 프레임 워크가 결합된 형태이다. 기존에 사용하던 JVM 대신 지금은 안드로이드 런타임을 사용하게 될 것이다. 뭐 이런저런 사건이 있었던 것 같은데 각설하고 구글에서 2019년에 코틀린 퍼스트를 선언하며 지금 코틀린을 열심히 밀고 있다.
그래서 내가 코틀린을 배우려고 하는 것...ㅋㅋㅋ
1-4) 함수형 프로그래밍 언어 코틀린
클래스 내부에 있는 함수에서만 로직을 작성하는 객체지향언어(JAVA)와 다른 이런 제한이 없는 함수형 프로그래밍을 표방하고 있다.
다섯줄짜리가 한줄짜리 코드로 짧아지는 핵이득 소식!!
1-5) 안드로이드 개발에 있어서 자바와 코틀린의 차이
아.. 바로 배신. 현재 안드로이드는 자바와 코틀린을 동시에 지원하므로 자바의 형식에 맞춰서 코틀린도 개발을 해야한다..
하지만~! 그래도 자바로 했을때보다는 짧다는 이득 소식!
핵심 키워드 : 컴파일, 빌드, 런타임, APK
아키텍처란? 안드로이드 플랫폼의 실제적인 동작 구조 또는 형태
우리가 작성한 소스 코드가 디바이스에 설치되면 이 안에서 모든 동작이 결정된다!
소스코드 ->(빌드)-> 앱설치 파일 ->(등록)-> 앱스토어 ->(설치)-> 실행
안드로이드 플랫폼이란 좁게 보면 운영체제에서 소프트웨어 정도지만 넓게 보면 앱이 거래되는 플레이 스토어, 앱이 동작하는 스마트폰까지이다!
2-1) 소스코드 작성에서 실행까지
코드 짜고 빌드해서 설치파일 만들고 플레이스토어에 올리고 등록하고 설치 받고 앱 실행 ..ㅋㅋ 뭐 이런 당연한걸 책에 써놨지 위에 한말임~
2-2) 코드가 스마트폰에서 실행되는 과정
같은 말인데 조금 더 디테일하고 사진으로 설명했지만 나는 패스 ㅋㅋ
2-3) 빌드
소스코드를 변환하여 안드로이드에서 실행파일인 APK로 만드는 것을 빌드라고 한다. 빌드는 소스코드를 기계어로 변환한 후 라이브러리와 연결해서 실제 실행 파일로 만든 과정!
리눅스에서의 빌드
소스코드를 컴퓨터가 읽을 수 있는 기계어로 번역(컴파일)하고, 내가 만든 소스코드에서 사용하는 라이브러리와 연결해서 최종 실행 파일 형태로 만드는 것.
링크 빌드 = 컴파일 + 링크
컴파일 : 소스코드 -> 기계어 / 링크 : 기계어 -> 라이브러리 연결
안드로이드에서의 빌드
리눅스는 쉬운데 안드로이드는 어려워 보인다...
설명을 하자면 일단 안드로이드에는 리소스라는 개념이 등장.. 아 피곤..
안드로이드 컴파일 1단계 : 바이트코드 단계
~ 소스코드 리소스(이미지, 음악파일), 라이브러리까지 한 번에 컴파일 이 파일은 스마트폰에서 바로 실행 불가능 ㅠㅠ
-안드로이드 컴파일 2단계 : APK 파일 생성
~ 위에서 만든 파일을 APK 매니저라는 도구로 개발자가 설정한 패스워드와 조합해서 설치파일인 APK파일로 만들어주는 것
이 2단계를 합쳐서 "빌드"라고 한다!
2-4) 설치와 실행
우리가 설치하는 앱은 제일 상단 애플리케이션에서 동작하고, 안드로이드는 중간에 있는 안드로이드 런타임 영역에서 개발자가 만든 앱을 제어한다.
JIT (Just-in-Time)-> 그 게임하면 실행할때 한번 더 다운 받는 뭐 그런거 같음
바이트 코드를 실제 기계어로 컴파일하는 것을 실행 시점에 수행하게 된다. 따라서 실행 속도가 상대적으로 느리지만, 앱 설치 속도, 설치 용량 등이 AOT에 비해 빠르고 적게 차지한다.
AOT (Ahead-of-Time) -> 미리 한번에 다 해둬서 들어갈 때 로딩이 없는거
이름에서 알 수 있듯이 미리 컴파일을 다 해놓는다. 따라서 실제 실행 시 별도 컴파일 과정이 없으므로 속도가 상대적으로 빠르다. 반면 미리 컴파일을 해놓기 때문에 설치 속도나 설치 용량이 좀 더 큰편이다.
이상 1장 끝!! 쉬우면서 헷갈린다 ...ㅇ_ ㅇ .. 이것이 나의 수주운...