TIL - 19
# Android 14 업데이트
안드로이드 버전 14가 출시되었으며, AOSP(Android Open Source Project)에 공개 되었습니다. 안드로이드 버전 14을 대응하기 위해서 어떤 부분을 확인해봐야될까요?
## 비선형 글꼴 크기 200%로 조정으로 앱 테스트
Android는 최대 200%의 글꼴 크기 조정을 지원합니다. UI테스트를 실행하여서 앱이 사용성에 영향을 미치지 않으면서 더 큰 글꼴 크기를 수용할 수 있는지 지원해야 합니다.
## 정확한 알람 에약은 기본적으로 거부됨
`SCHEDULE_EXACT_ALARM` 권한은 Android 13 이상을 타겟팅하는 새로 설치된 대부분의 앱에 더 이상 사전 부여되지 않습니다. 즉, 권한이 기본적으로 거부됩니다.
알림앱에서 정확한 시간에 알림을 울리기위해서 `USE_EXACT_ALARM` 일반 권한을 선언할 수 있습니다. (캘린더 및 알림과 같은 앱이 아니면, 스토어 심사가 거부됩니다.)
## 앱별 언어 설정
Android 설정에서 앱별 언어 목록에 표시되는 언어 집합을 맞춤 설정할 수 있습니다. 이를 통해 지역별 언어 목록을 맞춤 설정하고, A/B 실험을 실행하고, 앱이 서버 측 현지화 푸시를 활용하는 경우 업데이트된 언어를 제공할 수 있습니다.
## 설치 가능한 최소 대상 API 수준
Android 14부터 `targetSdkVersion` 이 23 미만인 앱은 보안을 위해 설치할 수 없습니다. 더 낮은 API 수준을 타겟팅하는 앱을 설치하려고 하면 설치에 실패하고 Logcat에 설치가 실패했다는 메시지가 표시됩니다.
## 사진 및 동영상에 대한 일부 엑세스 권한 부여
Android 14에서는 앱이 Android 13(API 수준 33)에서 도입된 시각적 미디어 권한(`READ_MEDIA_IMAGES` 또는 `READ_MEDIA_VIDEO`)을 요청할 때 사용자가 사진 및 동영상에 대한 일부 액세스 권한을 부여할 수 있습니다.
- 사진 및 동영상 선택: Android 14의 새로운 기능입니다. 사용자가 앱에서 사용할 특정 사진과 동영상을 선택합니다.
- 모두 허용: 사용자가 기기의 모든 사진 및 동영상에 대한 전체 라이브러리 액세스 권한을 부여합니다.
- 허용 안 함: 사용자가 모든 액세스를 거부합니다.
## 암시적 인텐트와 대기 중인 인텐트 제한사항
Android 14를 타겟팅하는 앱의 경우 Android는 암시적 인텐트를 내부 앱 구성요소로 전송하지 못하도록 제한합니다. 내보내지 않은 액티비티를 실행하기 위해서 명시적 인텐트를 사용해야 합니다.
## 런타임 등록 broadcast receiver는 내보내기 동작을 지정해야 함
Android 14를 타겟팅하고 컨텍스트 등록 수신기를 사용하는 앱과 서비스는 수신기를 기기의 다른 모든 앱으로 내보내야 하는지 나타내는 플래그를 지정해야 합니다(`RECEIVER_EXPORTED` 또는 `RECEIVER_NOT_EXPORTED`).
시스템 브로드캐스트용으로만 수신기를 등록하는 경우 수신기를 등록할 때 플래그를 지정하면 안 됩니다.
## 포그라운드 서비스 유형은 필수 항목임
앱이 Android 14를 타겟팅하는 경우 적절한 포그라운드 서비스 유형을 지정해야 합니다. (`FOREGROUND_SERVICE_TYPE_CAMERA`, `FOREGROUND_SERVICE_TYPE_LOCATION` , `FOREGROUND_SERVICE_TYPE_MICROPHONE` 등..)
## OpenJDK 17 업데이트
Android 14에서는 앱 및 플랫폼 개발자를 위한 라이브러리 업데이트와 Java 17 언어 지원을 비롯하여 최신 OpenJDK LTS 출시의 기능과 일치하도록 작업을 진행하고 있습니다.
## 결론
안드로이드 14로 업데이트되면서 보안 측면인 부분과 새로운 기능들이 많이 업데이트되었습니다. 운영하는 서비스에 맞게 문제가 발생할 만한 이슈를 확인 후 대응하는 것이 중요합니다.
## 문서
https://developer.android.com/about/versions/14/summary