본문 바로가기
안드로이드

[안드로이드] 앱 구성 파일 분석(3) - 메인 환경 파일

by Bakhwee_Bug 2022. 7. 17.

모듈의 폴더 구성 알아보기

build.gradle : 빌드 설정 파일

AndroidManifest.xml : 앱 메인 환경 설정 파일

res : 리소스 폴더

activity_main.xml : 레이아웃 XML 파일

MainActivity : 메인 액티비티 파일

 

이 중에서 이번엔 메인 환경 설정 파일에 대해 설명하겠다 !! 

 

메인 환경 파일

AndroidManifest.xml : 앱 메인 환경 설정 파일

 

AndroidManifest.xml은 안드로이드 앱의 메인 환경 파일이다.('매니페스트 파일'이라고 하겠다)

개발을 진행하면서 매니페스트 파일을 분서갛고 수정하는 일이 많은데

안드로이드 시스템은 이 파일에 설정한 대로 사용자의 폰에서 앱을 실행한다.

즉, 매니페스트 파일은 개발부터 실행까지 중요한 역할을 한다.

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.myapplication">

<manifest>는 매니페스트 파일의 루트 태그이다.

그리고 xmlns는 XML의 네임스페이스 선언이다.

URL이  http://schemas.android.com/apk/res/android 으로 선언되었다면 안드로이드 표준 네임스페이스이다. 

(C++에서의 using namespace std와 같은 것. 안 쓰면 std::cout 이라고 써야함)

 

package는 매니페스트 파일에 선언한 컴포넌트 클래스의 기본 패키지명이다.

이후 매니페스트 파일에 선언되는 액티비티, 서비스 클래스 등의 경로는 이 패키지명 이후부터 작성하면 된다.

 

네임스페이스 선언

<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.MyApplication">

<application>태그는 앱 전체를 대상으로 하는 설정이다

 

XML의 속성값이 @으로 시작하면 리소스를 의미한다.

icon 속성은 이곳에 지정한 이미지가 앱을 설치한 사용자의 폰에 보이는 실행 아이콘이 되는 것이다.

label 속성은 앱의 이름을 등록하는데, @string/app_name 으로 지정했으므로 res/values/strings.xml 파일에

app_name으로 등록된 문자열 리소스를 가리킨다.

theme 설정은 앱에 적용해야 하는 테마를 설정하는 것으로 res/values/themes.xml 파일에 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>

안드로이드 컴포넌트는 시스템에서 생명주기를 관리한다.

그리고 시스템은 매니페스트 파일에 있는 대로 앱을 실행한다.

결국 컴포넌트는 매니페스트 파일에 등록해야 시스템이 인지한다.

 

액티비티 <activity>태그로, 서비스는 <services> 태그로, 브로드캐스트 리시버는 <receiver> 태그로

그리고 콘텐츠 프로바이더는 <provider>태그로 등록한다.

컴포넌트 하나 당 태그 하나로 등록하며 만약 액티비티가 10개라면 <activity> 태그를 10개 선언해야한다.

 

액티비티를 등록할 때 필수 속성은 name 이다.

name 속성에는 클래스 이름을 등록한다.

예를 들어 name=".MainActivity"라고 했다면 MainActivity 클래스를 액티비티로 등록하겠다는 의미이다.

(클래스 이름 앞에 있는 . 은 해당 클래스가 <manifest> 태그에 등록한 package 경로에 있다는 의미이다.)

 

<intent-filter> 태그는 생략할 수 있다.

<action> 태그의 name 값이 android.intent.action.MAIN 문자열로,

<category> 태그의 name 값이 android.intent.category.LAUNCHER로 선언되면

이 액티비티는 앱 아이콘을 클릭했을 때 실행되는 액티비티 라는 의미이다.

앱이 설치되면 홈 화면에 앱 아이콘이 나오는데, 이 아이콘을 터치했을 때 실행되어야 하는 액티비티라는 의미이다.

 

 

 

댓글