Android12 미리보기

안드로이드 12에 대한 최신 정보는 공식 문서에서 확인할 수 있다.

안드로이드는 전통적으로 메이저 버전에 알파벳 순으로 디저트 이름을 붙여왔다. Pie 이후로는 Q로 시작하는 이름대신 Android10이라 명명했다. 하지만 내부적으로는 여전히 디저트 이름을 붙이고 있다

  • Queen Cake(or Quince Tart, Android10)
  • Red Velvet Cake (Android11)
  • Snow Cone (Android12)

출시 일정

Android 12를 적용할 수 있는 기기

  • Pixel 3 및 3 XL
  • Pixel 3a 및 3a XL
  • Pixel 4 및 4 XL
  • Pixel 4a 및 4a (5g)
  • Pixel 5

안드로이드 12의 변경사항

Immersive Mode에서의 네비게이션 제스쳐 변경사항

Android10 및 11에서 전체화면을 제공하는 앱은 스와이프를 일시적으로 비활성화 하므로 두번 스와이프 해야한다.

포어그라운드 서비스 노티피케이션 지연

Netlink MAC 주소 제한사항

Android 11이하에서는 하드코딩된 값을 반환한다 (02:00:00:00:00:00)

MAC 으로 사용자를 식별하는 것은 권장하지 않으므로 구글의 고유 식별에 대한 권장사항 가이드를 확인하자

신뢰 할 수 없는 터치 이벤트 차단

하지만 예외는 있다.

  • 앱 내에서 오버레이를 사용
  • 접근성 윈도우, IME, 어시스턴트 윈도우는 예외적으로 허용
  • 윈도우의 최상위 View가 Gone 또는 INVISIBLE 상태 일 때
  • 윈도우의 alpha 속성이 0.0 일 때
  • 시스템 얼럿 윈도우가 불투명 할 때

ACTION_CLOSE_SYSTEM_DIALOGS 인텐트 액션 지원 중단

하지만, 예외는 있다.

  • 앱이 Instrumented Test를 실행 중 일 때
  • 앱이 안드로이드 11 이하를 타겟팅하고, 알림 서랍위에 윈도우가 나타날 때
  • 앱이 안드로이드 11 이하를 타겟팅하고, 알림을 클릭했을 때 서비스 또는 브로드캐스트 리시버를 처리 할 때

Android12를 타겟팅하는 앱에 대한 변경사항

포어그라운드 서비스 시작 제한

Android 12를 타겟팅하는 경우, 몇가지 경우를 제외하고 백그라운드에서 포어그라운드 서비스를 시작할 수 없다.

대안으로 WorkManager를 사용하자.

WorkManager 변경사항

신속 처리 작업은 시스템이 즉시 실행해야 하는 작업을 말한다. Battery Saver 및 Doze모드에 영향을 받지 않지만, 시스템이 바쁘거나 작업 할당량 초과 시에는 지연될 수도 있다.

포어그라운드 서비스가 허용되는 경우

  • FCM을 통한 우선순위가 높은 메시지 수신 시
  • 사용자가 Bubble, Notification, Widget과 같은 UI와 관련된 액션을 취할 때
  • 지오펜싱 또는 Activity를 감지하는 것과 관련된 이벤트를 수신할 때
  • 좀 더 자세한 내용은 공식 문서를 참조

인텐트 필터가 포함된 컴포넌트의 명시적 노출 선언

이를 위반하는 경우 로그캣에 다음과 같은 오류 메시지가 표시된다.

Pending Intent의 변경 가능 여부 선언

  • PendingIntent.FLAG_MUTABLE : 변경 가능
  • PendingIntent.FLAG_IMMUTABLE : 변경 불가능

플래그를 설정하지 않으면 IllegalArgumentException 발생한다.

변경 가능한 PendingIntent를 만드는 경우

  • 노티피케이션의 Direct Reply Action을 사용하는 경우
  • PendingIntent를 사용한 Bubble을 사용하는 경우

안전하지 않은 중첩된 인텐트 실행

플랫폼 보안을 개선하기 위해 Android 12에서는 앱이 안전하지 않은 방식으로 중첩된 인텐트를 실행하면 경고를 표시하는 디버깅 기능을 제공한다.

커스텀 노티피케이션 변경사항

이전 커스텀 노티피케이션에서는 전체 노티피케이션 영역을 사용하고 노티피케이션에서 레이아웃과 스타일을 제공했지만 이로 인해 사용자를 혼란스럽게하거나 다른 장치에서 레이아웃 호환성 문제를 일으킬 수 있는 안티 패턴이 발생했다.

