Android01, 02

3 minute read

챕터 1 코틀린 안드로이드 이해하기

01 안드로이드와 코틀린

1.1 운영 체제와 플랫폼

  • 안드로이드 플랫폼은 리눅스 운영 체제 안에서 리눅스와 상호 작용하며 동작한다.
  • 안드로이드 플랫폼 구성
    • System Apps
    • Java API Framework
    • Native C/C++ Libraries Android Runtime
    • Hardware Abstraction Layer(HAL)
    • Linux Kernel

1.2 플랫폼 버전과 API 레벨

  • API는 개발자에게 안드로이드 플랫폼의 기능을 사용할 수 있게 제공하는 도구
  • API 레벨에 따라 새로운 기능이 추가되거나 코드 전체를 변경해야 하는 경우도 있다

1. 3 코틀린

  • 안드로이드 플랫폼은 리눅스 커널과 자바 API 프레임 워크가 결합된 형태
  • 예전에는 자바 가상 머신 위에서 앱이 동작했지만 지금은 안드로이드 런타임을. 사용한다.
    • JVM이 없지만 여전히 가상 머신 위에서 동작한다는 점에서 자바의 동작 구조를 차용하고 있다.
  • 2017년 5월 구글 I/O에서 코틀린을 공식 언어로 채택한 후 코틀린으로 앱개발을 하는 기업이 늘어나고 있다.

  • 코틀린은 젯브레인 사가 만든 프로그래밍 언어.
  • 2011년 탄생 — 2012 오픈 소스 프로젝트로 공개 — 2016 버전 1.0 릴리즈 — 2017 구글 I/O에서 안드로이드 개발 공식 언어로 지정 — 2019 구글 I/O에서 코틀린 퍼스트 선언, 버전 1.3.50 릴리즈

1.4 함수형 프로그래밍 언어 코틀린

  • 코틀린은 함수형 프로그래밍을 표방하고 있다.
  • 객체 지향 프로그래밍과 비교하자면 객체 지향 프로그래밍은 클래스 내부에 있는 함수에서만 로직을 작성하지만, 함수형 프로그래밍은 이런 제한 없이 어디서나 작성할 수 있다.
// 자바
Class Hello {
	public static void main(String args[]) {
		System.out.print("Hello World");
	}
}
// 코틀린
System.out.print("Hello World");

1.5 안드로이드 개발에 있어서 자바와 코틀린의 차이

  • 안드로이드는 자바와 코틀린을 동시에 지원한다.
    • 그러므로 자바의 형식에 맞춰서 개발해야 한다.
  • 코틀린을 사용하면 코드양이 줄어든다.

02 안드로이드 아키텍처

  • 소스코드 —빌드—> 앱 설치 파일 —등록—> 앱스토어 —설치—> 실행

2.1 소스 코드 작성에서 실행까지

  • 소스 코드 작성 : 코틀린으로 소스 코드를 작성한다.
  • 설치 파일 생성 : 명령을 통해 안드로이드에서 실행될 수 있는 설치 파일의 형태로 변환한다.
  • 업로드 : 구글 플레이 스토어에 앱을 업로드한다.
  • 앱 등록 : 구글 플레이 스토어에 앱을 등록한다.
  • 앱 선택/설치 : 스마트폰으로 구글 플레이 스토어에 접속한 다음 설치할 앱을 선택/설치한다.
  • 스마트폰에서 실행 : 아이콘을 터치해서 앱을 실행한다.

