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로 하는 것이 이득

하드웨어 가속의 장단점과 성능에 미치는 영향

장점:

  1. 향상된 성능: 하드웨어 가속을 사용하면 앱의 그래픽 렌더링이 더 빠르고 부드럽게 이루어지며, 복잡한 애니메이션이나 그래픽 집약적인 작업에서도 성능이 향상됩니다.
  2. 매끄러운 UI: 하드웨어 가속은 UI 요소를 더 빠르게 그리기 때문에 애니메이션, 화면 전환 등에서 더욱 매끄러운 사용자 경험을 제공합니다.

단점 및 폰에 미치는 영향:

  1. 배터리 소모 증가: GPU를 사용하여 렌더링을 처리하기 때문에, CPU만 사용할 때에 비해 배터리 소모가 더 많아질 수 있습니다.
  2. 발열: 그래픽 작업이 무거운 경우 하드웨어 가속이 활성화되면 폰이 더 많은 연산을 처리하게 되어 발열이 발생할 수 있습니다.
  3. 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 이다.