표준 템플릿은 커스텀 노티피케이션이 확장 및 축소된 상태에서 노티피케이션의 앱아이콘 이나 이름 등 모든 상태에서 다른 노티피케이션과 동일한 양식을 갖도록 한다.

일관성 있고 쉽게 접근할 수 있는 친숙한 UI/UX를 사용자에게 제공한다.

노티피케이션을 커스텀 할 수 있는 영역은 다음과 같다.

비 SDK 인터페이스 제한 사항 업데이트

  • Android9 부터 앱에서 사용할 수 있는 비 SDK 인터페이스를 제한함.
  • 타겟팅 API에 따라 일부 비 SDK 인터페이스를 사용할 수 있지만, 크래시가 발생할 위험성이 높아짐.
  • 로그 메시지 확인 및 StricMode, veridex 도구 등을 사용하여 테스트 할 수 있음.

모션 센서 제한

  • 만약 더 많은 모션 센서 데이터를 더 빠른 주기로 얻고 싶다면,
    HIGH_SAMPLING_RATE_SENSORS 권한을 선언해야 한다. 그렇지 않으면 SecurityException이 발생한다.

웹뷰에서 최신 SameSite 쿠키 적용

  • 기본값 SameSite=Lax
  • SameSite=None 이 있는 쿠키는 Secure 속성을 지정해야함.
  • HTTP버전과 HTTPS 버전 간의 링크는 SameSite=None; Secure로 적절하게 표시되지 않는 한 전송되지 않는다.

ADB 백업 제한

  • Android12를 타겟팅하는 앱의 경우 기기에서 내보내는 다른 시스템 데이터에서 앱 데이터가 제외 됨.
  • 테스트 및 개발 목적으로 adb backup을 사용하는 경우 메니페스트에서 android:debuggable 속성을 true로 지정할 수 있다.

Android 12에서 새롭게 추가되는 기능!!

Android12에서 새롭게 추가되는 주요 기능은 다음과 같다.

  • Rich Content Insertion
  • 호환 가능한 미디어 트랜스코딩
  • PIP 개선

Rich Content Insertion

앱에서 리치 콘텐츠를 클립보드나 키보드, 드래그 앤 드롭 등을 통해 수신할 수 있는 새로운 통합 API 제공.

  • 하위 버전 호환성을 위한 AndroidX 라이브러리 제공
  • Android API 24이상부터 지원

호환 되는 미디어 트랜스 코딩

아래의 포맷은 기기에서 생성 된 콘텐츠에 대해 자동으로 트랜스 코딩 될 수 있다.

Google은 현재 HEVC (High Efficiency Video Coding) 비디오 압축 표준을 지원하지 않는 앱이 훨씬 향상된 비디오 압축을 활용할 수 있도록 Android 12에 새로운 트랜스 코딩 레이어를 추가하고 있다. 이 새로운 표준은 널리 사용되는 AVC(Advanced Video Coding) 압축 형식의 후속 형식이며 동일한 비디오 품질 수준에서 25–50 % 향상된 데이터 압축을 제공한다.

향상된 PIP

  • 제스쳐 네비게이션에서 더욱 자연스러워진 PIP모드로의 전환
  • 비 Video 컨텐츠에 대한 매끄러운 리사이징
  • PIP모드를 빠져나올 때 자연스러운 애니메이션 지원
  • 윈도우 숨기기 또는 나타내기, 핀치 줌을 통한 PIP 윈도우 사이즈 조절 하기 등 새로운 제스쳐 지원

더 쉬워진 블러, 색상 필터 및 기타 효과

둥근 모서리 지원

RoundedCorner는 radius, centerpoint 등의 정보를 가지고 있다. Display.getRoundedCorner() 호출을 통해 모서리 정보를 얻을수 있고, WindowInsets.getRoundedCorner()를 호출하면 앱의 경계에 관련된 모서리 정보를 얻을 수 있다.

앱의 호환성 변경사항 테스트

개발자모드 > 앱 호환성 변경사항 > 항목별 활성화

  • 앱의 targetSdkVersion을 실제로 변경하지 않고 타겟팅 된 변경사항을 테스트 할 수 있음.
  • adb를 통해서도 테스트 할 항목을 활성화 또는 비활성화 할 수 있음.

TL;DR;

A passionate developer who’s curious about Android

A passionate developer who’s curious about Android