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