프로젝트 개요

Android 스튜디오의 프로젝트에는 소스 코드 및 애셋에서 테스트 코드와 빌드 구성에 이르기까지 앱을 위한 작업공간을 정의하는 모든 항목이 포함됩니다.

새 프로젝트를 시작하면 Android 스튜디오에서는 모든 파일에 필요한 구조를 생성하고 이를 Android 스튜디오의 Project 창에 표시합니다. 창을 열려면 View > Tool Windows > Project를 선택합니다.

이 페이지에서는 프로젝트에 포함된 주요 구성요소를 간략하게 설명합니다.

모듈

모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있습니다. 프로젝트에는 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈이 다른 모듈을 종속 항목으로 사용할 수 있습니다. 각 모듈을 독립적으로 빌드, 테스트, 디버그할 수 있습니다.

자체 프로젝트 내에서 코드 라이브러리를 생성하거나, 기기 유형(예: 스마트폰 및 웨어러블 기기)별로 각각 다른 코드 및 리소스 집합을 생성하되 모든 파일의 범위를 동일한 프로젝트 내로 유지하고 일부 코드를 공유하려는 경우 추가 모듈이 유용합니다.

프로젝트에 새 모듈을 추가하려면 File > New > New Module을 클릭합니다.

Android 스튜디오에서는 다음과 같이 몇 가지 서로 다른 모듈 유형을 제공합니다.

Android 앱 모듈
앱 소스 코드, 리소스 파일, 앱 수준 설정(예: 모듈 수준의 빌드 파일 및 Android 매니페스트 파일)을 포함하기 위한 컨테이너를 제공합니다. 새 프로젝트를 만들 때 기본 앱 모듈의 이름은 'app'입니다.

Android 스튜디오에서는 다음과 같은 유형의 앱 모듈을 제공합니다.

  • 휴대전화 및 태블릿
  • Automotive
  • Wear OS
  • TV
  • 기준 프로필 생성기
  • 벤치마크

각 모듈은 해당하는 앱 또는 기기 유형에 적합한 일부 코드 템플릿과 필수 파일을 제공합니다.

모듈 추가 방법을 자세히 알아보려면 새 기기를 위한 모듈 추가를 참고하세요.

기능 모듈
Play Feature Delivery를 활용할 수 있는 모듈화된 앱 기능을 나타냅니다. 예를 들어, 기능 모듈을 사용하면 Google Play 인스턴트를 통해 요청 시 또는 인스턴트 환경으로 앱의 특정 기능을 사용자에게 제공할 수 있습니다.

Android 스튜디오에서는 다음과 같은 유형의 기능 모듈을 제공합니다.

  • 동적 기능 모듈
  • 인스턴트 동적 기능 라이브러리 모듈

자세한 내용은 Play Feature Delivery를 참고하세요.

라이브러리 모듈
다른 앱 모듈에서 종속 항목으로 사용하거나 다른 프로젝트로 가져올 수 있는 재사용 가능한 코드를 포함하기 위한 컨테이너를 제공합니다. 라이브러리 모듈은 구조적으로 앱 모듈과 같습니다. 단, 빌드될 때 APK가 아니라 코드 보관 파일이 생성되므로 기기에 설치할 수 없습니다.

Create New Module 창에서 Android 스튜디오가 제공하는 라이브러리 모듈의 유형은 다음과 같습니다.

  • Android 라이브러리: Java 및 Kotlin 소스 코드, 리소스, 매니페스트 파일 등 Android 프로젝트에서 지원되는 모든 파일 형식을 포함합니다(네이티브 C++ 코드 제외). 빌드 결과로 Android 보관 파일(AAR)이 생성되며 이 파일은 Android 앱 모듈에 종속 항목으로 추가할 수 있습니다.
  • Android 네이티브 라이브러리: Android 라이브러리와 마찬가지로 Android 프로젝트에서 지원되는 모든 파일 형식을 포함합니다. 그러나 Android 네이티브 라이브러리는 네이티브 C++ 소스 코드도 포함할 수 있습니다. 빌드 결과로 Android 보관 파일(AAR)이 생성되며 이 파일은 Android 앱 모듈에 종속 항목으로 추가할 수 있습니다.
  • Java 또는 Kotlin 라이브러리: Kotlin 또는 Java 소스 파일만 포함합니다. 빌드 결과로 Java 보관 파일(JAR)이 생성되며 이 파일은 Android 앱 모듈 또는 기타 Kotlin 또는 Java 프로젝트에 종속 항목으로 추가할 수 있습니다.

