본문 바로가기

android

10.안드로이드 Manifest 공부

 

1.application

  • allowBackup
    • false
      • 백업 사용 중지
      • 구글 드라이브 백업이 사용 중지되지만 앱의 기기 간 전송은 사용중지되지 앟는다.
    • true : 백업 사용 설정
  • dataExtractionRule
    • Android 12 이상에서 백업 제어 
    • 앱이 새 XML 구성을 가리키도록 한다.
      • XML 구성의 형식은 클라우드 백업과 D2D 전송에 포함 및 제외 규칙을 별도로 지정하도록 하여 구글 드라이브 백업과 D2D 전송간의 차이를 명확히 한다.
    • 새 XML 구성을 가리키면 이전 구성을 가리키는 fullBackupContent 속성은 무시된다.
  • fullBackUpContent
    • Android 11 이하에서 백업 제어
    • 백업 규칙을 포함하는 XML을 넣는다.
    • android:fullBackupContent = "@xml/backup_rules"
  • label
    • 홈화면에 표시되는 이름
  • supportsRtl
    • 오른쪽에서 왼쪽(RTL)레이아웃을 지원하고자 하는지 여부를 선언
  • largeHeap
    • true 일 때 앱이 시스템으로 부터 더 많은 힙메모리를 할당받을 수 있다.
      • 힙메모리란 앤이 동적으로 저장하는 데이터를 사용하는 메모리 공간
    • 주의 
      • 메모리 할당 증가
        • 이 옵션을 사용하면 일반적으로 앱에 할당되는 메모리 양보다 더 많은 메모리를 할당받을 수 있다.
        • 메모리 사용량이 많은 작업을 수행하는 앱(예: 대형 이미지 처리, 복잡한 그래픽 연산 등)에 유용할 수 있다.
      • 시스템 자원에 대한 영향
        • 더 많은 메모리를 사용하는 것은 시스템의 다른 앱과 서비스에 영향을 줄 수 잇다.
        • 특히 메모리가 제한적인 기기에서는 앱의 메모리 사용증가가 다른앱의 성능저하나 시스템 안정성 문제를 일으킬 수 있다.
  • hardwareAccelerated
    • 앱의 모든 액티비티와 뷰에 하드웨어 가속 렌더링이 사용 설정되어 있는지 여부
      • minSdkVersiondl 14이상이면 기본값이 true
    • 앱에서 하드웨어 가속을 사용할지 여부를 지정한다.
      • 하드웨어 가속 : 그래픽 처리를 디바이스의 CPU가 아닌 GPU(그래픽처리장치)에 위임하여, 앱의 UI렌더링 성능을 향상시키는  기술이다.
    • 주요 특징
      • 성능 향상
        • 하드웨어 가속을 사용하면, 특히 복잡한 그래픽을 다루는 앱에서 렌더링 성능이 향상될 수 있습니다.
        • 이는 애니메이션, 그림자, 그라디언트 등의 그래픽 처리에 유용하다.
      • 호환성
        • 오래된 디바이스나 특정 그래픽 라이브러리와 호환성 문제가 발생할 수 있다.
        • hardwareAccelerated를 비활성화 해야할 수도 있다.
  • usesCleartextTraffic
    • Clear traffic이란 SSL/TLS와 같은 보안 프로토콜을 사용하지 않고 데이터를 전송하는 것을 말한다.
    • 이는 HTTP와 같은 비암호화 프로토콜을 사용할 때 발생한다.
    • true로 설정하면 보안 위험에 노출된다.
  • requestLegacyExternalStorage
    • 앱이 범위 지정 저장소를 선택 해제할지 여부이다.
    • 범위 지정 저장소(Scoped Storage)
      • 앱의 파일 접근 범위를 제한하여 사용자의 프라이버시를 강화하고 데이터 보안 향상시키기 위해 설계되었습니다.
      • 주요 특징
        • 애플리케이션 데이터 격리
          • 각 애플리케이션은 자신의 저장소 디렉토리내에서만 파일을 읽고 쓸수 있으며, 다른 애플리케이션 데이터에는 접근할 수 없다.
        • 공유 저장소 접근 제한
          • 공유 저장소(예: 사진, 동영상, 다운로드 폴더등)에 대한 접근은 사용자의 허가가 필요하며 특정파일 타입에 대해서만 접근을 허용한다.
        • 사용자 허가 요구
          • 앱의 사용자의 파일에 접근하려면 사용자로부터 명시적인 허가를 받아야한다.
        • MediaStore API 사용
          • 사진, 동영상, 오디오 파일과 같은 미디어 파일에 접근할 때는 'MediaStore' API를 사용해야합니다.
          • 이 API를 통해 미디어 파일에 대한 접근을 관리할 수 있습니다.
        • 저장소 접근 프레임워크 사용
          • 파일을 선택하거나 저장할 때는 저장소 접근 프레임워크(Storage Access Framework)를 사용합니다.
          • 이는 사용자가 파일을 직접 선택할 수 있게 해주며, 애플리케이션이 파일을 직접 접근하는 대신 이 프레임워크를 통해 파일을 관리한다.

 

