본문 바로가기
안드로이드(kotlin)

안드로이드 매니페스트(AndroidManifest)의 역할은 무엇일까

by 기계공학 주인장 2023. 3. 22.
반응형

안드로이드 매니페스트 파일은 무엇일까?

  • 앱 구성 요소(Activity, Broadcast, Service, Provider)를 정의한 파일
  • 앱이 요구하는 모든 권한을 식별
  • 앱이 요구하는 최소 API을 선언
  • 앱에서 요구하는 하드웨어 및 소프트웨어 기능(카메라, 블루투스 등)을 선언
  • 앱이 링크되어야 하는 API 라이브러리(Google Maps 라이브러리 등)를 선언

 


구성 요소 선언

AndroidManifest에서 앱의 구성 요소에 대해 정의할 수 있습니다.

 

예를 들면 다음과 같은 선언을 할 수 있습니다.

 

<application
        android:name=".AppClass"
        android:allowBackup="true"
        android:fullBackupContent="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Test"
        tools:replace="android:theme">
        <activity
            android:name=".ui.activity.MainActivity"
            android:exported="false" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

 

이처럼 안드로이드 구성 요소를 정의해야 합니다.

 

  • <activity> 요소
  • <service> 요소
  • <receiver> 요소
  • <provider> 요소

앱 별 언어 설정

Android13부터 앱별 언어 설정을 AndroidManifest에서 실시할 수 있습니다.

 

1. res/xml/locales_config.xml 이라는 파일을 생성

예를 들면 다음과 같은 코드로 파일을 생성할 수 있습니다.

 

<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
   <locale android:name="en"/>
   <locale android:name="en-GB"/>
   <locale android:name="fr"/>
   <locale android:name="ja"/>
   <locale android:name="zh-Hans-MO"/>
   <locale android:name="zh-Hant-MO"/>
</locale-config>

 

원하는 국가의 언어의 locale 이름은 다음 링크에서 확인할 수 있습니다.

 

https://developer.android.com/guide/topics/resources/app-languages?hl=ko#sample-config 

 

앱별 언어 설정  |  Android 개발자  |  Android Developers

앱별 언어 설정 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 시스템 설정의 앱별 언어 다국어 사용자의 경우 시스템 언어는 한 가지 언어(예: 영어)로 설

developer.android.com

 

2. 매니페스트에서 생성한 파일을 가리키는 코드를 작성한다.

<manifest>
    ...
    <application
        ...
        android:localeConfig="@xml/locales_config">
    </application>
</manifest>

 

3. 대체 언어를 작성해서 삽입한다.

/res/values/string.xml에 각 국가별 언어를 삽입합니다.

 

4. 앱 레벨의 build.gradle에 다음과 같은 코드를 넣습니다.

위에서 지정한 locale 이름을 선업 합니다.

 

android {
  ...
  defaultConfig {
    resourceConfigurations += ["en", "en-rGB", "fr", "ja", "b+zh+Hans+MO", "b+zh+Hant+MO"]
  }
}

기기 호환성 지정

<uses-feature>

앱에 필요한 하드웨어 및 소프트웨어 기능을 선언할 수 있습니다.

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

 

<uses-sdk>

앱이 호환되는 최소 버전을 정의할 수 있습니다.

android {
  defaultConfig {
    applicationId 'com.example.myapp'

    // Defines the minimum API level required to run the app.
    minSdkVersion 15

    // Specifies the API level used to test the app.
    targetSdkVersion 28

    ...
  }
}

 

단, 매니페스트에서 정의한 호환 버전은 build.gradle에서 재정의될 수 있습니다.


 

안드로이드 MVVM을 사용하기 위한 필수 요소 AAC란 무엇인가?

기존에 사용하던 MVVM을 좀 더 간편하게 좀 더 정확하게 사용하기 위해 나온 것이 AAC이다. 즉, AAC란 아키텍쳐가 아니라 MVVM을 좀 더 잘 사용하기 위한 도구라고 생각하면 쉽다. 이전에 MVVM이란 무

android-developer.tistory.com

 

안드로이드 MVVM 아키텍처란 무엇인가 필요성과 그 배경

안드로이드 MVVM 아키텍처 MVC vs MVP vs MVVM 비교 MVVM의 탄생 이유 및 필요성 MVVM 구현 방법 MVC : View와 Controller를 Activity, Fragment에서 담당 MVC 패턴의 경우 그림과 같이 View와 Controller가 연결되어 있습

android-developer.tistory.com

 

안드로이드 WorkManager는 왜 필요하고 어디서 쓰면될까?

안드로이드 코틀린 WorkManager는 어디서 사용하고 어떻게 사용하면될까? WorkManager는 왜 필요한가? 다른 백그라운드 처리들과의 차이 WorkManager는 어디에 사용하면될까? WorkManager는 어떻게 사용할 수

android-developer.tistory.com

 

리사이클러뷰의 생명주기 분석 및 메모릭의 원인

리사이클러뷰의 라이프 사이클 (화면에 보여지기까지의 순서) onAttachedToRecyclerView - 리사이클러뷰를 화면에 붙임 onCreateViewHolder - 홀더를 생성 onBindViewHolder - 홀더와 뷰를 바인딩 onViewAttachedToWindow

android-developer.tistory.com

 

Navigation을 사용한 화면 이동 시 라이프사이클 변화

Jetpack의 Navigation을 사용하여 화면 이동을 했을 때 Activity, Fragment가 정확히 어떤 타이밍에 어떻게 lifecycle이 순환하는지 확인한다 HTML 삽입 미리보기할 수 없는 소스 필요한 종속 항목 선언 https://d

android-developer.tistory.com

 

반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


댓글