뜻(Meaning)
명사 - 적하목록(선박 또는 항공기에 적재된 화물의 목록)
형용사 - 명백한
동사 - 나타나다
안드로이드에서 매니페스트란 "안드로이드 시스템이 앱의 코드를 실행하기 전에 확보해야 하는 앱에 대한 필수 정보를 시스템에 제공하는 목록" 이라고 정의할 수 있습니다.
역할(Role)
- Java 패키지의 이름을 지정할 수 있다. 패키지지 이름은 곧 프로젝트의 식별자! 사람으로 따지면 주민등록번호 또는 바꿀 수 없는 이름과 같다.
- 후에 알게될 액티비티, 서비스, 브로드캐스트, 리시버 등 앱을 이루는 구성요소들의 클래스 이름을 지정하고 구성요소들이 실행될 수 있는 조건을 기술한다.
- 앱이 장치 또는 구성요소들과 상호작용하기 위해 필요한 권한을 설정한다.
- 앱이 연결되어야 하는 라이브러리를 기술한다.
컴포넌트는 어플리케이션을 이루고 있는 구성요소들이다.
따라서 컴포넌트들을 매니페스트 파일에 적어줌으로써, 안드로이드 시스템이 어떤 컴포넌트를 사용하고 있는지 알도록 해야 어플리케이션이 실행된다.
즉 어떤 컴포넌트 요소를, 또 어떤 클래스를 이용하여 생성하였는지 알려주는 지시서가 있어야 안드로이드에서 객체들을 만들고 실행시켜 줄 수 있다.
manifest file 은 전체적으로 설명하는 내용들이 여러가지 있지만, 그 중에서도 아래와 같은 내용을 중점적으로 선언한다고 한다.
앱의 패키지 이름
메니페스트 파일에서 앱의 패키지 이름은 어떻게 사용될까
안드로이드를 빌드하는 측면에서는 크게 두가지의 목적으로 나눌 수 있다.
첫번째는 앱 리소스에 접근하기 위해서 사용되는 R.java 의 네임스페이스로 해당 패키지 이름을 적용해준다.
두번째는 이 패키지명을 이용해서 manifest 내부의 상대 클래스 이름을 식별한다.
예를 들어 manifest 파일 안에서 <activity android:name=".MainActivity"> 라는 코드를 작성했다면
.MainActivity -> com.example.myapp.MainActivity 인 것으로 식별한다.
그러나 패키지 값이 안드로이드를 빌드한 이후에도 계속 그대로 사용되는 것은 아니다.
빌드 과정이 완료되면, package 이름 또한 build.gradle 파일의 applicationId 속성에 넣어져 있는 값으로 바뀌기 때문이다.
이를 이용하여 패키지 특성을 고유하게 보존함으로써 다른 앱과 식별할 수 있다.
4대 컴포넌트
안드로이드에서 4대 컴포넌트가 있다.
이 컴포넌트를 앱에서 사용한다면 manifest 파일에 등록해줘야 한다.
manifest 파일 내에서 각각 다음 태그를 통해 선언할 수 있다.
- <activity> : Activity
사용자에게 보여주는 UI 화면이다.
하나의 어플리케이션에는 최소 1개 이상의 Activity 가 존재하여야 하며 Manifest 파일에 선언되지 않은 Activity 는 시스템에 표시되지 않으며 실행되지 않는다.
- <service> : Service
UI 없이 백그라운드 작업을 수행하는 구성요소이다.
Activity 가 사용자에게 보여주는 화면이라면 종료되어 있는 상태에서도 동작하기 위해 만들어진 구성요소이다.
- <receiver> : Broadcast Receiver
system 에서 특정 이벤트에 대해 응답하는 역할을 한다.
예를 들면 배터리가 부족할 때, 파일 다운로드가 완료되었을 때 broadcast receiver 를 통해 응답받을 수 있다.
하지만 boradcast receiver 는 이벤트를 확인하는 기능만 담당할 뿐 사용자에게 이벤트를 알려주지 않는다.
이를 알리기 위해서 notification, toast 등 사용하는 알림을 전달해야 한다.
- <provider> : Contents Provider
애플리케이션 사이에서 데이터를 공유하는 컴포넌트이다.
애플리케이션에서 자료를 저장할 때 DB 를 주로 사용한다.
이때 한 애플리케이션 내에 저장되어 있는 DB 에는 해당 앱 외에 다른 앱이 접근하는 것이 불가능하다.
외부 애플리케이션이 마음대로 내 DB 에 접근하지 못하게 하면서 동시에 내가 가진 DB 중 원하는 것들만 공유할 수 있도록 해주는 역할을 하는 것이 바로 Contents Provider 이다.
'👩🏻💻 TIL' 카테고리의 다른 글
Xcode Target, Project (0) | 2022.12.29 |
---|---|
[Flutter] 앱 버전관리 규칙 (0) | 2022.12.28 |
앱이 도중 꺼지는 이유에 대해 분석해보았다 (0) | 2022.12.02 |
xcode push notification not showing (0) | 2022.10.24 |
[iOS] [Flutter] module not found. (1) | 2022.10.18 |