본문 바로가기

Programming/Android

2. 안드로이드 기본 구조의 이해 (6) - 기본 샘플 app 모듈 분석 [2/3]

android studio logo image

 

 

 

 

 

앞선 내용에서 이어서 계속 살펴보도록 하겠습니다. 

 

 

2. 안드로이드 기본 구조의 이해 (6) - 기본 샘플 app 모듈 분석 [1/2]

우리가 안드로이드 스튜디오에서 기본적으로 프로젝트를 하나 생성하게 되면, 해당 프로젝트에 [app]이라는 기본 모듈이 하나 생성됩니다. 아시다시피 "Hello Wolrd"를 출력하는 기본 샘플인데요,

nozeroslope.tistory.com

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.androidlab">

    <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/Theme.AndroidLab">
        <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> 태그 내에 작성된 속성 값 중 아래와 같은 형식으로 작성된 부분을 찾을 수 있습니다. 

 

android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"

 

위 두 개의 값은, 안드로이드 앱이 설치되었을 때 앱의 아이콘 이미지 그리고 앱의 이름을 출력하는 속성입니다.  여기서 우리는 앞서 살펴보았던 R.java와 관련된 내용을 복습해 볼 수 있습니다. 

 

 

 

 

2. 안드로이드 기본 구조의 이해 (4) - 앱 디렉토리와 파일

이번 아티클에서는 안드로이드 스튜디오에서 앱을 개발하게 될 때, 개발자가 이해해야 하는 파일, 디렉터리 구조를 살펴보도록 하겠습니다. 우선 프로젝트에서 '모듈(앱)' 레벨의 작업이 시작되

nozeroslope.tistory.com

 

 

결론부터 먼저 말씀드리자면, XML의 속성 값이 @로 지정되었을 경우 이는 res 하위 폴더 리소스를 지칭한다고 생각하면 됩니다. 즉, @mipmap/ic_launcer라는 속성 값은 결국 위 아티클에서 설명한 것과 마찬가지로 R.mipmap.ic_launcher를 의미하는 것입니다. 

 

 

 


 

 

 

▷ 위에서 선언된 <activity> 항목을 보겠습니다. 속성 값으로 해당 액티비티의 이름이 명시된 부분이 있죠.

 

<activity android:name=".MainActivity">

 

 

이 속성 값은 해당 앱에 선언된 액티비티 컴포넌트의 이름입니다. 당연한 이야기지만, 이 속성은 클래스명을 의미하는 것이기 때문에 생략할 수 없는 부분입니다. 또한, 해당 앱(모듈)에 생성된 액티비티의 개수만큼 <activity>가 선언됩니다. 샘플 앱의 경우 액티비티가 MainActivity 딱 하나이기 때문에 한 개만 선언된 상태이지요. 

 

참고로 컴포넌트의 종류에 따라 <service>, <provider>, <receiver> 태그로 등록됩니다.

 

 


 

 

마지막으로 <intent-filter> 태그가 있습니다. 일단은 intent에 대한 복합적 이해가 필요하므로 현재는 이해하기는 다소 어려운 내용입니다. 다만, 유저가 앱 아이콘을 클릭했을 때 실행되는 액티비티를 선언하는 용도라고 생각하면 됩니다. 현재는 MainActivity가 실행되는 상태입니다.