
안드로이드 프로젝트 기본 구조 이해하기
이후에 앱을 만들 때 어떤 파일을 수정해야 하는지 알기 위해선 안드로이드 프로젝트 기본 구조를 이해하는게 필요하다
안드로이드 프로젝트 폴더 구조
1. manifests (AndroidManifest.xml)

- 앱의 설정 정보가 들어 있는 파일
- 예를 들어, 앱의 이름, 아이콘, 권한, 실행 액티비티(Activity) 설정이 포함
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworldapp">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="HelloWorldApp"
android:theme="@style/Theme.HelloWorldApp">
<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>
- 위 코드에서 `<activity android:name=".MainActivity"> `부분이 앱이 실행될 때 처음 실행되는 화면을 지정하는 코드
- intent-filter 부분이 있어서, 앱 아이콘을 클릭하면 MainActivity가 실행됨
2. java (코틀린 코드가 들어가는 폴더)

- com.example.myapplication 패키지 안에 앱의 로직을 담당하는 코드가 있음
- MainActivity.kt 파일이 있어.→ 앱의 첫 번째 화면을 담당하는 코드
package com.example.helloworldapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
- class MainActivity : AppCompatActivity()
→ MainActivity는 AppCompatActivity를 상속받아서 액티비티(화면)를 담당하는 클래스 - onCreate()
→ 앱이 실행될 때 처음 실행되는 함수 - setContentView(R.layout.activity_main)
→ activity_main.xml(UI 레이아웃 파일)을 현재 화면으로 설정하는 코드
3. res (리소스 폴더, UI 관련 파일)

- layout/ → 화면의 배치 파일(XML) 이 저장됨
- activity_main.xml이 기본으로 들어있음
- drawable/ → 앱에서 사용할 이미지 파일 (PNG, SVG 등) 이 들어감
- mipmap/ → 앱의 아이콘 이미지 가 들어가는 곳
- values/ → 색상, 문자열, 스타일 등 앱의 설정 값이 저장됨
- colors.xml, strings.xml, themes.xml 같은 파일이 있음
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
- ConstraintLayout → 화면 배치를 담당하는 기본 레이아웃
- <TextView> → 화면에 "Hello World!" 라는 글씨를 표시하는 UI 요소
- layout_width="wrap_content" → 텍스트 크기에 맞춰 자동 조정
- layout_constraintTop_toTopOf="parent" → 화면 중앙에 정렬하는 속성
문제 발생 >
만약 activity_main.xml 파일이 없다면 res > 우클릭 > New > Android Resource File 클릭해서 새로 만들면 된다
새로 만들었을 때 `androidx.constraintlayout.widget.ConstraintLayout` 부분에 에러가 뜬다면, `build.gradle (Module : app)` 파일에서 dependencies를 확인해야 한다. 아래 코드가 없다면 추가하기
implementation(libs.androidx.constraintlayout)
4. Gradle Scripts (앱의 빌드 설정 파일)
안드로이드 앱은 Gradle 이라는 빌드 시스템을 사용. 이 중 중요한 파일은 2개
1) build.gradle (Module : app)
앱에서 사용할 라이브러리를 추가하는 곳
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.4.0'
}
2) gradle.properties
앱의 실행 속도를 높이거나 개발 환경을 설정할 때 사용
실습 ) 버튼 추가해서 클릭 이벤트 만들기
activity_main.xml에 버튼을 추가하고, 버튼을 클릭하면 "버튼이 눌렸어요!" 라고 표시되도록 만들기

1. 버튼 추가하기(activity_main.xml) 수정
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="클릭하세요!"
app:layout_constraintTop_toBottomOf="@id/textView"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
- android:id="@+id/myButton" → 버튼의 ID를 myButton으로 지정.
- android:text="클릭하세요!" → 버튼의 글씨를 설정
2. 버튼 클릭 이벤트 추가(MainActivity.kt)
package com.example.helloworldapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.myButton)
val textView = findViewById<TextView>(R.id.textView)
button.setOnClickListener {
textView.text = "버튼이 눌렸어요!"
}
}
}
- findViewById<Button>(R.id.myButton) → XML에서 만든 버튼을 코드에서 찾음.
- button.setOnClickListener {} → 버튼 클릭 시 실행할 동작을 설정.
정리
▷ 안드로이드 프로젝트 구조(Manifest, Java, res, Gradle)
▷ 액티비티와 레이아웃 파일의 역할 익히기
▷ 버튼을 추가하고 클릭 이벤트 만들기
'개발새발개발 > Kotlin' 카테고리의 다른 글
[Kotlin] 안드로이드 스튜디오 배경색, 기본 컬러 지정하는 법 (0) | 2025.03.25 |
---|---|
[Kotlin] 안드로이드 스튜디오 기본 컬러 정의하는 법(기본, Jetpack) (0) | 2025.03.23 |
[Kotlin] 안드로이드 앱의 구조 및 동작 원리, 자바가 아닌 코틀린을 사용하는이유 (1) | 2025.03.16 |
[Kotlin] 안드로이드 스튜디오에서 Toast와 시스템바 고려해서 화면 확장하는 방법 (0) | 2025.03.15 |
[Kotlin] 안드로이드 스튜디오 - ViewBinding을 활용한 스톱워치 앱만들기 (0) | 2025.03.14 |