1. res 디렉토리 구조
res/ 디렉토리는 리소스 유형별로 하위 디렉토리가 나뉘어 있습니다:
| 디렉토리 | 용도 |
|---|---|
drawable | 일반 이미지(배경, 일러스트 등) |
mipmap 접두사 | 앱 아이콘(Launcher Icon) |
values | 문자열, 스타일, 색상 등 |
layout | 레이아웃 파일 |
2. 왜 이렇게 많은 mipmap과 drawable 폴더가 있나요?
다양한 해상도의 기기에 대응하기 위해 Android는 여러 디렉토리를 제공합니다:
drawable-hdpi → 고해상도
drawable-xhdpi → 초고해상도
drawable-xxhdpi → 초초고해상도
drawable-xxxhdpi → 최고해상도
mipmap도 마찬가지로 mipmap-hdpi, mipmap-xhdpi, mipmap-xxhdpi 등이 있습니다.
작동 원리: 같은 이미지의 해상도별 버전을 준비하여 각각 해당 폴더에 넣습니다. 앱 실행 시 시스템이 기기의 화면 밀도에 따라 가장 적합한 리소스를 자동으로 선택하여 로드합니다.
3. 리소스 참조 방법
3.1 문자열 리소스
res/values/strings.xml에 정의합니다:
<resources>
<string name="app_name">My Application</string>
</resources>Code language: HTML, XML (xml)
사용하는 위치에 따라 참조 방식이 다릅니다:
| 상황 | 참조 형식 | 예시 |
|---|---|---|
| XML 파일에서 | @string/app_name | android:text="@string/app_name" |
| Java 코드에서 | R.string.app_name | getString(R.string.app_name) |
3.2 이미지 및 아이콘 참조
주의: XML에서는 R.mipmap.xxx 같은 Java 문법을 직접 사용할 수 없습니다!
| 리소스 유형 | XML에서 참조 | Java 코드에서 참조 |
|---|---|---|
| 아이콘 (mipmap) | @mipmap/ic_launcher | R.mipmap.ic_launcher |
| 이미지 (drawable) | @drawable/bg_image | R.drawable.bg_image |
| 레이아웃 | — | R.layout.activity_main |
| 문자열 | @string/app_name | R.string.app_name |
비교 예시:

<!-- XML에서: @ 접두사 사용 -->
android:icon="@mipmap/school"Code language: HTML, XML (xml)
// Java에서: R. 접두사 사용
setContentView(R.layout.activity_main);Code language: JavaScript (javascript)
4. AndroidManifest.xml에서의 리소스 참조
AndroidManifest.xml을 열면 application 태그 안에 이미 여러 리소스 참조가 사용되고 있습니다:
<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">Code language: HTML, XML (xml)
| 속성 | 참조 리소스 | 역할 |
|---|---|---|
android:icon | @mipmap/ic_launcher | 앱 아이콘 |
android:label | @string/app_name | 앱 이름 |
android:roundIcon | @mipmap/ic_launcher_round | 둥근 앱 아이콘 |
android:theme | @style/AppTheme | 앱 테마 |
5. 실습: 앱 이름과 아이콘 변경하기
단계 1: 앱 이름 변경
res/values/strings.xml을 엽니다:
<resources>
<string name="app_name">FoxDevelop</string>
</resources>Code language: HTML, XML (xml)
저장하면 홈 화면의 앱 이름이 “FoxDevelop”으로 바뀝니다.
단계 2: 아이콘 파일 준비
- PNG 형식의 아이콘 다운로드

- 파일 이름 규칙: 하이픈
-을 사용할 수 없으며, 밑줄_, 소문자, 숫자만 가능- ✅
school_bell.png - ❌
school-bell.png
- ✅


단계 3: 해당 디렉토리에 넣기
아이콘 파일을 res/mipmap-xxhdpi/(또는 해당 해상도의 mipmap 폴더)에 복사합니다.
단계 4: AndroidManifest.xml 수정
<application
android:icon="@mipmap/school_bell"
android:roundIcon="@mipmap/school_bell"
... >Code language: HTML, XML (xml)
단계 5: 다시 실행
▶ Run 버튼을 클릭하여 에뮬레이터에 배포합니다. 다음과 같이 변경된 것을 볼 수 있습니다:
- 홈 화면의 앱 이름이 “FoxDevelop”으로 변경됨
- 앱 아이콘이 설정한
school_bell.png로 변경됨

6. 요약
| 핵심 요점 | 설명 |
|---|---|
| 리소스 참조 규칙 | XML은 @유형/이름, Java는 R.유형.이름 |
| 다중 해상도 대응 | 해상도별 이미지를 다른 폴더에 넣으면 시스템이 자동 선택 |
| 앱 이름 변경 | res/values/strings.xml의 app_name 수정 |
| 앱 아이콘 변경 | mipmap 디렉토리의 PNG 파일 교체 후 AndroidManifest.xml의 android:icon 수정 |
| 파일 이름 규칙 | 소문자, 숫자, 밑줄만 사용 가능, 하이픈 불가 |
한 줄 요약: XML은
@, Java는R.; 아이콘은 mipmap, 이미지는 drawable, 문자열은 values.
리소스 res 파일 및 앱 이름과 아이콘 수정
Previous: 앱은 어떻게 실행되는 걸까요