모듈은 하위 프로젝트라고도 합니다. Gradle에서도 모듈을 프로젝트라고 하기 때문입니다.

라이브러리 모듈을 생성하고 이를 종속 항목으로 Android 앱 모듈에 추가하려는 경우 다음과 같이 모듈을 선언해야 합니다.

Groovy

dependencies {
    implementation project(':my-library-module')
}

Kotlin

dependencies {
    implementation(project(":my-library-module"))
}

프로젝트 파일

Android 스튜디오는 기본적으로 Android 뷰에 프로젝트 파일을 표시합니다. 이 뷰는 디스크에 있는 실제 파일 계층 구조를 반영하지 않습니다. 대신 프로젝트의 주요 소스 파일 간의 탐색을 간소화하기 위해 모듈 및 파일 형식별로 정리되므로 흔히 사용되지 않는 특정 파일이나 디렉터리는 숨겨집니다.

Android 뷰와 디스크 구조 간의 구조적 차이점은 다음과 같은 Android 뷰입니다.

  • 프로젝트의 모든 빌드 관련 구성 파일을 최상위 Gradle Script 그룹에 표시합니다.
  • 제품 버전 및 빌드 유형별로 매니페스트 파일이 다른 경우 각 모듈의 모든 매니페스트 파일을 모듈 수준의 그룹에 표시합니다.
  • 모든 대체 리소스 파일을 리소스 한정자별 개별 폴더 대신 단일 그룹에 표시합니다. 예를 들어, 런처 아이콘의 모든 밀도 버전이 나란히 표시됩니다.

각 Android 앱 모듈 내에서 파일은 다음 그룹에 표시됩니다.

manifests
AndroidManifest.xml 파일을 포함합니다.
java
JUnit 테스트 코드를 비롯한 Kotlin 및 Java 소스 코드 파일을 포함합니다. 이 파일은 패키지 이름으로 구분됩니다.
res
코드가 아닌 모든 리소스(예: UI 문자열, 비트맵 이미지 등)를 포함합니다. 이 리소스는 리소스에 상응하는 하위 디렉터리로 나뉩니다. 가능한 리소스 유형에 관한 자세한 내용은 앱 리소스 개요를 참고하세요.

프로젝트 뷰

Android 뷰에서 숨겨진 모든 파일을 비롯한 프로젝트의 실제 파일 구조를 보려면 Project 창의 상단 메뉴에서 Project를 선택합니다.

Project 뷰를 선택하면 다음을 비롯하여 훨씬 더 많은 파일과 디렉터리를 볼 수 있습니다.

