Android 12 타겟 적용 후기

라닉
4 min readMay 5, 2022

--

Photo by Christian Wiediger on Unsplash

안녕하세요 라닉입니다. 😀
이번 포스팅에서는 내부 사정으로 인해 개발내역에 없던 targetSDK을
30(안드로이드 11)에서 31(안드로이드 12)로 올리게 되면서 생긴 이슈와
해결한 방법까지 같이 공유 드리려고 합니다.

PASS 인증 무반응 🧐

PASS 인증이란 휴대폰 인증에 사용되는 API 입니다. 저희 같은 경우 앱 내에서 패스인증을 활발하게 사용하고 있는데, QA 중 패스 인증이 정상적으로 진행되지 않는다는 이슈가 올라왔습니다.
안드로이드 11을 타겟으로 하는 앱은 정상적으로 인증 되지만,
안드로이드 12를 타겟으로 하는 앱에서만 이슈가 발생하여 타겟 SDK를 올리면서 생긴 이슈로 판단하여, 안드로이드12 변경 사항에 대해 찾아보니 다음과 같은 내용이 변경사항에 포함되어 있었습니다.

WebView의 최신 SameSite 쿠키

Android의 WebView 구성요소는 Google의 Chrome 브라우저를 지원하는 오픈소스 프로젝트인 Chromium에 기반합니다. Chromium은 타사 쿠키 처리에 변경사항을 도입하여 보안과 개인 정보 보호를 강화하고 사용자에게는 더 높은 투명성과 더 많은 제어 기능을 제공했습니다. Android 12부터 이러한 변경사항은 앱에서 Android 12(API 수준 31) 이상을 타겟팅할 때 WebView에도 포함됩니다.

SameSite 속성이 없는 쿠키는 SameSite=Lax로 간주됩니다.

SameSite=None이 있는 쿠키는 Secure 속성도 지정해야 합니다. 즉, 보안 컨텍스트가 필요하고 HTTPS를 통해 전송되어야 합니다.

사이트의 HTTP 버전과 HTTPS 버전 간의 링크는 이제 교차 사이트 요청으로 간주되므로 쿠키가 SameSite=None; Secure로 적절하게 표시되지 않는 한 전송되지 않습니다.
https://developer.android.com/about/versions/12/behavior-changes-12?hl=ko

SameSite쿠키의 사용 범위를 제한하기 위한 옵션입니다.

안드로이드11(30)이 타겟으로 되어있고, SameSite 속성이 없었을 때는 SameSite의 속성이 None으로 들어오게 되는데,
안드로이드12(31) 부터는 SameSite의 속성이 없을 경우 Lax로 들어오게 됩니다.

None의 경우 도메인을 검증하지 않고, Lax의 경우는 자사 도메인이 아니여도 접근이 가능하지만, 상태를 변경하는 요청(Post)시에는 접근이 불가능하다고 합니다.

이 내용을 바탕으로 서버개발 담당자 분에게 요청드려 Cookie의 SameSite의 설정을 None으로 설정 및 Secure 속성도 지정을 부탁드리고, 반영된 서버에서 테스트해본 결과 정상적으로 동작하였습니다.

페이스북 로그인 SDK 에러 🤔

다른 이슈로는 페이스북 로그인을 시도할때 앱이 죽는 이슈가 올라왔습니다. 확인결과 다음과 같은 에러가 노출되었습니다.

Caused by: java.lang.IllegalArgumentException: my.app.id: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

해당 이슈 또한 안드로이드12를 타겟으로 하면서 생긴 이슈로 판단하여,
페이스북 로그인 SDK의 버전을 확인하고 안드로이드 12를 지원하는지 확인했습니다. 사용하고 있는 버전은 8 버전대였고 안드로이드12를 지원하고 있지 않아 11.3.0으로 변경하여 수정 진행하였습니다.

오늘도 해당 포스팅을 읽어주셔서 감사합니다 :)
좋은 하루 되세요!

--

--