본문 바로가기

Programming/Kotlin

[2일차] 깡샘의 안드로이드 앱 프로그래밍 with 코틀린(Do it!) / 02 안드로이드 앱의 기본 구조

 

해당 내용은 이지스 퍼블리싱 카페에서 공부하며 올렸던 글을 다듬었습니다.

< 02-1 안드로이드 소개 >

- 책 본문 읽어보기

 

 

 

 

 

< 02-2 안드로이드 앱의 기본 구조 >

- 안드로이드는 DEX 파일로 컴파일함 (안드로이드 5.0 버전 이후)

  * 자바 소스(.java) → 자바 바이트 코드(class) → DEX 바이트 코드(.dex)

- ART : Adroid RunTime

- 안드로이드에서는 클래스로 컴포넌트 개발

- 생명주기를 누가 관리하느냐에 따라 컴포넌트 클래스 / 일반 클래스로 구분

- 4가지 컴포넌트 : 액티비티, 서비스, 콘텐츠 프로바이더, 브로드캐스트 리시버

- 4가지 컴포넌트의 구분 방법 : 상위 클래스를 보고 구분 가능

- 컴포넌트의 구성은 설계에 따라 달라지며 정해진 규칙은 없음

  * 컴포넌트는 앱 안에서 독립된 실행 단위다 => 안드로이드 시스템에 의뢰해서 실행해야 함

  * 앱 실행 시점이 다양 => 메인 함수 개념이 없다

  * 애플리케이션 라이브러리 사용할 수 있다

  * 리소스를 많이 활용한다 => 항상 똑같은 값을 불러올 때!

 

[ R. 의 의미 ]

- 02-2 마지막 부분의 R.string.mytxt 중 R. 의 의미를 자세히 몰라서 이곳저곳 찾아봤었는데 못 찾았었어요.

  이번 편을 보면서 R. 의 의미를 알게 됐습니다.

- R. : R은 Resource고 안드로이드 시스템에서 R.java 파일로 리소스 관리를 해주는 것.

       즉, R. 은 R.java를 의미!!

 

 

 

 

< 02-3 앱 구성 파일 분석 >

- 모듈 하나가 앱 하나 : 일반적으로 하나의 모듈은 하나의 앱을 의미

  * 하나의 앱을 여러 모듈로 나누어 개발할 수도 있다

- 모듈의 폴더 구성

이름
설명
build.gradle
빌드 설정 파일
AndroidManifest.xml
앱의 메인 환경 파일
res
리소스 폴더
activity_main.xml
레이아웃 XML 파일
MainActivity.xml
메인 액티비티 파일

- build.gradle : 그래들의 설정 파일. gradle은 안드로이드 앱의 빌드 도구.

- 대부분의 빌드 설정은 모듈 수준의 그래들 파일(build.gradle(Module: AndroidLap.app))에 작성

- applicationId : 고유한 문자열로 지정해야 함. 식별자 중복 시 구글 플레이 스토어에 등록 안됨.

- 개발자가 추가하는 오픈소스 라이브러리나 구글의 androidx 라이브러리 등

  SDK 라이브러리가 아닌 것들은 모두 dependencies에 선언해야 함.

- AndroidManifest.xml : 안드로이드 앱의 메인 환경 파일. (매니페스트 파일)

  * 안드로이드 시스템은 이 파일에 설정한 대로 사용자의 폰에서 앱을 실행

  * 개발부터 실행까지 중요한 역할!

- package는 매니페스트 파일에 선언한 컴포넌트 클래스의 기본 패키지명 (기본 경로로 이해함)

- <application> 태그는 앱 전체를 대상으로 하는 설정

- XML 속성 값이@로 시작하면 리소스를 의미

- 안드로이드 컴포넌트는 시스템에서 생명주기를 관리하고,

  시스템은 매니페스트 파일에 있는 대로 앱을 실행함.

  결국 컴포넌트는 매니페스트 파일에 등록해야 시스템이 인지함

- 액티비티 필수 속성 name : 클래스의 이름을 등록

- 리소스 : 앱의 리소스를 등록하는 목적

  * 기본 폴더 4가지 : drawable, layout, mipmap, values

- R.java : res 폴더에 있는 리소스를 보고 자동으로 만듦 (개발자가 만드는 파일 아님)

- 이제 R.java 파일을 보여주지 않음

  => 개발자가 직접 건드리지 않고 내부에서 리소스를 등록하기 위해

- 리소스 파일 규칙

  * res 하위의 폴더명은 지정된 폴더명을 사용해야 함

  * 각 리소스 폴더에 다시 하위 폴더를 정의할 수 없음

  * 리소스 파일명은 자바의 이름 규칙을 위해할 수 없음

  * 리소스 파일명에서 알파벳 대문자를 이용할 수 없음 => 두 단어 연결 시 언더바(_) 사용