Android Manifests

지훈·2021년 9월 29일
0

Manifests

Manifest : 나타내다. 명세하다.
Manifests 는 기본적으로 안드로이드 프로젝트를 만들었을 때 패키지 파일이나 앱에서 사용하는 액티비티, 등의 환경설정이라고 생각하면 된다.

Manifest 파일에는 많은 정보를 담을 수 있지만 그 중에서도 반드시 선언되어야 하는 정보가 있다.

  1. 앱의 패키지 이름
  2. 안드로이드 구성요소(Activity,서비스,브로드캐스트 리시버, Content Provider)
  3. 앱에서 필요한 권한(Permission)
  4. 앱에서 요구하는 하드웨어나 소프트웨어 특징

1. Package name and Applicaiton ID

반드시 Root element에 해당 앱의 패키지 네임이 기재되어야 한다.

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

   .......

</manifest>

여기서 우리는 "com.example.FLO"라는 package 를 사용하고 있다.
Android Studio의 왼쪽 Browser를 보면 java 하위에 com.example.FLO라고 표시된다.

일반적으로 이 값과 일치시켜야 한다. 왜냐하면 안드로이드 Build 가 이 값을 코드의 위치값으로 인식하기 때문이다.



정확히 말하면 최종 어플리케이션 패키지(APK)를 추출할 때 빌드가 pacakge 특성을 사용하는 목적은

  • App Resource에 접근하는데 사용되는 R.java 클래스의 네임스페이스로 적용된다.
  • 이 패키지명을 이용해서 manifest 내부의 클래스 이름을 식별.
    예를 들어서 manifest 파일 안에서 <activity android:name = ".MainActivity"> 라는 코드를 작성했다면 MainActivity -> com.example.FLO.MainActivity 인 것으로 식별..
    이를 이용하여 패키지 특성을 고유하게 보존함으로써 다른 앱과 식별할 수 있습니다!

APK : 안드로이드 앱의 확장자로서 Android Package의 줄임말이다. 안드로이드에서 앱을 설치하는 역할을 하며, ZIP 형식으로 압축되어있다.
Window로 치면 installer 랑 같은 개념.

2. 앱의 구성 요소(4대 component 포함)

액티비티, 서비스, 브로드캐스트 리시버, 콘텐츠 제공자에 각각

<activity>, <service>, <receiver>, <provider>
라는 태그가 붙여주게 됩니다.

2.1 만들고 있는 FLO 의 manifest 살펴보기

allowBacckUp :

icon : 앱 실행할 떄 보이는 아이콘
roundIcon: 앱 실행할 떄 보이는 아이콘 (동그란 버전) -> mimmap

lable : 보이는 제목

theme : 테마 --> res>value

Activity 를 여러개 만든다면 manifest.xml 파일 같은 이름의 코드가 생김.
SpalshActivity 라는 것을 만들었다면

    <activity
        android:name=".SplashActivity"
        android:exported="true" />
        

이런 식으로 뜬다.

<intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>      

inntent-filter는 앱 실행시 처음 실행할 Activity
이를 이용해서 몇초간 SplashActivity 를 띄우고 MainActivity 로 이동하도록 코드를 구성하고 설정할 수 있다.

2.2 권한

안드로이드는 사용자의 카메라나 연락처, 위치 정보 등을 얻기 위해서 권한을 요청하기 위해서 아래와 같은 태그를 사용한다.


흔히 우리가 앱을 처음에 다운 받았을 때에 '저장소의 접근 권한 요청'에 대해서 수락과 거절을 하는 창이 뜨게 되는데,

이게 바로 manifest 파일에 작성해 놓은 <uses-permission> 때문이다.

  <manifest ... >
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    ...
</manifest>

2.3 기기 호환성

기기 호환성이란 앱에 필요한 하드웨어 및 소프트웨어 기능으로, 앱을 출시할 때에 어떤 기종에서 사용할 수 있고 없는지를 판단하는 기준이 된다.
이렇게 어떤 기기가 해당 앱과 호환되는지를 작성하는 관련 태그들 중 대표적인 태그로는 <uses-feature><uses-sdk>가 있다.

<uses-feature> 요소에는 나침반 센서와 같은 기능이 필요함을 나타내는 태그
그래서 필요한 센서나 기능이 없는 기기에서는 설치되지 않도록 막을 수 있다.

<manifest ... >
  <uses-feature android:name="android.hardware.sensor.compass"
                android:required="true" />
  ...
</manifest>

<uses-sdk> 는 이전 버전에서는 사용할 수 없는 새로운 API 기능이 추가될 수 있기 때문에

minSdkVersion이라는 값을 이용해서 이러한 기능이 호환되는 최소한의 버전을 나타낸다.

출처 :
https://kotlinworld.com/41
https://developer.android.com/guide/topics/manifest/manifest-intro
https://readystory.tistory.com/187

profile
안드로이드 개발 공부

0개의 댓글