본문 바로가기

Android

안드로이드 개념) AndroidManifest.xml

728x90

오늘의 개념은 AndroidManifest 파일입니다.

우선 안드로이드의 앱을 시작 전! 컴포넌트의 존재를 인식해야 실행이 되니, 앱은 안드로이드의 매니페스트라는 파일에 컴포넌트를 선언해야겠죠. 매니페스트 파일이 하는 가장 중요한 일은 앱을 구성하는 컴포넌트를 선언하는 것

매니페스트 파일은 안드로이드 패키지인 apk 내에 포함되며 이 패키지엔 코드와 파일 등이 들어있습니다.

모든 앱에는 AndroidManifest.xml 의 파일명이 존재합니다. 대문자, 소문자 구분합니다. 임의의로 매니페스트 파일 명을 변경해선 안되겠죠.

먼저 Manifest에 정의되는 XML 속성 중 중요하다고 생각되는 것은 Permission 입니다.

Permission은 안드로이드 앱에는 기본적으로 어떠한 권한도 부여되지 않습니다. 당연히 개발 중인 앱이 특정 내장 리소스에 접근 및 특정 기능 사용 시 권한을 정의해주어야겠죠. 앞서 말한 권한을 정의할 때는 패미페스트 파일에 명시해야만 정상적으로 작동되고 명시된 권한들은 해당 안드로이드 앱이 모바일 기기에 설치되게 될 때 함께 부여됩니다.

Permission에 대한 상세한 내용은 이 곳에서 확인할 수 있습니다.

developer.android.com/reference/android/Manifest.permission

 

Manifest.permission  |  Android 개발자  |  Android Developers

 

developer.android.com

<manifast> ... </manifest>

앱 안에 구성된 목록을 시작하며, <manifest> 요소의 속성으로 패키지 이름, 버전 코드, 버전 이름 등이 선언되어 있습니다.

<application> ... </application>

<application
        android:allowBackup="true"     //앱이 파괴되었을 때 백업을 허용하는지의 여부
        android:icon="@mipmap/ic_launcher"     //앱의 아이콘
        android:label="@string/app_name"     //앱의 이름
        android:roundIcon="@mipmap/ic_launcher_round"     //앱의 라운드 아이콘
        android:supportsRtl="true"     //오른쪽에서 왼쪽으로 레이아웃을 지정
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

android:allowBackup= 앱이 파괴되었을 때 백업을 허용하는지의 여부를 지정하는 것인데, true로 설정하게되면 데이터가 구글 클라우드에 자동으로 백업되게 됩니다.

 

android:allowBackup="false"
tools:replace="android:allowBackup"
android:fullBackupContent="false"

데이터 자동 백업을 사용하지 않으려면 위처럼 android: allowBackup, android: fullBackupContent 속성 값을 false로 설정해주면 됩니다. 만약 프로젝트에 있는 다른 플러그인으로 인해서 allowBackup 속성이 충돌하는 경우 tools:replce 속성을 추가해주면 됩니다.

 

android:icon= 앱의 아이콘

android:label= 앱의 이름

android:roundIcon= 앱의 라운드 아이콘

android:supportsRtl= 오른쪽에서 왼쪽으로 레이아웃을 지정

android:theme= style.xml의 테마를 의미

<activity> ... </activity>

위의 코드를 보면 현재 앱은 하나의 액티비티로 이루어져있음을 알 수 있죠? 액티비티의 속성들로 이름과 레이블이 선언되어 있습니다.

<intent-filter> ... </intent-filter>

인텐트 필터란 액티비티로 들어오는 인텐트를 걸러내는 것입니다. 즉 어떤 인텐트를 허용할 것인지를 기술하는 거죠. 여기서 인텐트란 액티비티와 액티비티 사이를 연결시켜주는 매커니즘 입니다.

action 내부에 android.intent.action.MAIN이 의미하는 것은 이 액티비티를 시작점으로 실행한다는 것을 의미합니다.

categoty는 애플리케이션 런처를 나타내고 있습니다. 즉 이 액티비티를 시작점으로 해서 애플리케이션 런처에 등록한다는 의미입니다.

 

effectivecode.tistory.com/826

 

인텐트 필터(Intent Filter)

AndroidManifest.xml 에 컴포넌트 하위 태그로 태그가 등록되고 형태는 다음과 같다. p> 부분에 , , 가 등록되어 있는데 이 3가지가 모두 등록될 필요는 없지만, 내가 운영하고 있는 앱에서는 다 등록이

effectivecode.tistory.com