1. app / manifests
manifests라는 Directory안에 있는 AndroidManifest.xml는 app 모듈의 매니페스트 파일입니다.
이 파일에는 안드로이드 시스템이 앱을 실행하기 위해 필요한 정보가 담겨있습니다. 이러한 필수 정보를 시스템에 제공하는 기능을 하는 것입니다.
간단히 말해서 안드로이드 프로젝트는 application 위에 activity가 실행되는 구조입니다. 이때 각 계층 (application, activity) 에 대한 설정을 정의하는 곳이라고 생각하시면 됩니다.
- 1 : 앱의 고유 식별자 역할을 하는 패키지 이름을 지정합니다.
- 2 : 시스템 기능을 사용하기 위해 필요한 권한(Permission) 설정합니다.
- 3: 앱에서 사용되는 테마 설정합니다.
- 4 : 액티비티, 서비스, 브로드캐스트, 리시버 등 앱을 이루는 구성 요소들의 클래스 이름을 지정하고 구성요소들이 실행될 수 있는 조건을 설정합니다.
2. app / java
app 모듈의 코드 파일이 있는 곳입니다.
MainActivity 클래스는 앱의 실행이 시작되는 코드(Launcher)로 여기에서 지정한 레이아웃이 앱의 맨 처음을 장식하게 됩니다.
3. app / res
resources의 준말로 하위 Directory는 기본적으로 drawable, layout, mipmap, value로 구성되어 있습니다.
- Drawable
앱에서 사용하는 이미지 리소스 & 도형과 이미지의 속성을 정의하는 xml 리소스 등이 포함됩니다.
- Layout
액티비티의 레이아웃을 정의한 xml 파일이 포함됩니다. 각 xml 파일에 추가한 UI 컴포넌트들이 앱의 화면을 구성합니다.
- Mipmap
런처 아이콘에 사용되는 이미지만을 위한 디렉토리입니다.
이 폴더에 이미지 자원을 넣으면 안드로이드는 mdpi, xhdpi, xxhdpi 등과 같은 단말(휴대폰 등 디바이스)의 밀도에 따라 적합한 이미지를 제공합니다.
기본적인 동작은 위의 drawable 폴더와 같지만 Mipmap 폴더는 런쳐 아이콘만을 위한 곳입니다. 그 이유는 런쳐 홈 때문입니다.
런쳐 앱은 홈 화면에 보이는 앱 아이콘의 크기와 갯수를 스스로 결정할 수 있습니다. 예를 들어 디바이스의 설정에 따라 가로로 4개 혹은 3개의 아이콘을 보여주는 것입니다. 이때, 아이콘 갯수가 많아질수록 아이콘의 크기가 작아지고, 반대로 아이콘 갯수가 적어지면 아이콘의 크기가 커질 것입니다.
이를 위해 mipmap이 상황 별 최적의 런처 아이콘 이미지를 제공하는 기능을 하는 것입니다.
- values
앱에서 사용되는 리소스 관련 상수를 정의한 파일들이 저장됩니다. ID를 이용해 각 파일 내의 리소스를 참조할 수 있습니다.
- colors.xml : 앱에서 사용되는 색의 값(16진수)을 정의합니다.
- strings.xml : 앱에서 사용되는 문자열을 정의합니다.
- styles.xml : 뷰나 윈도우의 모습을 위한 속성을 정의합니다.
기본으로 정의되어있는 colors.xml입니다. name="colorPrimary" 부분이 ID를 정의하는 곳이며, #6200EE 부분이 값입니다. 즉, colorPrimary로 #6200EE를 참조할 수 있는 것입니다.
4. Gradle Scripts
Gradle 빌드 시스템에서 앱을 컴파일 & 빌드 시 사용되는 파일입니다.
Gradle이란 빌드 배포 도구입니다. 안드로이드 스튜디오는 코드의 편집을 담당할 뿐, 어플리케이션의 빌드는 Gradle을 통해 수행됩니다.
※ 이전에는 라이브러리를 추가하기 위해선 jar 파일을 받아 설정해야 했지만 라이브러리들이 많아짐에 따라 자동화 도구가 필요해지게 되었고 maven, gradle 등의 라이브러리 관리 도구가 있는데 그 중 Gradle을 사용하는 것입니다.
1. build.gradle (Project: My_Application)
build.gradle 중 Project: My_Application은 다수의 모듈이 존재할 때 전체 모듈에 공통적으로 적용하는 부분을 설정하는 곳입니다.
buildscript {...}
Gradle의 외부 저장소와 의존성을 정의합니다. 이 정의는 프로젝트의 모든 모듈에 적용됩니다.
repositories {...}
의존관계에 있는 것들을 찾거나 다운로드 할 때 Gradle이 사용하는 저장소의 정보를 담고 있습니다.
dependencies {...}
프로젝트를 빌드하기 위해 Gradle이 필요로 하는 의존성에 대해 정의합니다.
allprojects {...}
프로젝트 내에 모든 모듈(써드 파티 플러그인 & 라이브러리 등)에서 필요로 하는 저장소나 의존성을 정의합니다.
모든 모듈에 해당되지 않는 경우 아래에서 설명할 모듈 단위의 build.gradle 파일에 정의되어야 합니다.
2. build.gradle (Module: app)
모듈의 빌드 방법이 정의된 빌드스크립트입니다. 빌드에 사용할 SDK버전, 어플리케이션 버전, 사용하는 라이브러리 등 다양한 항목을 정의합니다.
apply plugin:
안드로이드 및 코틀린 플러그인 사용을 gradle에 적용하는 것입니다. 이는 가장 위에 선언되어야 합니다.
android {...}
안드로이드와 관련된 빌드를 설정합니다.
compileSdkVersion
앱 컴파일 시 사용할 SDK 버전입니다.
defaultConfig {...}
AndroidManifest.xml에서 사용하는 설정들에 대해 동적인 옵션을 주고 싶을 때 이 블록에 정의합니다. minSdkVersion, versionCode 등이 해당됩니다.
buildTypes {...}
dev, beta, release 와 같은 빌드 타입 종류를 정의합니다.
dependencies {...}
라이브러리와 같은 의존성 추가 시 이곳에 정의합니다.
5. Android 뷰 / Project 뷰
기본 값으로 Android 뷰로 설정되어 있지만 자주 사용하는 뷰 중 하나가 Project 뷰입니다.
Project 뷰는 실제 디렉토리 계층 구조를 반영하여 전체 프로젝트를 보여줍니다. 좌측 상단의 Android 를 클릭해 설정할 수 있습니다.
Project 뷰 설정 화면
Project 뷰
위에서 설명한 주요 파일 & 폴더의 실제 디렉토리 상 위치를 알 수 있으며, Android 뷰에서 보여주지 않던 외부 라이브러리 같은 프로젝트의 파일 & 폴더를 확인할 수 있습니다.
'Android Studio' 카테고리의 다른 글
[Android Studio] 안드로이드 앱 아이콘 바꾸기, 앱 아이콘 이미지 적용법(런처 아이콘 변경) - App Icon Change (0) | 2024.11.26 |
---|---|
[Android Studio - Git] 안드로이드 스튜디오 Github 연동법 (2) | 2024.11.18 |
[Android Studio] 안드로이드 스튜디오에서 무선 디버깅이 되지 않을 때, 수동으로 연결하는 방법 (1) | 2024.11.18 |
[Android Studio] 삭제 (Sdk, 설정파일 포함) (1) | 2024.11.18 |
댓글