본문 바로가기

Android

Manifest의 모든 항목

Manifest

 모든 앱 프로젝트는 프로젝트 소스 세트의 루트에 AndroidManifest.xml 파일이 있어야 한다. 매니페스트 파일은 Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명한다고 안드로이드 개발자 가이드에 나와있다.

 

그러면 manifest의 주된 태그는 무엇이 있을까? 또한 향후 어플을 개발함에 있어 어떤 태그들을 주로 사용할지를 중점적으로 사용할까?

<manifest>

프로젝트를 시작하고 manifest를 열어보면 위와같이 나온다. application 태그의 속성에 대한 설명이다.

<application>

- android:allowBackup

  • 어플리케이션의 백업을 허용하는가에 대한 여부를 묻는다. 기본값은 true이다.

- android:icon

  • 전체 어플리케이션의 아이콘을 설정한다.

- android:label          

  • 어플리케이션을 나타내는 사용자가 읽을 수 있는 기본 라벨, 간단히 말해서 어플 이름이다.

- android:roundIcon   

  • 적응형 아이콘을 적용한다.

- android:supportsRtl  

  • 어플리케이션이 오른쪽에서 왼쪽 레이아웃을 지원하는지 여부를 묻는다. 기본값은 false다.

- android:theme         

  • 어플리케이션의 모든 활동의 기본 테마를 정의한다.

여기까지가 프로젝트를 처음 생성시 나오는 태그들에 대한 설명이고, 다음은 모든 manifest 태그 중에서 내가 사용할 것 같은 태그 위주로 찾아보았다.

 

<action>

  • 인텐트 필터에 작업을 추가한다. 예를 들어 ACTION_MAIN이면 'android.intent.action.MAIN'을 사용하고 ACTION_WEB_SEARCH이면 'android.intent.action.WEB_SEARCH'를 사용한다.

<acitivity>

 

- android:screenOrientation

  • android:screenOrientation=["unspecified" | "behind" |
                                         "landscape" | "portrait" |
                                         "reverseLandscape" | "reversePortrait" |
                                         "sensorLandscape" | "sensorPortrait" |
                                         "userLandscape" | "userPortrait" |
                                         "sensor" | "fullSensor" | "nosensor" |
                                         "user" | "fullUser" | "locked"]
  • 기기에서 액티비티의 디스플레이 방향을 나타낸다. 휴대폰 설정상에서 가로모드, 세로모드, 자동모드에 해당되는 기능에 활용할 예정이다.

- android:windowSoftInputMode

  • android:windowSoftInputMode=["stateUnspecified",
                                           "stateUnchanged", "stateHidden",
                                           "stateAlwaysHidden", "stateVisible",
                                           "stateAlwaysVisible", "adjustUnspecified",
                                           "adjustResize", "adjustPan"] >
  • 액티비티의 기본 창이 화상 소프트 키보드를 포함하는 창과 상호작용하는 방법을 나타낸다. 주로 검색을 할 때 소프트키보드가 밑에서 나오기 때문에 사용할 예정이다.
  • 액티비티가 사용자의 관심을 받는 포커스가 될 때 소프트 키보드의 상태(숨김 또는 표시) 여부를 설정할 수 있다.
  • 소프트 키보드를 위한 공간을 확보하도록 창의 크기를 더 작게 조정할지, 소프트 키보드가 창의 일부를 가릴 때 현재 포커스가 표시되도록 콘텐츠를 이동할지 등이 기본 액티비티 창에 대한 조정할 수 있다.

- android:finishOnTaskLaunch

  • android:finishOnTaskLaunch=["true" | "false"]
  • 사용자가 작업을 다시 시작(홈 화면에서 작업을 선택)할 때마다 액티비티의 기존 인스턴스를 종료할지 여부를 나타낸다. 이 값이 "true"인 경우 종료되고 "false"인 경우 종료되지 않는다. 기본값은 "false"이다. 어플리케이션 사용 중 다시 홈화면으로 돌아갈때 사용할 예정이다.

- android:alwaysRetainTaskState

  • android:alwaysRetainTaskState=["true" | "false"]
  • 시스템이 액티비티의 작업 상태를 항상 유지관리하는지 여부를 나타내는데, 이 값이 "true"인 경우 항상 유지관리하며 "false"인 경우 시스템이 특정 상황에서 작업을 초기 상태로 다시 설정할 수 있다. 기본값은 "false"이고 이 특성은 작업의 루트 액티비티에만 적용되며 다른 모든 액티비티에 대해서는 무시된다.
  • 일반적으로 시스템은 사용자가 홈 화면에서 작업을 다시 선택하는 특정 상황에서 작업을 지운다.(루트 액티비티 위 스택에서 모든 액티비티를 제거함). 일반적으로 지우기는 사용자가 30분과 같이 특정 시간 동안 작업을 방문하지 않는 경우 수행된다. 그러나 이 특성이 "true"인 경우 사용자는 도착 방법과 상관없이 항상 마지막 상태의 작업으로 돌아가고, 이는 예컨대 사용자가 손실을 원하지 않는 상태(예: 복수의 열린 탭)인 많은 웹브라우저와 같은 애플리케이션에서 유용하다.

<application>

 

- android:isGame

  • android:isGame=["true" | "false"]
  • 애플리케이션이 게임인지 여부이다. 시스템에서 애플리케이션을 게임으로 분류해 그룹화하거나 다른 애플리케이션과 별도로 표시할 수 있다. Instagram과 같은 어플말고 게임형식의 어플을 개발하게 된다면 사용할 것 같다.

 

-android:logo

  • android:logo="drawable resource"
  •  전체 애플리케이션의 로고 및 활동을 나타내는 기본 로고이다. 이 속성은 이미지가 포함된 드로어블 리소스의 참조로 설정해야 한다.(예: "@drawable/logo"). 기본 로고는 없고, 휴대폰에서 이미지를 통해 사용자가 어플을 실행하는 경우가 많으므로 사용해야하는 속성이다.

 

- resizeableActivity

  • android:resizeableActivity=["true" | "false"]
  •  앱이 멀티 윈도우 화면을 지원하는지 여부를 지정한다. 이 속성은 <activity> 요소나 <application> 요소에서 설정할 수 있다. 이 속성을 true로 설정하면 사용자가 분할 화면 모드와 자유 형식 모드로 활동을 시작할 수 있고, 속성을 false로 설정하면 활동이 멀티 윈도우 모드를 지원하지 않는다. 이 값이 false일 때 사용자가 멀티 윈도우 모드로 활동을 시작하려고 하면 활동은 전체 화면으로 열린다. 사용자는 언제나 2가지 모드중에 하나를 설정해서 어플리케이션을 실행할 수 있기 때문에 필요한 속성이다.

<data>

- android:scheme

  • android:scheme="string"
  • URI의 스키마 부분이다. URI를 지정하기 위한 최소한의 필수 속성이다.

- android:host

- android:port

  • android:host="string"
    android:port="string"
  • URI권한의 호스트와 포트 부분이다. 데이터를 주고 받는데 있어서 사용될 것 같다.

<uses-permission>

  • android:name="string"
    android:maxSdkVersion="integer" /
  • 태그를 이용하여 애플리케이션이 카메라, 배경 설정, 진동 기능을 이용 가능하게 권한 설정한다. 예를 들어 Instagram에서 카메라 촬영을 위해 CAMERA를 요청할 경우, Google Play는 애플리케이션이 기본 하드웨어 기능을 필요로 한다고 간주하고 이를 제공하지 않는 기기에서 이 애플리케이션을 필터링 할 수 있다.