모바일 프로그래밍을 공부하면서 정리한 안드로이드 프로젝트 구조에 대해 작성해보겠습니다.
---
📂 프로젝트 구조
1. Manifests 폴더
`AndroidManifest.xml` 파일이 위치하며, 앱의 필수 정보를 정의합니다.
📌 주요 내용
- 애플리케이션 이름 및 버전 저장
- 앱에서 선언한 구성 요소, 기능, 요구사항 관리
- 외부 라이브러리 정의
- 등록정보 관리(권한, 페이지, 서비스 등)
- 새로운 액티비티 추가 시 반드시 manifest에 등록해야 함
📜 AndroidManifest.xml 예제
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="My Application"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/Theme.MyApplication">
<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>
</application>
</manifest>
📝 주요 속성 설명
- `android:icon="@mipmap/ic_launcher"` → 앱 아이콘 지정
- `android:label="My Application"` → 앱 이름 설정
- `tools:targetApi="31"` → 타겟 SDK 버전 설정
- `<intent-filter>` → 액티비티의 동작을 정의 (앱의 진입점 설정)
---
2. Java 폴더
앱의 기능 구현을 위한 소스 코드 파일이 위치하는 공간입니다.
📌 주요 내용
- 기능 구현을 담당하는 소스 코드 포함
- `androidTest`를 활용하여 단위 테스트 가능
- 액티비티, 서비스 등 애플리케이션의 로직을 처리하는 코드가 포함됨
📜 MainActivity.java 예제
package cohttp://m.pratice.ex.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
📝 주요 개념
클래스 / 메소드 | 설명 |
AppCompatActivity | 기본 액티비티 클래스로 UI를 제어 |
onCreate | Activity를 최초 생성할 때 불려지는 라이프사이클 함수로써 리소스초기화 등의 작업을 수행한다. |
setContentView | XML 레이아웃을 액티비티와 연결 |
3. Res 폴더
앱에서 사용하는 리소스 파일을 저장하는 폴더입니다. 읽기 전용이며, 실행 시 필요한 데이터를 포함합니다.
📌 주요 폴더
- `drawable` → 이미지 리소스 저장
- `layout` → UI 레이아웃 XML 파일 저장
- `mipmap` → 앱 아이콘 저장
- `values` → 문자열, 색상, 스타일 등 저장
- `themes` → 스타일 및 테마 정보 저장 (다크 모드 지원 가능)
📜 Layout 예제 (activity\_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, World!" />
</LinearLayout>
📝 주요 개념
속성 | 설명 |
layout_width/height | 크기 설정 (`match_parent`, `wrap_content` 등)
|
text | 표시할 텍스트 설정 |
orientation | 레이아웃 방향 (`horizontal`, `vertical`) |
📌 res의 정보를 java에서 가져감 → java가 읽을 수 있는 R.java로 변환
-
- R.java : res의 정보를 가져와 인덱싱한 파일.절 대 수정 해서는 안된다.
---
4. Gradle Scripts
빌드 스크립트를 관리하는 공간입니다. 프로젝트의 의존성 및 설정 정보를 정의합니다.
📌 주요 역할
- 프로젝트 빌드 및 실행 관리
- 외부 라이브러리 추가 (`dependencies` 설정)
-SDK 버전 및 빌드 도구 설정
---
📌 추가 개념
✅ 액티비티 vs 서비스 vs 브로드캐스트 리시버
구성 요소 | 설명 |
Activity | UI를 담당하는 화면 단위 |
Service | 백그라운드 작업 수행 ( UI 없음 ) |
Broadcast Receiver | 특정 이벤트 수신 및 처리 |
✅ ConstraintLayout vs LinearLayout
레이아웃 | 특징 |
ConstraintLayout | 제약 조건을 활용한 유연한 UI 배치 ( GUI로 조작 용이함 ) |
LinearLayout | 수직/수평 방향으로 UI 배치 (. 코드가 간결해짐 ) |
✅ AndroidX란?
기존의 `com.android.support.*` 라이브러리를 통합 및 개선한 버전으로, 최신 안드로이드 API를 지원하는 라이브러리입니다.
---
✨ 정리
- 안드로이드 프로젝트 구조는 Manifests, Java, Res 폴더로 구성됨
- AndroidManifest.xml에서 앱의 핵심 정보를 관리
- Java 폴더에는 기능 구현을 위한 소스 코드가 위치
- Res 폴더에는 UI 레이아웃, 이미지, 문자열 등의 리소스가 저장됨
- Gradle Scripts를 통해 프로젝트의 빌드 및 실행 환경을 관리
'Android' 카테고리의 다른 글
[ Android ] 안드로이드 데이터 저장 및 관리: SharedPreferences와 파일 저장 (0) | 2025.03.18 |
---|---|
[ Android ] Android 개발 기초: ConstraintLayout, Intent, 데이터 전달, TextView 속성 정리 (0) | 2025.03.18 |
[ Android ] 액티비티와 태스크 (0) | 2025.02.27 |