android/manifest
<application>
코코넛딩
2024. 11. 18. 14:26
- 앱의 전반적인 속성을 정의
- Application 클래스를 명시합니다.
- 이 클래스는 앱의 전반적인 초기화 작업이나 전역 상태 관리등을 할때 사용된다.
- 전반적인 초기화, 상태 관리
- android:allowBackup="true"
- 앱의 데이터가 백업 및 복원될 수 있는지 여부를 정의
- true이면 android의 백업 시스템이 앱의 데이터를 백업할 수 있다.
- 안드로이드 시스템이 백업할수 있게 할건지
3. android:dataExtractionRules="@xml/data_extraction_rules"
- 데이터 백업과 복원과 관련된 백업 및 데이터 추출 규칙을 정의하는 XML 리소스 파일을 지정합니다. Android 11(API 30) 이상에서 데이터를 보다 안전하게 백업 및 복원하기 위해 사용됩니다.
- XML 리소스 파일이 비어있으면 안드로이드 시스템에 기본으로 설정된 규칙으로 적용됨
4. android:fullBackupContent="@xml/backup_rules"
- 앱의 데이터 백업 규칙을 정의하는 XML 파일을 지정합니다. 이 파일을 통해 특정 데이터가 백업되거나 제외되도록 설정할 수 있습니다.
- 모든 버전에서 사용가능
- **dataExtractionRules**는 주로 데이터 전송, 복원, 마이그레이션과 관련된 세부 규칙을 정의하는 데 중점을 둡니다.
- **fullBackupContent**는 전체 백업 프로세스에서 특정 데이터를 포함하거나 제외하는 규칙을 정의하는 데 사용됩니다.
5. android:hardwareAccelerated="true"
- 이 속성은 하드웨어 가속을 활성화하는 옵션입니다. 그래픽 렌더링을 가속화하여 UI가 더 부드럽고 빠르게 동작할 수 있도록 지원합니다. 기본적으로 하드웨어 가속은 Android 3.0(API 11) 이상에서 활성화됩니다.
- 오래된 폰이 아니라면 true로 하는 것이 이득
하드웨어 가속의 장단점과 성능에 미치는 영향
장점:
- 향상된 성능: 하드웨어 가속을 사용하면 앱의 그래픽 렌더링이 더 빠르고 부드럽게 이루어지며, 복잡한 애니메이션이나 그래픽 집약적인 작업에서도 성능이 향상됩니다.
- 매끄러운 UI: 하드웨어 가속은 UI 요소를 더 빠르게 그리기 때문에 애니메이션, 화면 전환 등에서 더욱 매끄러운 사용자 경험을 제공합니다.
단점 및 폰에 미치는 영향:
- 배터리 소모 증가: GPU를 사용하여 렌더링을 처리하기 때문에, CPU만 사용할 때에 비해 배터리 소모가 더 많아질 수 있습니다.
- 발열: 그래픽 작업이 무거운 경우 하드웨어 가속이 활성화되면 폰이 더 많은 연산을 처리하게 되어 발열이 발생할 수 있습니다.
- GPU 리소스 부담: 오래되거나 사양이 낮은 기기에서는 하드웨어 가속이 오히려 과부하를 초래할 수 있습니다. 앱이 복잡한 그래픽 작업을 많이 수행할 경우 성능이 저하될 수도 있습니다.
6. android:icon="@mipmap/ic_logo"
- 앱의 아이콘을 지정합니다. 앱의 런처 아이콘으로 표시됩니다. @mipmap 리소스 디렉토리에서 아이콘 이미지를 가져옵니다.
7. android:label="@string/app_name"
- 앱의 **이름(라벨)**을 정의합니다. 앱의 이름은 런처와 설정에서 표시됩니다. 여기서는 @string 리소스 파일에서 문자열을 가져옵니다.
8. android:roundIcon="@mipmap/ic_logo_round"
- 둥근 아이콘을 지정합니다. Android 7.1(API 25) 이상에서는 런처 아이콘에 대해 둥근 아이콘을 사용할 수 있으며, 이 속성은 그 둥근 아이콘을 명시합니다.
9. android:supportsRtl="true"
- 앱이 RTL(오른쪽에서 왼쪽) 레이아웃 방향을 지원하는지 여부를 정의합니다. true로 설정하면, 앱은 RTL 언어(예: 아랍어, 히브리어)를 사용할 때 레이아웃이 반전될 수 있습니다.
10. android:theme="@style/Theme.KtrApp"
- 앱의 기본 테마를 지정합니다. 스타일 리소스 파일(@style)에 정의된 테마를 사용합니다.
11. android:usesCleartextTraffic="true"
- 앱이 비암호화된(cleartext) 네트워크 트래픽(HTTP 같은)을 허용할지 여부를 지정합니다. true로 설정되면 앱은 암호화되지 않은 네트워크 요청을 허용합니다. 기본적으로 Android 9(API 28) 이상에서는 보안을 위해 비암호화된 트래픽이 제한됩니다.
- Android 9(API 28) 이상에서는 보안을 강화하기 위해 **비암호화된 네트워크 트래픽(HTTP 요청)**이 기본적으로 차단됩니다. 즉, android:usesCleartextTraffic의 기본값은 false입니다.
12. tools:targetApi="31"
- 이 속성은 개발 도구에서만 사용되는 설정으로, 특정 API 레벨에서의 동작을 지정하거나 특정 빌드 타겟을 테스트하기 위한 용도로 사용됩니다. 여기서는 **API 레벨 31(Android 12)**을 타겟팅하고 있습니다.
- tools:targetApi="31"을 사용하면 API 레벨 31 이하에서 발생할 수 있는 코드적 에러에 대한 경고를 숨길 수 있습니다. 그러나 이는 오직 코드 분석 단계에서만 적용되며, 실제 앱의 실행에는 영향을 주지 않습니다.
- 용도:
- 개발 중에 특정 API 레벨(여기서는 31, 즉 Android 12)에서 어떻게 동작하는지 확인하거나 특정 기능을 테스트할 때 사용됩니다.
- Android Studio와 같은 개발 도구가 tools:로 시작하는 속성을 감지하여, 해당 설정에 따라 특정 API 레벨의 기능을 미리 확인할 수 있도록 지원합니다.
- 실제 앱의 동작에는 영향 없음:
- 이 속성은 런타임 시 앱의 실제 동작에는 영향을 미치지 않습니다. 오직 개발 도구에서 앱을 개발 및 테스트하는 동안에만 사용되는 속성입니다.
- targetApi가 지정되었다고 해서 앱이 특정 API 레벨에서만 작동하는 것은 아닙니다. 이는 개발 도구에서 해당 API 레벨에서의 동작을 확인하는 데 도움을 줄 뿐입니다.
13. android:requestLegacyExternalStorage="true"
- 안드로이드 10 기기에서 Scoped Storage를 선택 해제하는 경우 true를 한다.
- 안드로이드 10 기기에서 Scoped Storage라는 방식으로 외부 저장소에 접근 하지 않고 안드로이드 9이하에서와 동일한 방식으로 외부 저장소에 접근할 수 있게 해준다.
- Android 11에서 실행되지만 build.gradle 파일의 compileSdkVersion과 targetSdkVersion을 29로 맞췄을 때 requestLegacyExternalStorage가 유효하다.
- sdk version 29는 안드로이드 10 이다.
- build.gradle 파일의 compileSdkVersion과 targetSdkVersion을 30으로 맞추면 requestLegacyExternalStorage를 무시합니다.
- sdk version 30는 안드로이드 11 이다.