[Android] 안드로이드 기본 요소(Manifest, Intent)

2022. 9. 27. 17:26·Android
목차
  1. 1. <manifest>
  2. 2. <application>
  3. 3. <activity>
  4. 4. <sevice>
  5. 5. <receiver>
  6. 6. <provider>
  7. 7. <intent-filter>
  8. 8. <action>
  9. 9. <category>
  10. 10. <uses-permission>
  11. 11. Intent

안드로이드 프로젝트에는 반드시 포함되어야 하는 파일이 있다. 그것은 바로 AndroidManifest.xml파일 이다. Manifest 파일은 프로젝트의 Source Set의 루트에 위치해야 한다.

(별도의 루트를 성절하지 않았다면 src/main에 위치해야 한다.)

Manifest 파일은 앱에 대한 필수적인 정보를 Android Build Tool과 Android OS, 그리고 Google Play에 제공한다.

 

Manifest의 주요 속성을 알아보자.

<manifest>, <application>, <activity>, <service>, <receiver>, <provider>, <intent-filter>, <action>, <category>, <uses-permission> 순으로 정리되어 있다.

 

1. <manifest>

  • AndroidManifest.xml 파일의 루트 요소로 단 하나의 <application> 요소를 포함해야 한다. Namespace를 지정해주는 xmlns:android 속성, package 속성을 지정한다.

2. <application>

  • 1번에 나와있듯이 Manifest 파일에는 단 하나의 <application> 요소를 포함해야 한다. <application>은 앱의 각 구성요소를 선언하고 모든 구성요소에 영향을 줄 수 있는 속성을 가진 하위 요소를 포함한다. 이 중 여러 속성(icon, label, permission, process, taskAffinity, allowTaskReparenting)이 구성요소의 해당하는 속서에 기본값을 설정한다. 그 외에 속성들(debuggable, enabled, description, allowClearUserData)은 앱의 값을 전체적으로 설정하며 구성요소별로 재정의 할 수 있다.

3. <activity>

  • <activity>는 앱의 시각적 사용자 인터페이스 요소를 구현하는 액티비티(Activity 하위 클래스)를 선언한다. 모든 액티비티는 Manifest 파일의 <activity> 요소를 나타내야 한다. 여기에 선언되지 않은 액티비티는 시스템에서 표시되지 않으며 실행되지도 않는다.

4. <sevice>

  • <service>는 <activity>와 다르게 시각적 사용자 인터페이스가 없다. <service>는 오래 실행되는 백그라운드 작업이나 다른 앱에서 호출할 수 있는 리치 커뮤니케이션 API를 구현하는 데에 사용된다. 모든 서비스는 Manifest 파일의 <service> 요소로 나타내야 하고, <activity>와 마찬가지로 여기에 선언되지 않은 서비스는 시스템에 표현되지 않으며 실행되지도 않는다.

5. <receiver>

  • <receiver>는 Broadcast receiver라고도 하는데, 이를 사용하면 앱의 다른 구성요소가 실행되고 있지 않을 때에도 시스템이나 다른 앱에서 broadcasting하는 Intent를 앱에서 수신할 수 있다. <receiver>안에 intent-filter를 정의하여 어떠한 broadcast 메시지에 반응할지 지정해 줄 수 있다.

6. <provider>

  • <provider> 즉, Content provider는 앱 내의 데이터베이스를 다른 앱이 공유할 수 있도록 해주는 역할을 한다. 앱의 모든 content provider는 Manifest 파일의 <provide>요소에서 정의된다. 그렇지 않으면 시스템에서 인식되지도 않고 실행되지도 않는다.

7. <intent-filter>

  • Activity, Service, Receiver가 응답할 수 있는 Intent의 유형을 지정한다. <intent-filter>는 상위 구성요소의 기능, 즉 활동이나 서비스가 할 수 있는 작업과 수신기가 처리할 수 있는 Broadcast의 유형을 선언한다. 전달되는 유형의 수신 Intent로 구성요소를 열고, 이 구성요소에 무의미한 Intent를 필터링한다.

8. <action>

  • <action>은 intent-filter에 작업을 추가한다. <intent-filter>요소에 <action>요소가 하나 이상 포함되어야 한다. Intent-filter에 <action>요소가 없으면 필토가 Intent 객체를 허용하지 않는다.

9. <category>

  • <intent-filter> 밑에 정의하여 component의 유형이 무엇인지 정의할 수 있다.

10. <uses-permission>

  • 이는 앱을 올바르게 작동하게 하기 위해 사용자가 반드시 부여해야 하는 시스템 권한이다. <uses-permission>에 정의된 권한은 앱 설치시 해당 앱이 어떤 권한을 요구하는지를 User에게 보여준다.

11. Intent

  • Intent는 구성요소 간의 통신을 할 수 있게 하는 역할을 한다. 앱에 포함된 구성요소 외에 다른 앱의 구성요소와도 통신할 수 있다.
    • 명시적 Intent(자신의 의도가 명확한 Intent): 특정 Component, Activity를 명확히 특정해 실행할 경우 사용한다.
      • ex) A Activity에서 B Activity 실행을 호출할 경우
    • 암시적 Intent: 동작을 특정하긴 했지만 실행될 대상이 달라질 수 있는 경우 사용한다.
      • ex) 특정 URL을 실행하라는 액션을 요청한 경우, 웹 브라우저 기능을 가진 다수의 앱이 호출될 수 있다.
  1. 1. <manifest>
  2. 2. <application>
  3. 3. <activity>
  4. 4. <sevice>
  5. 5. <receiver>
  6. 6. <provider>
  7. 7. <intent-filter>
  8. 8. <action>
  9. 9. <category>
  10. 10. <uses-permission>
  11. 11. Intent
'Android' 카테고리의 다른 글
  • [Android] View Class
  • [Android] 안드로이드에서 사용하는 6가지 주요 Layout!
  • [Android] Palette에서 자주 사용되는 View
  • [Android] 안드로이드 기본 요소(4대 Component)
wbnh09
wbnh09
개발 블로그
devAndroid개발 블로그
wbnh09
devAndroid
wbnh09
  • 분류 전체보기 (38)
    • Git (8)
    • Java & Kotlin (14)
    • Android (10)
    • CS (1)
    • Algorithm (1)
      • Java (1)
      • Kotlin (0)
    • scrcpy (3)
    • Mac (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리자

공지사항

인기 글

최근 글

최근 댓글

hELLO· Designed By정상우.v4.5.2
wbnh09
[Android] 안드로이드 기본 요소(Manifest, Intent)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.