2.2 코드가 스마트폰에서 실행되는 과정

  • 빌드(커파일 + 비밀번호) : 설치 파일 생성 단계는 빌드를 통해 진행한다. 이 과정에서 먼저 소스 코드를 바이트코드로 변환하여 APK 매니저에서 비밀번호를 가지고 있는 키 스토어와 조합해서 최종 설치 파일을 생성한다.
  • 파일 검증 : 업로드 단계로 단순히 파일을 업로드하는데서 끝나는게 아니라 구글 플레이 스토어에서 앱을 검수하는 과정을 거친다. 이때 설치 파일이 정상적을 ㅗ동작하는지, 보안상의 문제는 없는지 등을 검사한다.
  • 플랫폼 버전 체크 : 앱 선택 단계로 스마트폰으로 구글 플레이 스토어에 접속하면 스마트폰의 플랫폼 버전을 확인한 다음 설치 가능한 앱의 목록만 보여준다.
  • AOT 컴파일/설치 권한 체크 : 앱 설치 단계로 APK 파일을 설치하면 리눅스에서 실행 가능한 파일로 안드로이드 폰 내부에서 한번 더 컴파일한다. 이 과정을 통해 실행 속도가 빨라지며 사용자에게 기능의 사용 권한을 요청한다.
  • JIT 컴파일/실행 권한 체크 : 스마트폰에서 실행 단계로 설치할 때는 필요한 파일만 컴파일하고 첫번째 앱을 실행할 때 미리 컴파일되지 않은 파일을 호출하면서 리눅스 실행 파일로 컴파일한다. 그리고 권한 중에 실행 시 권한이 포함되어 있으면 해당 코드가 동작해서 사용자에게 확인 요청을 한다.

2.3 빌드

  • 소스 코드를 변환하여 안드로이드에서의 실행 파일인 APK 파일로 만드는 것을 빌드라고 한다.
  • 빌드는 소스 코드를 기계어로 변환한 후 라이브러리와 연결해서 실제 실행 파일로 만드는 과정을 일컫는 용어이다.

컴파일?

  • 사람이 읽을 수 있는 형태의 소스 코드를 컴퓨터가 읽을 수 있는 형태의 기계어로 변환해주는 과정이다.

리눅스에서의 빌드

  • 소스 코드를 컴퓨터가 읽을 수 있는 기계어로 번역(컴파일)하고, 내가 만든 소스 코드에서 사용하는 라이브러리와 연결해서 최종 실행 파일 형태로 만드는 것이다.

안드로이드에서의 빌드

  • 리눅스 컴파일과의 차이점은 안드로이드에는 리소스 개념이 있다는 점이다.
  • 안드로이드는 2단계로 컴파일을 나눈다.
    • 단계 1 : 바이트 코드 단계
      • 소스코드, 리소스(이미지 파일, 음악 파일 등), 라이브러리까지 한번에 컴파일 한다.
      • 이 파일은 스마트폰에서 바로 실행할 수 없다.
    • 단계 2 : APK 파일 생성
      • 1단계에서 생성된 파일을 APK 매니저라는 도구로 개발자가 설정한 패스워드와 조합해서 설치 파일인 APK 파일로 만든다.
  • APK와 AAB
    • AAB는 안드로이드가 새롭게 제안하는 APK 파일을 대체하는 빌드 파일 형태다.
    • 플레이 스토어에 AAB 파일 형태로 앱을 등록하면 사용자가 앱을 다운로드 할 때 사용자의 디바이스에 필요한 모듈만 골라서 APK 파일로 다시 생성해준다.

2.4 설치와 실행

  • 안드로이드의 아키텍처는 앱 설치부터 실행 후 종료할 때까지 계속 따라다니면서 관여한다.
  • 우리가 설치하는 앱이 가장 상단에 있는 애플리케이션 영역에서 동작하고, 안드로이드는 중간에 있는 안드로이드 런타임 영역에서 개발자가 만든 앱을 제어한다.
  • AOT : ahead of time. 설치 파일의 일부가 리눅스 운영 체제에서 실행할 수 있는 파일 형태로 한번 더 컴파일 된다.
  • JIT : just in time. 앱을 실행하면 호출되는 파일 중에 컴파일되지 않았던 파일이 한번 더 컴파일 되는 구조이다.
  • 이 두가지 컴파일 형태를 같이 사용해서 효율성을 높인다.

챕터2 개발 도구 설치와 앱 실행

  • https://developer.android.com/

  • 디바이스 선택 시 되도록 낮은 사양의 에뮬레이터에서 테스트 하는 것이 안드로이드 스튜디오의 성능에 영향을 덜 미친다.

Categories:

Updated: