[Android] Manifest란?

SSUN·2023년 2월 24일

Android

목록 보기
1/4

Manifest란?

AndroidManifest.xml

  • 이 파일은 Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명한다

  • 여러 정보 중 꼭 담아야할 정보 4가지가 있다

    • 앱의 패키지 이름
    • 앱의 구성요소
    • 앱이 시스템 또는 다른 앱의 보호된 부분에 액세스하기 위해 필요한 권한
    • 앱에 필요한 하드웨어 및 소프트웨어 기능

앱의 패키지 이름

  • manifest 파일의 루트 요소인 <manifest></manifest>에는 패키지 이름에 대한 특성이 필요하다
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp"
    android:versionCode="1"
    android:versionName="1.0" >
    ...
</manifest>
  • 위의 예시는 패키지 이름이 "com.example.myapp"인 루트 <manifest>요소를 나타낸다

  • 앱을 APK로 빌드하는 동안 Android 빌드 도구가 package 특성을 사용하는 목적은 두가지이다

    • 빌드 도구는 앱에서 생성된 R.java 클래스의 네임스페이스로 이 이름을 적용
    • 빌드 도구는 이 이름을 사용하여 매니페스트 파일에 선언되어 있는 상대 클래스 이름을 확인

앱 구성 요소

  • 안드로이드의 4대 컴포넌트(Activity, Service, Broadcast Receiver, Content Provider)를 앱에서 사용하기 위해 manifest 파일에 등록을 해줘야한다
    • <activity> : Activity
    • <service> : Service
    • <receiver> : Receiver
    • <provider> : Content Provider
  • 컴포넌트의 서브 클래스를 사용하면서 manifest 파일에 선언을 해주지 않는다면 해당 컴포넌트를 실행할 수 없다

  • 각각의 컴포넌트들은 Intent에 의해 활성화된다

    • Intent
      • 어플리케이션 구성요소 간에 작업 수행을 위한 정보를 전달하는 역할
      • ex) activity 간 화면 전환
    • 명시적 Intent
      • 가장 많이 접하는 Intent
      • 앱의 화면을 전환하는 방법
      val intent = Intent(this, SubActivity::class.java)
      startActivity(intent)
    • 암시적 Intent
      • Intent의 Action에 따라 해당하는 적합한 애플리케이션의 클래스를 호출
      • ex) 웹 브라우저 호출, 이메일 전송, 전화앱으로의 통화

권한

  • 민감한 사용자 데이터(연락처, SMS 등) 또는 특정 시스템 기능(카메라, 인터넷 엑세스 등)에 엑세스 하기 위한 권한 요청
<manifest ... >
    <uses-permission android:name="android.permission.SEND_SMS"/>
    ...
</manifest>
  • 위의 예시는 SMS 메세지 전송에 관한 권한을 요청하는 것이다

  • Android 6.0부터 사용자는 런타임에서 일부 앱 권한을 승인하거나 거절할 수 있다

  • 앱은 권한을 사용하여 자체적인 구성요소를 보호할 수 있다

기기 호환성

  • 앱에 필요한 하드웨어 또는 소프트웨어 기능을 선언할 수 있고, 앱과 호환되는 기기 유형을 선언할 수 있다
    • <uses-feature>
      앱에 필요한 하드웨어 및 소프트웨어 기능을 선언할 수 있다
      ex) 나침반 센서 선언
      <manifest ... >
        <uses-feature android:name="android.hardware.sensor.compass"
                            android:required="true" />
        ...
      </manifest>
    • <uses-sdk>
      앱이 호환되는 최소 버전을 나타내기 위해 <uses-sdk> 태그와 해당 태그의 minSdkVersion 특성을 포함해야 한다

      ⚠️ <uses-sdk> 요소의 특성은 build.gradle 파일의 해당 속성으로 재정의 된다는 것을 유의해야한다. Android Studio를 사용하는 경우 이곳에 minSdkVersiontargetSdkVersion 값을 대신 사용해야한다

출처 : https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ko

profile
부딪히며 성장하는 예비개발자

0개의 댓글