안녕하세요, 소프트웨어 공장에 오신 것을 환영합니다. 오늘은 Android 애플리케이션 개발을 시작하면서 반드시 알아야 할 Android 프로젝트 구조에 대해 자세히 살펴보겠습니다. 많은 초보자들이 프로젝트의 복잡한 디렉터리와 파일 구조 때문에 혼란을 겪곤 합니다. 이번 포스팅을 통해 Android 프로젝트를 구성하는 중요한 요소들이 어떤 역할을 하는지 예제를 통해 이해해보겠습니다.
Android 프로젝트 구조의 기본 개요
Android Studio에서 새 프로젝트를 생성하면 여러 디렉터리와 파일들이 자동으로 생성됩니다. 각 디렉터리와 파일은 Android 애플리케이션을 만들기 위해 서로 다른 중요한 역할을 담당하고 있습니다. 기본적인 구조는 다음과 같습니다.
MyApplication/
├── .idea/
├── app/
│ ├── manifests/
│ ├── java/
│ └── res/
├── build/
├── gradle/
├── .gitignore
├── build.gradle
└── settings.gradle
위와 같은 구조를 보면 상당히 많은 디렉터리와 파일이 보입니다. 이제 각 요소의 역할을 차례대로 살펴보겠습니다.
1. .idea/ 디렉터리
.idea/
디렉터리는 Android Studio 프로젝트 설정과 관련된 파일을 저장합니다. 예를 들어, 코드 스타일, 런타임 설정 등이 이 디렉터리에 포함됩니다. 팀에서 같은 개발 환경을 유지하기 위해 중요한 역할을 하지만, Android 애플리케이션 자체와는 직접적인 관련이 없습니다.
2. app/ 디렉터리
app/
디렉터리는 실제 애플리케이션 소스 코드와 리소스 파일들이 있는 가장 중요한 부분입니다. 이 디렉터리는 다시 여러 하위 디렉터리로 나누어집니다.
2.1 manifests/ 디렉터리
manifests/
디렉터리에는 애플리케이션의 AndroidManifest.xml 파일이 있습니다. 이 파일은 애플리케이션의 메타 정보를 정의합니다. 예를 들어, 애플리케이션의 이름, 사용 권한, 구성 요소(Activity, Service 등)를 정의합니다.
예시: AndroidManifest.xml
<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: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>
위 예시에서 MainActivity
는 애플리케이션이 실행될 때 첫 번째로 보여지는 화면을 정의하고 있습니다.
2.2 java/ 디렉터리
java/
디렉터리는 애플리케이션의 Java 또는 Kotlin 코드가 들어있는 곳입니다. 일반적으로 다음과 같은 구조를 가집니다.
app/
└── java/
└── com/
└── example/
└── myapp/
├── MainActivity.java
└── ...
MainActivity.java
는 애플리케이션의 메인 화면을 담당하는 클래스입니다. 이 외에도 여러 기능을 구현하기 위한 클래스 파일들이 이 디렉터리에 위치합니다.
예시: MainActivity.java
package com.example.myapp;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
위 코드에서는 onCreate()
메서드에서 activity_main.xml
레이아웃을 화면에 설정합니다.
2.3 res/ 디렉터리
res/
디렉터리는 애플리케이션의 리소스 파일들을 저장하는 곳입니다. 이미지, 문자열, 레이아웃 등 다양한 리소스 파일들이 여기에서 관리됩니다.
- drawable/: 이미지 리소스를 저장합니다.
- layout/: UI 레이아웃 파일을 저장합니다. 일반적으로 XML 형식으로 정의됩니다.
- values/: 문자열, 색상, 스타일 등 애플리케이션에서 사용하는 다양한 값을 정의하는 파일들이 위치합니다.
예시: activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/helloTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, Android!" />
</RelativeLayout>
위 레이아웃 파일은 단순한 TextView
를 포함하고 있으며, "Hello, Android!"라는 텍스트를 화면에 표시합니다.
3. build/ 디렉터리
build/
디렉터리는 프로젝트를 빌드하면서 생성된 자동 생성 파일들이 위치하는 곳입니다. 개발자는 일반적으로 이 디렉터리의 파일을 수정할 필요가 없으며, 빌드 출력물이나 캐시 파일들이 저장됩니다.
4. gradle/ 디렉터리
gradle/
디렉터리는 Gradle 빌드 도구와 관련된 설정 파일들이 위치합니다. 프로젝트 빌드 프로세스를 관리하는 데 사용되며, 프로젝트 전반에 걸친 종속성 및 플러그인을 정의합니다.
5. 주요 Gradle 파일
5.1 build.gradle (Project Level)
이 파일은 프로젝트의 전역 설정을 관리합니다. 모든 모듈에서 공통으로 사용하는 종속성이나 Gradle 플러그인을 정의할 수 있습니다.
예시: build.gradle (Project Level)
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:8.0.2"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
5.2 build.gradle (App Level)
이 파일은 app
모듈에 대한 빌드 설정을 관리합니다. 앱의 종속성, 컴파일 SDK 버전, 기본 설정 등이 정의됩니다.
예시: build.gradle (App Level)
plugins {
id 'com.android.application'
}
android {
compileSdk 34
defaultConfig {
applicationId "com.example.myapp"
minSdk 21
targetSdk 34
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
}
위 파일에서는 앱의 컴파일 SDK 버전과 대상 SDK 버전, 앱의 종속성들을 정의하고 있습니다.
6. .gitignore 파일
.gitignore
파일은 Git 버전 관리를 사용할 때, 추적하지 않을 파일이나 디렉터리를 정의합니다. 일반적으로 build/
, .idea/
, 그리고 local.properties
같은 파일들이 여기에 포함됩니다.
7. settings.gradle 파일
settings.gradle
파일은 프로젝트에 포함된 모든 모듈을 정의합니다. 여러 모듈을 포함하는 프로젝트라면 이 파일에서 해당 모듈들을 나열하게 됩니다.
예시: settings.gradle
include ':app'
위 파일에서는 app
모듈을 포함하고 있음을 알 수 있습니다.
마무리
이렇게 Android 프로젝트의 기본 구조와 각 디렉터리, 파일의 역할을 살펴보았습니다. 이러한 구조를 이해하면 프로젝트를 효율적으로 관리하고, 문제를 해결하는 데 큰 도움이 됩니다. 처음에는 복잡하게 느껴질 수 있지만, 자주 접하다 보면 자연스럽게 익숙해질 것입니다.
다음 포스팅에서는 Gradle을 활용한 빌드 설정의 이해에 대해 다룰 예정이니, 많은 기대 부탁드립니다. 궁금한 점이 있다면 댓글로 남겨주세요. 감사합니다!
'Android' 카테고리의 다른 글
Android Event 처리 및 데이터 연동 (0) | 2024.10.20 |
---|---|
Android 사용자 인터페이스 디자인 및 레이아웃 사용법 (0) | 2024.10.19 |
첫 Android 애플리케이션 만들기 (0) | 2024.10.17 |
Android Studio 설치 (0) | 2024.10.07 |
Android 개발의 첫걸음 (0) | 2024.10.06 |