프로젝트 개요

Android 스튜디오의 프로젝트에는 소스 코드 및 애셋에서 테스트 코드와 빌드 설정에 이르기까지 앱을 위한 작업공간을 정의하는 모든 항목이 포함됩니다. 새 프로젝트를 시작하면 Android 스튜디오에서 모든 파일에 필요한 구조를 생성하고 이를 IDE 왼쪽에 있는 Project 창(View > Tool Windows > Project 클릭)에 표시합니다. 이 페이지에서는 프로젝트에 포함된 주요 구성요소에 관해 간략하게 소개합니다.

모듈

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

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

File > New > New Module을 클릭하여 프로젝트에 새 모듈을 추가할 수 있습니다.

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

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

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

  • 스마트폰 및 태블릿 모듈
  • Wear OS 모듈
  • Android TV 모듈
  • Glass 모듈

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

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

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

자세한 내용은 Dynamic Delivery 지원 추가를 참조하세요.

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

Android 스튜디오는 Create New Module 창에서 다음과 같은 라이브러리 모듈을 제공합니다.

  • Android 라이브러리: 이 유형의 라이브러리는 소스 코드, 리소스 및 manifest 파일을 비롯하여 Android 프로젝트에서 지원되는 모든 파일 형식을 포함할 수 있습니다. 빌드 결과로 Android 보관 파일(AAR)이 생성되며, 이 파일은 Android 앱 모듈에 종속성으로 추가할 수 있습니다.
  • 자바 라이브러리: 이 유형의 라이브러리는 자바 소스 파일만 포함할 수 있습니다. 빌드 결과로 자바 아카이브(JAR) 파일이 생성되며, 이 파일은 Android 앱 모듈 또는 기타 자바 프로젝트에 종속성으로 추가할 수 있습니다.
Google Cloud 모듈
Google Cloud 백엔드 코드를 포함할 수 있는 컨테이너를 제공합니다. 이 모듈은 단순한 HTTP, Cloud Endpoints 및 클라우드 메시징을 사용하여 앱에 연결하는 자바 App Engine 백엔드를 위한 종속성 및 필수 코드를 포함합니다. 백엔드를 개발하여 앱에 필요한 클라우드 서비스를 제공할 수 있습니다.

Android 스튜디오를 사용하여 Google Cloud 모듈을 개발하면 같은 프로젝트에서 앱 코드 및 백엔드 코드를 관리할 수 있습니다. 또한 백엔드 코드를 로컬로 실행하고 테스트한 후 Android 스튜디오를 사용하여 Google Cloud 모듈을 배포할 수 있습니다.

Google Cloud 모듈을 실행하고 배포하는 방법을 자세히 알아보려면 백엔드 실행, 테스트 및 배포를 참조하세요.

모듈을 하위 프로젝트라고 지칭해도 됩니다. Gradle도 모듈을 프로젝트로 나타내기 때문입니다. 예를 들어, 라이브러리 모듈을 생성하고 이를 종속성으로 Android 앱 모듈에 추가하려는 경우 다음과 같이 모듈을 선언해야 합니다.

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

프로젝트 파일

Android 스튜디오는 기본적으로 Android 뷰에 프로젝트 파일을 표시합니다. 이 뷰는 디스크에 있는 실제 파일 계층 구조를 반영하지는 않지만, 모듈 및 파일 형식별로 구성되어 있으며 자주 사용되지 않는 파일이나 디렉터리는 숨기므로 프로젝트의 주요 소스 파일을 간단하게 탐색할 수 있습니다. 디스크상의 구조와 비교하여 몇 가지 구조적으로 변경된 사항은 다음과 같습니다.

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

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

manifests
AndroidManifest.xml 파일을 포함합니다.
java
JUnit 테스트 코드를 비롯한 자바 소스 코드 파일을 포함합니다. 이 파일은 패키지 이름별로 구분됩니다.
res
코드가 아닌 모든 리소스(예: XML 레이아웃, UI 문자열, 비트맵 이미지 등)를 포함합니다. 이 리소스는 해당하는 하위 디렉터리로 나뉩니다. 가능한 모든 리소스 유형에 대한 자세한 내용은 리소스 제공을 참조하세요.

Android 프로젝트 뷰

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

Project 뷰를 선택하면 훨씬 많은 파일과 디렉터리를 볼 수 있습니다. 그중 가장 중요한 디렉터리는 다음과 같습니다.

