[AOS] Android14

2024. 1. 16. 14:36dev/aos

728x90
반응형

Android 14부터 targetSdkVersion이 23미만인 앱은 설치할 수 없다.

멀웨어로 22버전을 타겟해서 23버전에서 도입된 런타임 권한 모델이 적용되지 않도록 한다.

멀웨어는 악성 소프트웨어이고, 런타임 권한이란 사용자에게 특정 시스템을 사용할 수 있도록 권한을 요청하는 것이다.

하지만, 해당 런타임 권한 없이 앱 자체가 특정 권한을 스스로 허용해서 사용한다면 문제가 발생할 것이다.

그 점을 막기위해 Android 14부터는 보안상 23미만의 앱은 설치할 수 없도록 지시가 내려진 것 같다.

 

 

사용자가 닫을 수 없는 알림 처리 방식 변경

음악 플레이어 같은 경우 백그라운드로 재생되며 재생 컨트롤러를 포그라운드 알람창 형식으로 표기하기도 한다.

같은 방식으로 표기를 하되, 닫을 수 없도록 설정한 포그라운드 알람창을 닫을 수 있도록 한다.

- 닫을 수 없는 경우

  • 휴대전화가 잠긴 상태인 경우
  • 모두 지우기를 클릭한 경우

 

 

사진 및 동영상에 대한 액세스 권한 분리

사진에 대해서만, 동영상에 대해서만 따로 권한을 요청해서 사용.

<!-- Devices running Android 12L (API level 32) or lower  -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

<!-- Devices running Android 13 (API level 33) or higher -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

<!-- To handle the reselection within the app on Android 14 (API level 34) -->
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />

 

 

 

2024-02-05-월 : 14버전 다시 읽은 뒤 정리

- 정확한 알람 예약은 기본적으로 거부됨

정확한 알람은 무조건적으로 해당 시간에 실행하게 하는 작업이다. 권한은 SCHEDULE_EXACT_ALARM권한을 주지만, Android14부터 Android13이상을 타겟하는 앱에서 더 이상 사용되지 않는다.

Android14부터, Android13이상을 타겟하는 앱에서 더 이상 사용되지 않는다.. 정말 어려운 말이다.

그럼 Android13에서는 Android13앱이 괜찮은 것인데,

이게 무슨 말도 안되는 해석인가,

Starting in Android 14, the SCHEDULE_EXACT_ALARM permission is no longer being pre-granted to most newly installed apps targeting Android 13 and higher

영문으로 보아도 의미는 동일하다. 차라리 TargetSDK 33이상이라고 표기해주면 좋았을 것 같다.

Android13을 타겟한다는 것이 명확히 이해는 가지 않으나, 그렇구나, 정도로 이해하게 된다.

 

- killBackgroundProcess() 해당 명령을 호출한 앱의 백그라운드 프로세스만 종료 가능

안드로이드 개발을 4년간 해왔지만, killBackgroundProcess()명령은 사용해보지 않았다.

아무래도 Android14 이전에 killBackgroundProcess()명령을 사용해서 백그라운드에서 실행 중인 앱들을 종료시켰었나 보다. Android14부터는 스스로 메모리가 필요한 경우 백그라운드에서 유지되고 있는 캐시된 앱을 스스로 종료하여 메모리를 확보한다. 허나 killBackgroundProcess()를 사용해서 백그라운드에 캐시된 앱들이 모두 종료되고, 다시 실행시 앱을 구동하기 위해 메모리가 사용되므로 배터리 소모가 늘어날 수 있다. 캐시된 앱을 사용하면 바로 재개가 가능하기에 이런 부분을 보완한 것이다.

 

 

- 전체화면 인텐트 보안 알림

Android11(API 30) 에서는 휴대전화가 잠긴 상태에서 전체 화면 인테트를 사용할 수 있었다.