activity

  • exported
    • 액티비티가 다른 앱의 구성요소에서 시작될 수 있는지
    • 인텐트 필터가 없는 경우 기본값은 false
    • 인텐트 필터가 있는 경우 true로 설정해서 다른 앱에서 액티비티를 시작할 수 있게 한다.
    • 액티비티가 앱의 기본 액티비티이고 category에 LAUNCER를 포함할 때 exported의 값이 true여야 한다.
    • false 이면 ActivityNotFoundException이 발생한다.
    • exported 이외에도 액티비티 노출 제한하는 방법이 있는데 permission을 사용하면 된다.
  • windowSoftInputMode
    • 액티비티의 기본 window가 터치형 소프트 키보드를 포함하는 창과 상호작용하는 방법을 나타낸다.
    • windowSoftInputMode이 미치는 영향
      • 액티비티에 사용자의 관심이 집중될 때 소프트 키보드를 숨기거나 표시할지 여부
      • 소프트 키보드의 공간을 확보하도록 액티비티의 기본 window 크기를 더 작게 조절할지, 창의 일부가 소프트 키보드로 인해 가려질 때 현재 포커스가 표시되도록 콘텐츠를 이동할 지 여부
    • state : 키보드가 보이거나 숨겨지는 상태
      • stateUnspecified
        • 기본 설정으로, 시스템이 자동으로 소프트 키보드 상태를 결정한다.
      • stateUnchanged
        • 액티비티가 앞으로 나올때 소프트 키보드가 마지막으로 사용된 상태를 유지한다.
      • stateHidden
        • 액티비티가 시작될 때 소프트 키보드를 숨긴다.
      • stateAlwaysHidden
        • 이 액티비티로 전환될 때 항상 소프트 키보드가 숨겨지도록 한다.
      • stateVisible
        • 액티비티가 시작될 때 소프트 키보드를 표시한다.
      • stateAlwaysVisible
        • 이 액티비티로 전환될 때 항상 소프트 키보드가 보이도록한다.
    • adjust : 키보드가 나타날 때 레이아웃이 어떻게 반응하는지 제어
      • adjustUnspecified
        • 시스템이 기본 동작을 결정하도록 한다.
      • adjustResize
        • 키보드가 나타날 때 레이아웃이 자동으로 크기가 줄어들어 키보드 위에 컨텐츠가 표시된다.
      • adjustPan
        • 키보드가 나타날때 레이아웃은 크기가 변경되지 않고 스크롤 되어 포커스가 키보드 위로 이동한다.
      • adjustNothing
        • 시스템이 레이아웃 크기를 조정하지 않는다.
        • 개발자가 windowInsets 로 직접 조정한다.
          • windowInsets은 시스템 UI 요소(상태바, 네비게이션 바, 소프트 키보드 등)가 앱의 콘텐츠 영역과 겹치는 부분을 나타내는 사각형 영역입니다.
          • 이를 통해 개발자는 시스템 ui 요소의 크기와 위치를 파악하고 콘텐츠가 해당 영역과 겹치지 않도록 조정할 수 있습니다.
  • configChanges
    • 특정 구성 변경(예: 화면 방향 변경, 키보드 가용성 변경 등)이 발생했을 때, 시스템이 액티비티를 다시 시작하는 것을 방지하는데 사용된다.
    • configChanges에 구성변경을 지정하면, 해당 변경이 발생할 때 시스템은 액티비티를 파괴하고 재생성하는 대신 onConfigurationChanged 메소드를 호출한다.
    • onConfigurationChanged메소드를 오버라이드하여 구성 변경을 직접처리할 수 있다.

 

intent-filter

  • 액티비티, 서비스, Broadcast Receiver는 인텐트로 활성화 된다.
    • 인텐트
      • 실행할 작업을 설명하는 Intent 객체로 정의되는 메시지 입니다.
      • 여기에는 작업할 데이터, 작업을 수행해야하는 구성 요소의 카테고리 및 기타 지침이 포함된다.
  • 앱이 인텐트를 시스템에 발행하면 시스템은 각 앱의 메니페스트 파일에 선언된 인텐트 필터에 기초하여 인텐트를 처리할 수 있는 앱 구성 요소를 찾는다.
  • 시스템은 일치하는 구성 요소의 인스턴스를 시작하고 해당 구성 요소에 Intent 객체를 전달한다.
  • 구성요소는 인텐트필터를 몇개든 가질 수 있다.
  • 인텐트 필터는 해당 구성요소의 각 기능을 설명한다.