module-name/
build/
빌드 출력을 포함합니다.
libs/
비공개 라이브러리를 포함합니다.
src/
다음 하위 디렉터리에 모듈에 관한 모든 코드 및 리소스 파일을 포함합니다.
androidTest/
Android 기기에서 실행되는 계측 테스트에 관한 코드를 포함합니다. 자세한 내용은 Android 스튜디오에서 테스트를 참고하세요.
cpp/
Java 네이티브 인터페이스(JNI)를 사용하는 네이티브 C 또는 C++ 코드를 포함합니다. 자세한 내용은 Android NDK 문서를 참고하세요.
main/
'기본' 소스 세트 파일, 즉 모든 빌드 변형이 공유하는 Android 코드 및 리소스(디버그 빌드 유형의 경우 src/debug/와 같이 동일한 수준의 디렉터리에 있는 다른 빌드 변형의 파일)를 포함합니다.
AndroidManifest.xml
애플리케이션의 특성 및 각 구성요소를 설명합니다. 자세한 내용은 앱 매니페스트 개요를 참고하세요.
java/
Kotlin 또는 Java 코드 소스를 포함하거나 둘 다 포함(앱에 Kotlin과 Java 소스 코드가 모두 있는 경우)합니다.
kotlin/
Kotlin 코드 소스만 포함합니다.
res/
애플리케이션 리소스(예: 드로어블 파일, UI 문자열 파일)를 포함합니다. 자세한 내용은 앱 리소스 개요를 참고하세요.
assets/
APK 파일로 있는 그대로 컴파일할 파일을 포함합니다. 예를 들어 이 디렉터리는 텍스처 및 게임 데이터에 사용하기 좋은 위치입니다. URI를 사용하여 일반적인 파일 시스템과 같은 방식으로 이 디렉터리를 탐색하고 AssetManager를 사용하여 파일을 바이트 스트림으로 읽을 수 있습니다.
test/
호스트 JVM에서 실행되는 로컬 테스트 코드를 포함합니다.
build.gradle 또는 build.gradle.kts(모듈)
이는 모듈별 빌드 구성을 정의합니다. build.gradle은 빌드 스크립트 언어로 Groovy를 사용하는 경우 올바른 파일 이름이고 Kotlin 스크립트를 사용하는 경우에는 build.gradle.kts입니다.
build.gradle 또는 build.gradle.kts(프로젝트)
이는 모든 모듈에 적용되는 빌드 구성을 정의합니다. build.gradle은 빌드 스크립트 언어로 Groovy를 사용하는 경우 올바른 파일 이름이고 Kotlin 스크립트를 사용하는 경우에는 build.gradle.kts입니다. 이 파일은 프로젝트에 반드시 필요하므로 기타 모든 소스 코드와 함께 버전 제어에서 유지합니다.

기타 빌드 파일에 관한 자세한 내용은 빌드 구성을 참고하세요.

프로젝트 구조 설정

Android 스튜디오 프로젝트에 관한 여러 설정을 변경하려면 File > Project Structure를 클릭하여 Project Structure 대화상자를 엽니다. 여기에는 다음 섹션이 포함되어 있습니다.

  • Project: Gradle 및 Android Gradle 플러그인의 버전과 저장소 위치 이름을 설정합니다.
  • SDK Location: 프로젝트에서 사용하는 JDK, Android SDK, Android NDK의 위치를 설정합니다.
  • Variables: 빌드 스크립트 내에서 사용되는 변수를 수정할 수 있습니다.
  • Modules: 타겟 SDK 및 최소 SDK, 앱 서명, 라이브러리 종속 항목을 비롯한 모듈별 빌드 구성을 수정할 수 있습니다. 각 모듈의 설정 페이지는 다음 탭으로 나뉘어 있습니다.
    • Properties: 모듈을 컴파일하는 데 사용할 SDK 및 빌드 도구의 버전을 지정합니다.
    • Signing: 앱에 서명하는 데 사용할 인증서를 지정합니다.
  • Dependencies: 이 모듈에 관한 라이브러리, 파일, 모듈 종속 항목을 목록으로 표시합니다. 이 창에서 종속 항목을 추가, 수정, 삭제할 수 있습니다. 모듈 종속 항목에 관한 자세한 내용은 빌드 변형 구성을 참고하세요.

  • Build Variants: 프로젝트의 여러 버전 및 빌드 유형을 구성할 수 있습니다.

    • Flavors: 여러 빌드 버전을 생성할 수 있습니다. 각 버전은 모듈의 최소 SDK 및 타겟 SDK 버전, 버전 코드 및 버전 이름 등 일련의 구성 설정을 지정합니다.

      예를 들어 최소 SDK 버전이 21이고 타겟 SDK 버전이 29인 빌드 버전과 최소 SDK 버전이 24이고 타겟 SDK 버전이 33인 빌드 버전을 정의할 수 있습니다.

    • Build Types: 빌드 변형 구성에 설명된 대로 빌드 구성을 만들고 수정할 수 있습니다. 기본적으로 각 모듈에는 디버그 빌드 유형과 출시 빌드 유형이 있으며 필요한 경우 추가로 정의할 수 있습니다.