1. 시작 진입점부터 살펴보기
Android 앱이 어떻게 시작되는지 알려면 가장 먼저 전역 설정 파일인 AndroidManifest.xml을 봐야 합니다.
AndroidManifest.xml을 열고 다음 코드를 찾으세요:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>Code language: HTML, XML (xml)
이 코드는 세 가지 중요한 일을 합니다:
- Activity 등록:
MainActivity는 반드시AndroidManifest.xml에 등록되어야 합니다. 그렇지 않으면 시스템이 인식하지 못해 사용할 수 없습니다. - 메인 진입점 선언:
<action android:name="android.intent.action.MAIN" />은 이 Activity가 앱의 메인 Activity임을 나타냅니다. - 런처 진입점 선언:
<category android:name="android.intent.category.LAUNCHER" />은 홈 화면의 앱 아이콘을 탭했을 때 가장 먼저 시작되는 Activity임을 나타냅니다.
MAIN과LAUNCHER를 동시에 가진 Activity만 앱의 시작 진입점이 됩니다.
2. Activity란 무엇인가
Activity는 Android 앱의 얼굴입니다. 화면에서 보이는 모든 것은 Activity 안에서 실행됩니다.
app/java/ 디렉터리 아래의 MainActivity.java를 열면 다음과 같습니다:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}Code language: JavaScript (javascript)
하나씩 뜯어봅시다:
| 코드 | 설명 |
|---|---|
extends AppCompatActivity | AppCompatActivity를 상속합니다. Android 2.1까지 하위 호환되는 Activity입니다. |
모든 Activity는 Activity(또는 하위 클래스)를 상속해야 합니다 | Android 컴포넌트의 필수 요구사항입니다 |
onCreate() | Activity가 생성될 때 자동으로 실행되는 수명 주기 메서드 |
setContentView(R.layout.activity_main) | 현재 Activity에 레이아웃 파일을 로드하고 바인딩합니다 |

3. 로직과 뷰의 분리 (MVC와 유사)
Android는 로직과 뷰의 분리라는 설계 철학을 따르며, 이는 MVC 패턴과 비슷합니다:
- 로직:
java/디렉터리의 Activity 클래스에 작성 - 뷰:
res/layout/디렉터리의 XML 레이아웃 파일에 작성
setContentView(R.layout.activity_main)은 로직과 뷰를 연결하는 다리입니다. activity_main.xml 레이아웃을 MainActivity 안에 “끼워 넣는” 역할을 합니다.

4. 레이아웃 파일 분석
레이아웃 파일은 res/layout/activity_main.xml에 있습니다.

Android Studio는 두 가지 편집 모드를 제공합니다:
| 모드 | 설명 |
|---|---|
| Design | 드래그 앤 드롭 방식의 시각적 편집 화면 (WYSIWYG) |
| Text | XML 코드 편집 화면 |
activity_main.xml을 열면 핵심 내용은 다음과 같습니다:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="안녕하세요 Foxdevelop" />Code language: HTML, XML (xml)
TextView는 텍스트를 표시하는 데 사용되는 기본 위젯입니다android:text속성은 위젯에 표시될 텍스트 내용을 지정합니다
화면에서 보이는 “Hello World”(또는 사용자 정의 텍스트)는 Java 코드가 아니라 여기서 정의됩니다.
5. 전체 시작 흐름 요약
시작 과정을 순서대로 정리하면 다음과 같습니다:
사용자가 홈 화면의 앱 아이콘을 탭
↓
시스템이 AndroidManifest.xml을 읽음
↓
MAIN + LAUNCHER가 있는 Activity(MainActivity)를 찾음
↓
MainActivity 인스턴스 생성
↓
onCreate() 수명 주기 메서드 실행
↓
setContentView()가 activity_main.xml 레이아웃 로드
↓
레이아웃의 TextView가 텍스트 표시
↓
화면에 "Hello World" 출력Code language: CSS (css)
한 문장으로 요약하면:
설정 파일이 진입점 선언 → 메인 Activity 생성 → onCreate 실행 → 레이아웃 파일 로드 → 화면에 렌더링
6. 개발 팁
- 에뮬레이터를 매번 종료할 필요는 없습니다: 실행 후 앱을 중지하려면 툴바의 🔴 Stop 버튼만 누르면 됩니다. 종료하거나 에뮬레이터를 끌 필요가 없습니다.
- 코드를 수정한 후에는 ▶ Run을 클릭하여 재배포하면 변경 사항을 바로 확인할 수 있습니다.

7. 요약
| 계층 | 해당 파일 | 책임 |
|---|---|---|
| 설정 계층 | AndroidManifest.xml | 진입 Activity 선언 |
| 로직 계층 | MainActivity.java | Activity 동작 제어 |
| 뷰 계층 | activity_main.xml | 화면 내용 정의 |
설정 파일 → 메인 Activity →
onCreate()메서드 → 뷰 레이아웃 로드 → 화면 표시
앱은 어떻게 실행되는 걸까요