오늘의 개념은 AndroidManifest 파일입니다.
우선 안드로이드의 앱을 시작 전! 컴포넌트의 존재를 인식해야 실행이 되니, 앱은 안드로이드의 매니페스트라는 파일에 컴포넌트를 선언해야겠죠. 매니페스트 파일이 하는 가장 중요한 일은 앱을 구성하는 컴포넌트를 선언하는 것
매니페스트 파일은 안드로이드 패키지인 apk 내에 포함되며 이 패키지엔 코드와 파일 등이 들어있습니다.
모든 앱에는 AndroidManifest.xml 의 파일명이 존재합니다. 대문자, 소문자 구분합니다. 임의의로 매니페스트 파일 명을 변경해선 안되겠죠.
먼저 Manifest에 정의되는 XML 속성 중 중요하다고 생각되는 것은 Permission 입니다.
Permission은 안드로이드 앱에는 기본적으로 어떠한 권한도 부여되지 않습니다. 당연히 개발 중인 앱이 특정 내장 리소스에 접근 및 특정 기능 사용 시 권한을 정의해주어야겠죠. 앞서 말한 권한을 정의할 때는 패미페스트 파일에 명시해야만 정상적으로 작동되고 명시된 권한들은 해당 안드로이드 앱이 모바일 기기에 설치되게 될 때 함께 부여됩니다.
Permission에 대한 상세한 내용은 이 곳에서 확인할 수 있습니다.
developer.android.com/reference/android/Manifest.permission
<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는 애플리케이션 런처를 나타내고 있습니다. 즉 이 액티비티를 시작점으로 해서 애플리케이션 런처에 등록한다는 의미입니다.
'Android' 카테고리의 다른 글
안드로이드 4대 컴포넌트 (0) | 2021.02.05 |
---|---|
안드로이드 개념) Android SDK(software development kit)와 file format (0) | 2021.01.30 |
안드로이드 개념) CPU Profiler (0) | 2021.01.30 |
안드로이드 개념) Debug, Debuging, Debugger (0) | 2021.01.30 |
안드로이드 개념) Complie, Build와 Gradle (0) | 2021.01.30 |