Android 14 미리보기
한국시간으로 오늘 새벽에 Android 14 Preview 가 공개되었다. Preview 단계라 아직 모든것이 확정된 내용은 아니지만 현재까지 공개된 내용으로 이 포스팅을 작성한다.
Android 14의 주요 변경 사항은 보안강화와 베터리 타임을 개선하는 내용이다.
Android 14 릴리즈 일정
이제 Preview 1이 공개 된 것이고, Android 13 기준 8월 중순쯤 공개되었으니 이번 Android 14도 그쯤 되지 않을까 싶다.
Android 14 프리뷰 이미지 지원기기
- Pixel 4a (5G)
- Pixel 5 and 5a
- Pixel 6 and 6 Pro
- Pixel 6a
- Pixel 7 and 7 Pro
Android14 프로젝트에 설정하기
Android Studio의 SDK Manager 항목에서 Android 14 빌드 툴을 받아서 설치한다. 그런 다음 Android 14 프리뷰 설정을 위한 Gradle 코드를 다음과 같이 추가한다.
Android 14 변경사항
알람(alarm) 변경사항
- 정확한 알람(exact alarm) 스케쥴링이 기본적으로 거부 된다.
- Manifest.permission.SCHEDULE_EXACT_ALARM 권한이 더 이상 사전에 부여 되지 않는다.
Broadcast 변경사항
- Context에 등록된 브로드캐스트는 앱이 캐시되는 동안 대기 된다.
- 앱이 포어그라운드 상태가 되면 대기된 브로드캐스트들을 전달한다.
- 특정 브로드캐스트의 여러 인스턴스를 하나로 병합할 수 있다.
Target sdk version 제한
- Android 14 부터 targetSdkVersion 23 미만의 앱은 설치가 불가하다.
- 기기를 Android 13에서 Android 14로 업그레이드 하는 경우, 기존에 설치된 targetSdkVersion 23인 앱들은 그대로 유지 된다.
- targetSdkVersion 23 미만의 APK를 설치하거나 테스트 하려면 다음 커맨드를 이용한다.
접근성 – 글꼴 크기 조정
- Android 14부터 최대 200%까지 글꼴 크기 조정을 지원한다(WCAG 지침)
- 이미 sp 단위를 사용하는 경우에는 앱에 큰 영향을 미치진 않는다.
- 최대 글꼴크기를 200%로 활성화 한 상태에서 UI 테스트 하는 것을 권장
- 설정 > 접근성 > 디스플레이 사이즈 및 텍스트 > 폰트 사이즈 조절 항목에서 글꼴 크기를 조정할 수 있다.
포어그라운드 서비스 타입 명시
- 포어그라운드 서비스 사용시 하나 이상의 타입을 필수로 지정해야 한다. 예) camera, location, microphone, mediaPlayback 등
- 열거된 타입들 중 부합하는 타입이 없는 경우 WorkManager 또는 user-initiated data transfer jobs를 사용한다.
User-initiated data transfer jobs(사용자에 의해 시작되는 데이터 전송 작업)
- 사용자에 의해 작업이 즉시 시작된다.
- 시작하기 위해서는 노티피케이션이 필요하며, 시스템 조건이 맞으면 오랜시간동안 실행된다.
- 이 작업은 앱이 사용자에게 보여지는동안 스케쥴링 되어야 한다.
- RUN_LONG_JOBS 권한이 필요하다.
- 다음과 같이 JobInfo 객체를 만들 수 있다.
- setUserInitiated(true) : 사용자에 의해 작업을 즉시 시작해야 하는 경우 설정
- setDataTransfer(true) : 시스템이 일반 작업보다 더 오래 데이터 전송 작업을 실행
- setEstimatedNetworkBytes(…) : 이 작업에서 수행할 예상 네트워크 트래픽 크기를 바이트 단위로 설정
- 앱이 보이는동안 또는 특정 조건 내에서 작업을 다음과 같이 스케쥴링 할 수 있다.
- 작업이 실행중일 때 Jobservice에서 setNotification()을 호출해야 한다.
- setNotification() 을 짧은 시간내에 호출하지 않으면 ANR이 발생한다.
- 사용자는 Task Manager에서 보이는 User-initiated data transfer job을 중단 시킬 수 있다.
- 작업(Job) ID를 가지고 작업을 수동으로 테스트할 수 있다.
- 작업을 즉시 실행 또는 중지된 작업을 재시도 할 때는 다음과 같은 커맨드를 수행한다.
- 시스템에 의해 강제로 중지되는 상황을 시뮬레이션 할 때는 다음과 같은 커맨드를 수행한다.
암시적 인텐트 제한
- Android 14에서 암시적 인텐트는 exported 컴포넌트에만 전달 된다.
- 컴포넌트 및 패키지를 명시하지 않은 가변(mutable) pending intent의 경우 시스템에서 예외(exception)를 던진다.
- Android 14에서 앱을 테스트 할 때 암시적 인텐트와 관련된 예외가 발생하면 로그캣에 warning 레벨로 출력 된다.
브로드캐스트 리시버 변경사항
- 런타임에 브로드캐스트 리시버 등록시 export 플래그를 반드시 지정해야 한다. (RECEIVER_EXPORTED 또는 RECEIVER_NOT_EXPORTED)
- 시스템 브로드캐스트만 수신하는 경우는 예외적으로 플래그없이 리시버 등록이 가능하다.
더 안전한 동적 코드 로딩
- 동적으로 로드되는 모든 파일을 읽기 전용으로 표시해야 한다.
Non-SDK 인터페이스 제약 업데이트
- Non-SDK 메서드 또는 필드를 사용하면 앱에서 크래시가 발생할 수 있다.
- Android 14에서 업데이트 된 자세한 내용은 아래의 링크에서 확인할 수 있다.
https://developer.android.com/about/versions/14/changes/non-sdk-14
Open JDK 17지원
- 300개의 OpenJDK 17 클래스에 대한 액세스가 포함되어 있다.
- 구글은 Java 17 언어 기능을 완전히 사용할 수 있도록 노력하고 있다고 한다. (Android 14에서 완전히 Java 17을 지원할 지 미지수)
앱별 언어 설정
- LocalConfig 동적 변경 : LocalManager 내에 setOverrideLocalConfig 또는 getOverrideLocalConfig() 메서드를 활용한다.
- IME(입력기)에 대한 앱 언어 가시성 : getApplicationLocales() 메서드를 활용하여 현재 앱 언어를 확인하고 이를 가상키보드 등에 매치 시키실 수 있다.
문법적 어조 변경 API
- 프랑스어와 같이 성별에 따라 어조가 변경되는 경우를 위해 GrammaticalInflectionManager API를 지원한다.
0개의 댓글