0. 목적
Android Studio
에서 신규 프로젝트를 제작하면 기본적으로 자동 생성되는 프로젝트 파일들과 폴더 트리 구조를 이해할 수 있도록 한다.
1. 파일 및 폴더 트리 구조
프로젝트가 제작되면 아래와 같은 폴더와 파일들이 자동으로 생성된다.
지금부터 해당 프로젝트 폴더 구조들의 정의와 사용 방법에 대해 알아보자.
2. manifests 폴더
영어 단어 Manifest
의 의미는 '명백한' 이라는 뜻을 가지고 있다. 안드로이드 스튜디오에서의 Manifests
폴더는, 코드와 빌드 수행 시 필수적으로 지정해야 할 앱 연관 정보들이 적혀있는 파일을 보관하고 있는 폴더이다.
기본적으로 Manifest
폴더 산하에는 AndroidManifest.xml
파일이 존재하는데, 해당 파일은 코드를 살펴보면서 좀 더 자세히 살펴보도록 하자.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<!-- XML 파일임을 선언 -->
package="com.ex.acredev">
<!-- 앱 패키지 이름 -->
<application
<!-- 앱의 구성요소 선언 -->
android:allowBackup="true"
<!-- API 23 이상에서 실행되는 앱의 사용자 데이터 자동 백업 여부 -->
android:icon="@mipmap/ic_launcher"
<!-- 앱 아이콘 경로 설정 -->
<!-- app\res\mipmap\ic_launcher 폴더의 값을 불러옴. -->
android:label="@string/app_name"
<!-- 앱 이름 설정 -->
<!-- app\res\values\strings.xml 파일의 값을 불러옴. -->
android:roundIcon="@mipmap/ic_launcher_round"
<!-- 앱 원형 아이콘 경로 설정 -->
<!-- app\res\mipmap\ic_launcher_round 폴더의 값을 불러옴. -->
android:supportsRtl="true"
<!-- RTL (Right To Left) 언어 지원 여부 -->
<!-- 아랍어 등, 우측에서 좌측으로 읽는 언어가 RTL 언어임. -->
android:theme="@style/Acredev">
<!-- 앱 기본 테마 정의 -->
<!-- app\res\values\themes\themes.xml 파일의 style 값을 불러옴. -->
<activity
android:name=".MainActivity"
<!-- 앱 구동 시 제일 먼저 활동을 구현할 (실행될) 클래스의 이름 -->
<!-- app\java 폴더 산하의 MainActivity 자바 클래스 파일을 불러옴. -->
android:exported="true">
<!-- intent=filter 가 있다면 true <-->
<!-- 아니라면 빌드 오류남. -->
<!-- 다른 앱의 구성요소에서 정확한 클래스 이름으로 활동 엑세스 가능. -->
<intent-filter>
<!-- 다른 앱 구성 요소로부터 작업이 요청되었을 때 응답할 수 있는 intent의 유형 지정. -->
<!-- 활동, 서비스, broadcast 리시버 등이 응답할 수 있음. -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
3. java 폴더
java
폴더에는 안드로이드 앱 패키지 이름과 동일한 3개의 Java Package
가 존재하고, 그 내부에 각각 하나씩의 Java Class
파일이 존재한다. MainActivity.java
, ExampleInstrumentedTest.java
, ExampleUnitTest.java
클래스 파일이 바로 그것이다.
3-1. MainActivity.java
안드로이드 앱은 화면 UI를 사용자에게 표시하기 위해서 최소 하나 이상의Activity
동작이 정의되어 있는Java Class
파일을 가져야 한다.MainActivity.java
파일은, 액티비티의 동작에 관련된 내용이 정의되어 있는Java Class
파일이다.
앱 실행 시 제일 먼저 실행되는 코드로, 여기서 지정한 레이아웃대로 화면에 표시한다.
3-2. ExampleInstrumentedTest.java
테스트 코드를 작성하는 Java Class
파일이다.
3-3. ExampleUnitTest.java
유닛 테스트 코드를 작성하는 Java Class
파일이다.
4. res 폴더
안드로이드 앱에서 사용하는 모든 resource
파일들이 종류별로 세분화되어 저장되어 있는 폴더이다.
4-1. res\drawable 폴더
앱에서 사용하는 이미지 파일이 저장되어 있다.
안드로이드 앱은 해상도에 따라 이미지가 다르게 적용되므로, 최소한 범용적인 해상도에는 맞게 이미지를 추가해 주는 것이 좋다.
파일명 속성 ic_launcher_background.xml 전경 이미지 ic_launcher_forerground.xml 배경 이미지
앱 아이콘은 이 폴더가 아닌res\mipmap
폴더에 저장하니 참고하자.
4-2. res\layout 폴더
앱이 사용자에게 표시할 화면의 레이아웃 구성을 정의하는 파일이 저장되어 있다.
파일명 속성 activity_main.xml 기본으로 생성되는 Layout은 ConstraintLayout. layout
폴더 산하에 새xml
파일을 생성하고,MainActivity.java
파일의set.ContentView
속성값을 변경하면 메인layout
을 변경할 수도 있다.
4-3 res\mipmap 폴더
앱의 아이콘을 지정하는 파일이 저장되어 있다.
해당 폴더에 앱 아이콘 이미지를 저장하면, 안드로이드를 구동하는 휴대폰 시스템의 화면 해상도에 제일 최적화된 이미지를 앱 아이콘으로 표시해 준다. 안드로이드
폴더명 속성 ic_launcher 일반적인 사각형 아이콘 ic_launcher_round 원형 아이콘 API 11
부터 지원되는 기능이다.
4-4 res\values 폴더
앱에서 사용하는 변수 정보들을 설정하는 파일이 저장되어 있다.
파일명 속성 color.xml 색상 변수값 string.xml 문자열 변수값
4-5. res\values\theme 폴더
앱 테마를 설정하는 파일이 저장되어 있다.
파일명 속성 themes.xml 라이트 모드 테마 설정 themes.xml (night) 다크 모드 테마 설정
<참고>
Android Developers : 자동 백업으로 사용자 데이터 백업 (링크)
Android Developers : 앱 Manifest 파일 문법 (링크)
Android Developers : 인텐트 및 인텐트 필터 (링크)
Tae Gyu : [안드로이드] 안드로이드 프로젝트 폴더 구조 (링크)