안드로이드 시스템이 앱의 구성요소를 실행하기 위해 구성요소가 존재 여부를 알 수 있는 파일
앱 프로젝트 루트 디렉토리에 AndroidManifest.xml파일로 존재
구성요소 선언외에도 사용자 권한, 최소 API 레벨, 필요 하드웨어 또는 소프트웨어 기능(예: 카메라, 블루투스 등), 앱이 연결되어야 하는 안드로이드 프레임워크가 아닌 API 라이브러리(예: Google Maps 라이브러리) 등에 관한 내용이 있음
다음과 같이 매니페스트 파일에서 액티비티를 선언할 수 있음
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:icon="@drawable/app_icon.png" ... >
<activity android:name="com.example.project.ExampleActivity"
android:label="@string/example_label" ... >
</activity>
...
</application>
</manifest>
<application>
요소에서 android:icon
속성은 앱을 식별하는 아이콘 리소스
<activity>
요소에서 android:name
속성은 Activity 서브클래스의 전체 클래스 이름을 지정, android:label
속성은 사용자에게 표시되는 액티비티의 라벨 문자열을 지정
<activity>
<service>
<receiver>
<provider>
BroadcastReceiver
객체를 동적으로 생성 후 registerReceiver()
를 호출해 시스템에 등록 가능안드로이드 시스템은 암시적 인텐트를 받으면 매니페스트 파일에 선언된 인텐트 필터를 확인해 어떤 구성요소가 인텐트에 응답할 수 있는지 식별
매니페스트 파일에 액티비티를 선언할 때 인텐트 필터를 포함해 다른 앱의 인텐트에 응답할 수 있는 기능을 선언할 수 있음
새 이메일 작성 액티비티가 있다면 다음과 같이 인텐트 필터를 선언해 ACTION_SEND
인텐트에 응답하는 액티비티를 선언할 수 있음
<manifest ... >
...
<application ... >
<activity android:name="com.example.project.ComposeEmailActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<data android:type="*/*" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
안드로이드로 구동되는 다양한 장치가 있으며, 모든 장치가 동일한 기능과 성능을 제공하지 않으므로 매니페스트 파일에 하드웨어 또는 소프트웨어 요구사항을 정의해 앱을 사용 가능한 장치를 구분할 수 있음
대부분의 이런 선언들은 정보 제공용이며 시스템이 직접 읽지 않음
Google Play와 같은 외부 서비스가 읽어 사용자가 앱을 검색할 때 필터링에 사용함
build.gradle
파일에 minSdkVersion
과 targetSdkVersion
값을 선언해야 함android {
...
defaultConfig {
...
minSdkVersion 26
targetSdkVersion 29
}
}
android:required
속성을 false로 변경할 수 있음. 이 경우 런타임에 카메라 관련 기능을 비활성화 하면 됨<manifest ... >
<uses-feature android:name="android.hardware.camera.any"
android:required="true" />
...
</manifest>
소스 코드를 제외한 이미지, 오디오 파일 또는 메뉴, 애니메이션, 메뉴, 스타일, 색상, 액티비티 UI 레이아웃 등을 정의한 XML 파일
대체 리소스 세트를 제공해 코드를 수정하지 않고 다양한 장치 설정(예: 언어, 화면 크기)에 맞게 앱을 최적화할 수 있음
UI 문자열을 XML로 정의하면 다른 언어로 번역해 별도의 파일에 저장할 수 있음
res/values (일반 문자열)
res/values-fr (프랑스어 문자열)
이 경우에 대시(-)로 구분되는 fr과 같이 추가로 붙는 짧은 문자열을 한정자(Qualifier)라고 함
res/drawable/logo.png 파일이 있으면 SDK 도구는 R.drawable.logo 라는 ID를 생성하고 이 ID는 앱 고유의 정수 값에 매핑됨. 코드에서 이 ID를 사용해 이미지를 삽입할 수 있음
원문
https://developer.android.com/guide/components/fundamentals