안드로이드 스튜디오에서 프로젝트를 생성하면 자동적으로 모듈(앱)과 함께 여러 폴더 및 파일들이 생성된다. 각 폴더와 파일의 역할이 무엇이고 설정 가능한 항목들에는 무엇이 있는지도 알아보자.
앱 구성 파일
- app (모듈)
- 프로젝트를 만들면 자동으로 생성되는 모듈
- 일반적으로 모듈 하나 = 앱 하나
- 모듈 = 앱 단위
- 프로젝트 = 여러 모듈을 묶어서 관리
build.gradle
프로젝트 수준, 모듈 수준 그래들 파일이 별도로 존재
- build.gradle.kts (Project: XXX), build.gradle.kts (Module: app)
- 대부분 앱에 대한 설정을 하므로 모듈 수준 그래들 파일에 설정함
1. 플러그인 설정
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
}
2. 컴파일 버전 설정
compileSdk = 34 // 안드로이드 SDK 34버전을 적용해서 컴파일
앱을 컴파일하거나 빌드할 때 적용할 버전
3. 앱 식별자 설정
applicationId "com.example.androidlab"
- 고유한 문자열로 지정해야 함
- 이미 같은 식별자를 가진 앱이 있으면
- 구글 플레이 스토어에 등록 X
- 스마트폰에 앱 설치 X
- 이미 같은 식별자를 가진 앱이 있으면
4. SDK 버전 설정
minSdk = 24
targetSdk = 34
- minSdk: 이 앱을 설치할 수 있는 기기의 최소 SDK 버전 (더 아래 버전은 지원 X)
- targetSdk: 개발할 때 적용되는 SDK 버전
5. 앱 버전 설정
versionCode = 1
versionName = "1.0"
6. 컴파일 옵션
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
- 개발 언어 버전 설정
- 자바 버전 선언을 생략하면 디폴트로 1.6이 적용됨
7. 라이브러리 설정
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
}
안드로이드 SDK 외의 모든 오픈소스 라이브러리나 androidx 라이브러리 등을 dependencies에 선언해야 함
AndroidManifest.xml
- 안드로이드 앱의 메인 환경 파일
- 안드로이드 시스템은 매니페스트 파일에 설정한 대로 사용자의 폰에서 앱을 실행함
1. 네임스페이스 선언
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androidlab">
<manifest>: 매니페스트 파일의 root 태그
- xmlns: XML의 네임스페이스 선언
- http://schemas.android.com/apk/res/android: 안드로이드 표준 네임스페이스
- package: 매니페스트 파일에 선언한 컴포넌트 클래스의 기본 패키지명
<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/Theme.AndroidLab">
...
</application>
<application>: 앱 전체를 대상으로 하는 설정을 담는 태그
- icon: 앱 아이콘 설정
- label: 앱 이름 설정
- theme: 앱에 적용해야 하는 테마
2. 액티비티 선언
- 안드로이드 시스템이 컴포넌트를 인식하도록 매니페스트 파일에 컴포넌트를 등록해야 함
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 컴포넌트 하나 당 태그 하나로 등록
- 각 컴포넌트를 <activity>, <service>, <receiver>, <provider> 태그로 등록
- name: 액티비티 필수 속성. 클래스 이름을 등록하면 됨
- “.”은 해당 클래스가 <manifest> 태그에 등록한 패키지 경로에 있다는 의미
- <intent-filter> 하위 내용
- 앱 아이콘을 클릭했을 때 실행되어야 하는 액티비티로 지정함
- 이 태그를 생략하면, 앱 아이콘이 없는(사용자가 직접 실행할 수 없는) 앱이 됨
리소스 폴더 (res)
앱의 리소스를 등록하는 목적으로 사용
구조
- drawable: 이미지 리소스
- layout: UI 구성에 필요한 XML 리소스
- mipmap: 앱 아이콘 이미지
- values: 문자열 등의 값으로 이용되는 리소스
특징
- res 폴더 아래에 리소스를 만들면 자동으로 R.java 파일에 상수 변수로 리소스가 등록됨
- 해당 상수변수로 코드에서 리소스 이용
- 리소스 폴더의 하위 폴더 정의 불가
- 리소스 파일명에 대문자 불가
- 카멜 케이스를 사용할 수 없으므로 스네이크 케이스 이용
위 포스팅은 아래 교재를 통해 학습한 내용을 기반으로 작성되었습니다.
↓ ↓ ↓ <Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린> 보러가기 ↓ ↓ ↓
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
728x90
'기타 > Android' 카테고리의 다른 글
[Android] 안드로이드 앱의 기본 구조에 대해 알아보자 (3) | 2024.09.12 |
---|
댓글