기기 호환성
매니페스트 파일에서는 앱에 필요한 하드웨어 또는 소프트웨어 기능을 선언할 수 있고 따라서 앱과 호환되는 기기 유형도 선언할 수 있습니다. Google Play Store에서 앱에 필요한 기능이나 시스템 버전을 제공하지 않는 기기에 앱 설치를 허용하지 않습니다.
어느 기기가 앱과 호환되는지 정의하는 매니페스트 태그가 여러 가지 있습니다. 가장 일반적으로 사용하는 태그의 몇 가지 예를 들자면 다음과 같습니다.
<uses-feature>
<uses-feature>요소를 사용하여 앱에 필요한 하드웨어 및 소프트웨어 기능을 선언할 수 있습니다. 예를 들어 나침반 센서가 없는 기기에서 앱이 기본적인 기능을 실행할 수 없다면 필요에 따라 다음과 같이 매니페스트 태그를 사용하여 나침반 센서를 선언할 수 있습니다.
<manifest ... >
<uses-feature android:name="android.hardware.sensor.compass"
android:required="true" />
...
</manifest>
<uses-sdk>
각 후속 플랫폼 버전에 이전 버전에서 사용할 수 없는 새 API가 추가되는 경우가 종종 있습니다. 앱이 호환되는 최소 버전을 나타내려면 매니페스트<uses-sdk>태그와 해당 태그의 minSdkVersion특성을 포함해야 합니다.
그러나 요소의 특성은 build.gradle파일의 해당 속성으로 재정의된다는 것에 유의하세요. Android Studio를 사용하고 있다면 여기에 minSdkVersion과 targetSdkVersion값을 대신 사용해야 합니다.
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
...
}
}
파일 규칙
요소
<manifest> 및 <application>요소만 필수입니다. 두 요소는 각각 한번만 실행되야 합니다. 다른 요소는 대부분 한번도 실행되지 않거나 한 번 이상 실행되어도 됩니다. 다만 이들 중 일부가 있어야만 매니페스트 파일에 쓸모가 있습니다.
모든 값은 요소 내의 문자 데이터로서가 아니라 특성을 통해 설정됩니다.
같은 레벨에 있는 여러 요소는 보통 순서가 지정되지 않습니다. 예를 들어 <activity>, <provider> 및 <service> 요소는 어느 순서로든 배치할 수 있습니다. 이 규칙에는 두 가지 중요한 예외 사항이 있습니다.
- <activity-alias>요소는 이 요소를 별칭으로 사용하는 <activity>다음에 와야 합니다.
- <application> 요소는 <manifest>요소 내부에 있는 마지막 요소여햐 합니다.
특성
엄밀히 말해서 모든 특성은 선택 사항입니다. 그러나 어떤 요소의 목적을 달성하기 위해 반드시 선언해야 하는 특성이 많습니다.
루트<manifest>요소의 몇 가지 특성을 제외하고 모든 특성 이름은 접두사 android: 로 시작됩니다. 예를 들어 android:alwaysRetainTaskState가 있습니다. 이 접두사는 범용이기 때문에 특성을 이름으로 참조하는 경우 관련 문서에서 이를 생략하는 경우가 일반적입니다.
여러 개의 값
둘 이상의 값을 지정할 수 있는 경우 한 요소 안에 여러 값이 나열되지 않고 해당 요소가 거의 항상 반복됩니다. 예를 들어 한 인텐트 필터가 여러 개의 작업을 나열할 수 있습니다.
<intent-filter ... >
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.INSERT" />
<action android:name="android.intent.action.DELETE" />
...
</intent-filter>
리소스 값
어떤 특성은 사용자에게 표시되는 값이 설정됩니다.(예 : 액티비티의 제목 또는 앱 아이콘) 이런 특성에 대한 값은 사용자 언어나 다른 기기 구성에 따라 달라질 수 있으므로(예를 들어 기기 픽셀 밀도에 따라 다른 아이콘 크기 제공) 매니페스트 파일에 하드코딩하지 말고 리소스 또는 테마에서 값을 설정해야 합니다. 그러면 실제 값을 각 기기 구성에 제공하는 대체 리소스에 따라 변경할 수 있습니다.
리소스는 다음과 같은 형식의 값으로 표현됩니다.
"@[package:]type/name"
앱에서 리소스를 제공할 경우 package 이름을 생략할 수 있습니다.(라이브러리 리소스가 앱 리소스에 병합되므로 라이브러리 종속성에서 제공할 경우에는 포함합니다.) Android프레임워크의 리소스를 사용하고자 할 때 그 외에 유효한 패키지 이름은 android뿐입니다.
type은 리소스의 유형(예:string 또는 drawable)이고 name은 특성 리소스를 식별하는 이름입니다. 다음은 이에 대한 예입니다.
<activity android:icon="@drawable/smallPic" ... >
대신 테마에 정의된 값을 적용하려면 젓 문자 @가 아니라 ?가 되어야 합니다.
"?[package:]type/name"
문자열 값
특성 값이 문자열인 경우 문자를 이스케이프 처리하려면 백스래시(\\)를 사용해야 합니다.(예:줄바꿈의 경우 \\n 또는 유니코드 문자의 경우 \\uxxxx)
매니페스트 파일에서는 앱에 필요한 하드웨어 또는 소프트웨어 기능을 선언할 수 있고 따라서 앱과 호환되는 기기 유형도 선언할 수 있다.
기기 호환성 : <uses-feature>요소를 사용하여 앱에 필요한 하드웨어 및 소프트웨어 기능을 선언할 수 있다.
앱이 호환되는 최소 버전을 나타내려면 매니페스트태그와 해당 <uses-sdk>태그의 minSdkVersion특성을 포함해야 한다.
특성 : 모든 특성 이름은 접두사 android: 로 시작한다.
리소스 값 선언 : "@[package:]type/name"
예 : </activity android:icon="@drawable>
테마 값 선언 : "?[package:]type/name"
'X' 카테고리의 다른 글
앱 개발 방법 - 액티비티(Activity) (액티비티의 소개 [액티비티의 개념]) (1) | 2022.01.13 |
---|---|
앱 개발 방법 - 앱 매니페스트 파일 (매니페스트 요소 [<action>, <activity>, <activity-alias>, <category, <data>, <instrumentation>등..], 매니페스트 파일 예시) (2) | 2022.01.13 |
앱 개발 방법 - 앱 매니페스트 파일 (인텐트 필터, 아이콘 및 레이블, 권한) (0) | 2022.01.12 |
앱 개발 방법 - 앱 매니페스트 파일 (앱 구성 요소) (0) | 2022.01.12 |
앱 개발 방법 -앱 매니페스트 파일 (패키지 이름과 애플리케이션 ID) (0) | 2022.01.12 |