android.intent.action.MAIN
 
  • 기본 진입점으로 시작하고 데이터 수신을 기대하지 않는다.
android.intent.category.LAUNCHER
  • 최상위 실행 프로그램에 표시되어야 한다.
android.intent.action.VIEW
  • 사용자에게 데이터를 보여주기 위해 사용된다.
  • 여러 다른 앱과 상호작용하는데 널리 쓰인다.
  • 사용 예시
    • 웹 페이지 열기 : 사용자가 웹 링크를 클릭했을 때, 이 액션을 사용하여 웹 브라우저를 열고 해당 URL을 표시할 수 있습니다.
    • 파일 열기 : 이미지, PDF, 동영상을 보기위해 사용된다. 이 경우, 인텐트에 파일의 URI와 MIME타입을 설정한다.
    • 지도 보기 : 지도앱에서 주소를 열기 위해 사용됨
  • 주의 사항
    • 해당액션을 처리할 수 있는 앱이 있는지 확인
    • Intent.resolveActivity() 메소드를 사용해 확인 가능
    • 데이터를 전달할 때 데이터의 출처를 신뢰할 수 있는지 확인해야함
    • 사용자에게 선택권을 제공하기 위해 Intent.createChooser() 사용가능
android.intent.category.DEFAULT

 

  • 이 카테고리는 액티비티, 서비스, 리시버가 처리할 수 있는 기본 유형의 인텐트를 나타냅니다.
  • 인텐트 필터에 이 카테고리가 지정되어있지 않다면, 그 인텐트는 startActivity()또는 startActivityForResult()와 같은 메서드에 직접적으로 시작되지 않는다.
  • 왜냐하면 startActivity(), startActivityForResult()에 전달된 모든 암시적 인텐트에 CATEGORY_DEFAULT 카테고리를 자동으로 적용한다.
  • 사용 사례
    • 인텐트 필터에서 사용
      • 해당 액티비티나 서비스가 다른곳(다른 액티비티, 서비스, 시스템 자체)에서 발생하는 인텐트를 처리할 수 있음을 선언하는 것이다.
    • 암시적 인텐트와의 호환성
      • DEFAULT 카테고리는 암시적 인텐트와 함께 사용된다
      • 암시적 인텐트는 특정 액티비티의 이름을 지정하지 않고, 처리할 수 있는 액티비티를 시스템에 요청할 때 사용됩니다.
      • 명시적 인텐트의 경우 이 카테고리는 필요하지 않다. 특정 컴포넌트를 직접 지정한다.
android.intent.category.BROWSABLE

 

  • 웹 링크 처리
    • 웹 브라우저에서 사용자가 링크를 클릭할 때, BROWSEABLE 카테고리를 가진 액티비티는 해당 URL을 처리할 수 있는 후보로 고려됩니다. 
  • 딥 링크 처리
    • 애플리케이션의 특정 부분으로 바로 이동하기 위해 사용되는 딥 링크 처리에도 사용된다.
    • 예를 들어 이메일이나 소셜미디어에서 특정 앱의 특정 페이지로 직접 연결되는 링크를 클릭할 경우, BROWSABLE 카테고리를 가진 해당 앱의 액티비티가 열릴 수 있다.
  • android.intent.category.DEFAULT 카테고리와 함께 사용되는 것이 일반적이다. 이를 통해 앱이 암시적 인텐트에 반응할 수 있도록 설정된다.

 

service

  • directBootAware
    • Direct Boot 모드
      • 디바이스가 재시작되거나 전원이 켜졌을 때, 사용자가 처음으로 디바이스를 잠금 해제하기 전까지의 상태를 의미한다.
      • 일반적으로 개인 사용자 데이터에 접근할 수 없다. 
    • true
      • Direct Boot 모드에서도 사용자의 개인 데이터에 접근할 수 있습니다.

'android' 카테고리의 다른 글

12. android 여러가지 공부하기  (0) 2023.11.29
11. 안드로이드 intent  (2) 2023.11.23
9. Android RxJava 공부  (2) 2023.11.22
8. Android WebView 공식문서 공부  (0) 2023.11.04
6. WebSettings 안드로이드 공식문서 공부  (0) 2023.09.23