매니페스트에 대해 알아본다.
Manifest ?
안드로이드 프로젝트에서 반드시 포함되어야 하는 파일이 있다.
AndroidManifest.xml 파일이다.
- Manifest 파일은 프로젝트의 Source Set의 루트 ( 별도 설정을 하지 않았다면, src/main) 에 위치해야 한다.
- 매니페스트 파일은 앱에 대한 필수 정보를 안드로이드 빌드 툴과 Android OS, 구글 플레이에 제공한다.
Manifest 파일에 필수로 들어가야 할 정보 4가지
- 앱의 패키지 이름
- 앱에서 사용되는 4대 컴포넌트 (액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더)
- 권한 (Permission)
- 앱에서 요구하는 하드웨어와 소프트웨어 특징
1. 앱의 패키지 이름
- package=”com.ready.example” === build.gradle (applicationId)
2. App Components
- 4대 컴포넌트를 앱에서 사용한다면, 매니페스트 파일에 등록해줘야한다.
- 태그로 선언
-
: Activity -
: Service -
: BroadCast Receiver -
: Content Provider
-
만약 컴포넌트의 서브 클래스 구현하여 사용하면서, 매니페스트에 선언해주지 않으면,
시스템은 해당 컴포넌트에 대해 실행할 수 없다!!
4대 컴포넌트들은 각각 인텐트에 의해 활성화 된다. => 인텐트 (intent ???)
Intent ?
- 각각의 컴포넌트 간 통신을 맡고 있다.
통신 방식?
- 명시적
- 명시적 인텐트는 가장 많이 볼 수 있는 방법
- 앱의 화면전환을 하는 방법이다.
- 하나의 액티비티에서 다른 액티비티로 화면 전환시 사용하는 것. =========================================================
- 인텐트는 액티비티 호출시 데이터를 전달 or 데이터를 리턴 받을 수 있다.
- 암시적
- intent의 Action 에 따라 해당하는 적합한 application 의 class 를 호출한다.
- 이때, 단 하나가 아닌 여러개가 호출될 수 있다. =========================================================
- ex) 웹 브라우저 호출, 이메일 전송, 전화앱으로 통화 등이 해당
메세지 객체로, 어떤 행동을 수행할 지에 대한 명령이나 작업에 필요한 데이터를 포함한다.
앱이 인텐트를 시스템에 발행하면 시스템은 각 앱의 매니페스트에 선언된 intent-filter 에 기초하여 처리할 수 있는 인텐트가 쓰이는 컴포넌트를 찾게 된다. 만약 여러개의 앱이 인텐트를 다룰 수 있다면,
사용자가 해당 인텐트를 어떤 앱에 넘길지 선택할 수 있다.
매니페스트에 선언된 컴포넌트들과
Permissions
- 매니페스트 권한 설정이 들어간다. ( 인드로이드 진영에서 민감하게 다루는 관심사 중 하나)
- 앱은 민감한 유저 정보나 카메라나 인터넷 등 특정 시스템 기능을 사용할 때 반드시 권한을 요청해야 한다
Device Compatibility
- Manifest 앱이 필요로 하는 하드웨어나 소프트웨어 특징을 명시할 수 있다.
- 카메라 앱을 만들 경우 카메라가 필수로 있어야 하기 때문에 카메라가 있는 기기에서만 PlayStore 에서 해당 앱이 다운로드 될 수 있도록 명시할 수 있다.
- 태블릿의 경우에도 플레이 스토어에서 특정 앱을 설치하려고 할 때, ‘다운로드 받을 수 없는 기기입니다’ 라는 문구를 뜬 걸 볼 수 있다.