module-name/
build/
빌드 출력을 포함합니다.
libs/
비공개 라이브러리를 포함합니다.
src/
다음 하위 디렉터리에 모듈에 관한 모든 코드 및 리소스 파일을 포함합니다.
androidTest/
Android 기기에서 실행되는 계측 테스트에 관한 코드를 포함합니다. 자세한 내용은 Android 테스트 도움말을 참조하세요.
main/
'기본' 소스 세트 파일, 즉 모든 빌드 변형이 공유하는 Android 코드 및 리소스(디버그 빌드 유형의 경우 src/debug/와 같이 같은 수준의 디렉터리에 있는 다른 빌드 변형의 파일)를 포함합니다.
AndroidManifest.xml
애플리케이션의 특성 및 각 구성요소를 설명합니다. 자세한 내용은 AndroidManifest.xml 도움말을 참조하세요.
java/
자바 코드 소스를 포함합니다.
jni/
자바 네이티브 인터페이스(JNI)를 사용하는 네이티브 코드를 포함합니다. 자세한 내용은 Android NDK 도움말을 참조하세요.
gen/
Android 스튜디오에서 생성하는 자바 파일(예: R.java 파일) 및 AIDL 파일에서 생성되는 인터페이스를 포함합니다.
res/
애플리케이션 리소스(예: 드로어블 파일, 레이아웃 파일 및 UI 문자열)를 포함합니다. 자세한 내용은 애플리케이션 리소스를 참조하세요.
assets/
.apk 파일로 있는 그대로 컴파일해야 하는 파일을 포함합니다. URI를 사용하여 일반적인 파일 시스템과 같은 방식으로 이 디렉터리를 탐색하고 AssetManager 를 사용하여 파일을 바이트 스트림으로 읽을 수 있습니다. 예를 들어, 이는 텍스처 및 게임 데이터에 사용하기 좋은 위치입니다.
test/
호스트 JVM에서 실행되는 로컬 테스트의 코드를 포함합니다.
build.gradle(모듈)
이는 모듈별 빌드설정을 정의합니다.
build.gradle(프로젝트)
이는 모든 모듈에 적용되는 빌드 설정을 정의합니다. 이 파일은 프로젝트에 반드시 필요하므로 기타 모든 소스 코드와 함께 버전 관리에서 유지해야 합니다.

기타 빌드 파일에 관해 자세히 알아보려면 빌드설정을 참조하세요.

프로젝트 구조 설정

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

  • SDK Location: 프로젝트에서 사용하는 JDK, Android SDK 및 Android NDK의 위치를 설정합니다.
  • Project: Gradle 및 Gradle용 Android 플러그인의 버전과 저장소 위치 이름을 설정합니다.
  • Developer Services: Google이나 타사에서 제공하는 Android 스튜디오 부가기능 구성요소의 설정을 포함합니다. 아래의 Developer Services를 참조하세요.
  • Modules: 타겟 SDK 및 최소 SDK, 앱 서명, 라이브러리 종속성을 비롯한 모듈별 빌드 설정을 수정할 수 있습니다. 아래의 Modules를 참조하세요.

Developer Services

Project Structure 대화상자의 Developer Services 섹션에는 앱에 사용할 수 있는 여러 서비스를 설정할 수 있는 페이지가 포함되어 있습니다. 이 섹션에 있는 페이지는 다음과 같습니다.

  • Google AdMob: Google의 Google AdMob 구성요소를 사용 설정할 수 있습니다. 이 구성요소는 사용자를 파악하여 사용자에게 맞춘 광고를 표시하는 데 도움이 됩니다.
  • Analytics: Google 애널리틱스를 사용 설정할 수 있습니다. 이는 다양한 기기와 환경에서 사용자의 앱 상호작용을 측정하는 데 도움이 됩니다.
  • Authentication: 사용자가 Google 로그인을 사용하여 Google 계정으로 앱에 로그인할 수 있습니다.
  • Cloud: 앱에 사용하도록 Firebase 클라우드 기반 서비스를 사용 설정할 수 있습니다.
  • Notifications: Google 클라우드 메시징을 사용하여 앱과 서버 간에 통신할 수 있습니다.

이러한 서비스를 사용 설정하면 Android 스튜디오가 필요한 종속성 및 권한을 앱에 추가할 수 있습니다. 각 설정 페이지에는 이러한 종속성 및 권한뿐 아니라 Android 스튜디오에서 이루어지는 다른 작업(관련 서비스를 사용 설정한 경우)도 나열됩니다.

Modules

Modules 설정 섹션에서는 각 프로젝트 모듈에 관한 설정 옵션을 변경할 수 있습니다. 각 모듈의 설정 페이지는 다음 탭으로 나뉘어 있습니다.

  • Properties: 모듈을 컴파일하는 데 사용할 SDK 및 빌드 도구의 버전을 지정합니다.
  • Signing: APK에 서명하는 데 사용할 인증서를 지정합니다.
  • Flavors: 여러 빌드 버전을 생성할 수 있습니다. 각 버전은 모듈의 최소 SDK 및 타겟 SDK 버전, 버전 코드 및 버전 이름 등 일련의 구성 설정을 지정합니다. 예를 들어, 최소 SDK 버전이 15이고 타겟 SDK 버전이 21인 빌드 버전과 최소 SDK 버전이 19이고 타겟 SDK 버전이 23인 빌드 버전을 정의할 수 있습니다.
  • Build Types: Gradle 빌드 설정의 설명대로 빌드 설정을 만들고 수정할 수 있습니다. 기본적으로 각 모듈에는 디버그 빌드 유형과 출시 빌드 유형이 있지만, 필요한 경우 추가로 정의할 수 있습니다.
  • Dependencies: 이 모듈에 관한 라이브러리, 파일 및 모듈 종속성을 목록으로 표시합니다. 이 창에서 종속성을 추가, 수정 및 삭제할 수 있습니다. 모듈 종속성에 관해 자세히 알아보려면 Gradle 빌드 설정을 참조하세요.