Android Project Structure

3. 안드로이드 프로젝트 구조

안드로이드 프로젝트는 여러 파일과 디렉토리로 구성되어 있으며, 각각의 파일과 디렉토리는 특정한 역할을 합니다. 여기서는 안드로이드 프로젝트의 기본 구조와 주요 파일에 대해 설명하겠습니다.

파일 및 디렉토리 구조

안드로이드 프로젝트는 일반적으로 다음과 같은 디렉토리와 파일 구조를 가집니다:

MyApplication/
├── .idea/
├── app/
│   ├── build/
│   ├── libs/
│   ├── src/
│   │   ├── androidTest/
│   │   ├── main/
│   │   │   ├── java/
│   │   │   ├── res/
│   │   │   ├── AndroidManifest.xml
│   │   ├── test/
│   ├── build.gradle
│   └── proguard-rules.pro
├── build/
├── gradle/
├── .gitignore
├── build.gradle
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── local.properties
주요 디렉토리 및 파일 설명
  • .idea/: Android Studio 설정 파일을 포함합니다.
  • app/: 실제 애플리케이션 소스 코드와 리소스가 포함된 디렉토리입니다.
  • build/: 빌드된 출력물(예: APK 파일)이 생성되는 디렉토리입니다.
  • libs/: 외부 라이브러리를 포함할 수 있는 디렉토리입니다.
  • src/: 소스 코드와 리소스가 포함된 디렉토리입니다.
    • androidTest/: 안드로이드 계층에서 실행되는 통합 테스트 코드를 포함합니다.
    • main/: 애플리케이션의 주요 소스 코드와 리소스를 포함합니다.
    • java/: Java/Kotlin 소스 코드가 포함된 디렉토리입니다.
    • res/: 애플리케이션의 리소스 파일(예: XML 레이아웃, 이미지, 문자열 등)이 포함된 디렉토리입니다.
    • AndroidManifest.xml: 애플리케이션의 필수 설정 정보가 포함된 파일입니다.
    • test/: JVM에서 실행되는 단위 테스트 코드를 포함합니다.
  • build.gradle: 모듈 수준의 Gradle 빌드 설정 파일입니다.
  • proguard-rules.pro: ProGuard와 R8에 사용되는 난독화 규칙을 정의합니다.
  • build/: 프로젝트의 빌드 출력물이 포함된 디렉토리입니다.
  • gradle/: Gradle 래퍼 설정 파일이 포함된 디렉토리입니다.
  • .gitignore: Git 버전 관리에서 제외할 파일 목록을 정의합니다.
  • build.gradle: 프로젝트 수준의 Gradle 빌드 설정 파일입니다.
  • gradle.properties: Gradle 빌드 설정에 사용되는 속성을 정의합니다.
  • gradlew: Unix 기반 시스템용 Gradle 래퍼 스크립트입니다.
  • gradlew.bat: Windows용 Gradle 래퍼 스크립트입니다.
  • settings.gradle: 프로젝트 설정 파일로, 포함된 모듈을 정의합니다.
  • local.properties: 로컬 설정 파일로, Android SDK 경로 등이 포함됩니다.

주요 파일 설명

AndroidManifest.xml
  • 위치: app/src/main/AndroidManifest.xml
  • 설명: 애플리케이션의 필수 설정 정보를 포함하는 파일입니다. 애플리케이션의 패키지 이름, 컴포넌트(Activity, Service, Receiver 등), 권한, 하드웨어 및 소프트웨어 요구사항 등을 정의합니다.
  • 예시:
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.myapp">

      <application
          android:allowBackup="true"
          android:icon="@mipmap/ic_launcher"
          android:label="@string/app_name"
          android:roundIcon="@mipmap/ic_launcher_round"
          android:supportsRtl="true"
          android:theme="@style/AppTheme">

          <activity android:name=".MainActivity">
              <intent-filter>
                  <action android:name="android.intent.action.MAIN" />
                  <category android:name="android.intent.category.LAUNCHER" />
              </intent-filter>
          </activity>

      </application>
  </manifest>
Gradle 설정 파일

Gradle은 안드로이드 프로젝트의 빌드 시스템으로, 빌드, 테스트, 배포 작업을 자동화합니다.

프로젝트 수준의 build.gradle
  • 위치: MyApplication/build.gradle
  • 설명: 프로젝트 전체에 영향을 미치는 설정을 포함합니다. Gradle 플러그인, 저장소, 종속성 관리 등을 정의합니다.
  • 예시:
  buildscript {
      ext.kotlin_version = '1.6.10'
      repositories {
          google()
          mavenCentral()
      }
      dependencies {
          classpath "com.android.tools.build:gradle:7.0.3"
          classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      }
  }

  allprojects {
      repositories {
          google()
          mavenCentral()
      }
  }
모듈 수준의 build.gradle
  • 위치: MyApplication/app/build.gradle
  • 설명: 특정 모듈(예: 앱 모듈)에 대한 빌드 설정을 포함합니다. 앱 컴파일 및 링킹, 앱 버전, 빌드 타입, 종속성 등을 정의합니다.
  • 예시:
  plugins {
      id 'com.android.application'
      id 'kotlin-android'
  }

  android {
      compileSdkVersion 31
      defaultConfig {
          applicationId "com.example.myapp"
          minSdkVersion 21
          targetSdkVersion 31
          versionCode 1
          versionName "1.0"

          testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
      }
      buildTypes {
          release {
              minifyEnabled false
              proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
          }
      }
  }

  dependencies {
      implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
      implementation 'androidx.core:core-ktx:1.6.0'
      implementation 'androidx.appcompat:appcompat:1.3.1'
      implementation 'com.google.android.material:material:1.4.0'
      implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
      testImplementation 'junit:junit:4.13.2'
      androidTestImplementation 'androidx.test.ext:junit:1.1.3'
      androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
  }

이로써 안드로이드 프로젝트의 구조와 주요 파일에 대해 설명을 마칩니다. 각 파일과 디렉토리는 프로젝트의 다양한 측면을 관리하고 설정하는 데 중요한 역할을 합니다. 이러한 구조와 파일을 이해하면 안드로이드 개발에 필요한 기본 지식을 습득하는 데 큰 도움이 됩니다.

Leave a Reply

Your email address will not be published. Required fields are marked *