Notification.Builder.setFullScreenIntent. AndroidManifest에서 USE_FULL_SCREEN_INTENT권한을 선언하여 앱 설치시 자동으로 권한을 부여할 수 있었다.

 

전체 화면 인텐트 알림은 수신 전화 또는 사용자가 구성한 알람 시계 설정과 같이 사용자의 즉각적인 주의가 요구되는 매우 높은 우선순위의 알림을 위해 설계되었다. 즉 전체 화면 인텐트 알림은 우리가 출근하기 위해 새벽 6시 30분에 맞춘 알람이 화면이 켜지면서 알람 화면과 동시에 우우웅 우우웅 거리는 것과 전화가 와서 수신전화 화면이 표출되는 기능을 뜻한다. Android11에서는 해당 권한만 부여해서 사용이 가능했지만, Android14부터는 통화와 알람을 제공하는 앱만 이 권한을 사용할 수 있도록 제한한다. Google PlayStore에서 위의 사항에 맞지 않으면 USE_FULL_SCREEN_INTENT권한을 취소한다.

Android13까지는 사용이 가능하나, Android14로 업데이트하면 수정이 필요하다.

NotificationManager.canUseFullScreenIntent를 사용해서 앱에 권한이 있는지 먼저 확인해주는 것이 필요하다.

권한이 없다면 ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT를 사용해서 권한을 부여할 수 있는 설정 페이지를 실핸한다.

 

 

- 데이터 보안 정보가 더 잘 보임

Play Console양식에서 선언한 정보를 시스템에서 표시하는 위치 수를 늘린다. 현재 사용자는 Google Play의 앱 등록정보에 있는 데이터 보안 섹션에서 정보를 볼 수 있다.

이건 Android14를 업데이트하면서 앱에 대한 정보를 사용자가 더 자세히 확인할 수 있게 해주는 기능이다.

 

 

- 글꼴 크기 200% 조정

내가 최대로 사용해본 글꼴 크기는 아마 48sp였던 것 같다.

그렇게 글꼴 크기에 대해 고찰해본 것은 아니지만, 이 업데이트 항목을 보고 어르신을 생각하는 나의 방향성과 맞는 안드로이드가 좀 더 호감이 올라가게 된다. 

텍스트 크기는 항상 sp 단위로 지정해야 한다. 그래야 Android에서 사용자의 기본 텍스트 크기를 적용하고 적절하게 크기를 조정할 수 있다. Padding 또는 Height에 sp단위를 사용하지 않는다. 비선형 글꼴 크기 조정 sp 는 비례하지 않을 수 있다.

즉, Android14부터 설정 - 접근성 - 디스플레이 크기 및 텍스트를 통해서 글꼴의 크기를 키울 수 있기 때문에 글꼴에는 sp 단위를 잘 사용하라는 말이다.

 

 

 

https://developer.android.com/about/versions/14/behavior-changes-all?hl=ko

 

동작 변경사항: 모든 앱  |  Android 개발자  |  Android Developers

모든 앱에 영향을 주는 Android 14의 변경사항을 알아봅니다.

developer.android.com

https://developer.android.com/about/versions/14/changes/partial-photo-video-access?hl=ko

 

사진 및 동영상에 대한 일부 액세스 권한 부여  |  Android 개발자  |  Android Developers

Android 14 베타에 오신 것을 환영합니다. Android 14를 최고의 버전으로 만들 수 있도록 의견을 제공해 주세요. 사진 및 동영상에 대한 일부 액세스 권한 부여 컬렉션을 사용해 정리하기 내 환경설정

developer.android.com

 

728x90
반응형

'dev > aos' 카테고리의 다른 글

[AOS] Firebase Crashlytics  (0) 2024.01.19
[AOS] WebView  (0) 2024.01.19
[AOS] Coroutine  (0) 2024.01.18
[AOS] Gson, Json convert  (0) 2024.01.18
[AOS] HttpUrlConnection  (0) 2024.01.18