안드로이드 14 대응을 위한 Play Core 마이그레이션 방법

안드로이드 14에서 Play Core 라이브러리 작동 호환성을 확보하기 위한 마이그레이션 방법.

들어가며...

지난주, 구글 플레이 팀으로부터 한 통의 메일을 받았다.

구글 플레이 팀의 Play Core 마이그레이션 공지 메일
구글 플레이 팀의 Play Core 마이그레이션 공지 메일

현재 Trindex 앱에서 사용 중인 Play Core 1.10.3 라이브러리가 안드로이드 14(API level 34)에서는 더 이상 호환되지 않을 모양이다. 8월 31까지 새로운 버전으로 업데이트한 뒤 제출하라고 한다.

Play Core? 어디에 쓰는 물건인고?

build.gragle에서 기존 Play Core 라이브러리 주석 처리
build.gragle에서 기존 Play Core 라이브러리 주석 처리

일단 Play Core 라이브러리가 어떤 기능을 하는 애인지, 또, 왜 사용하게 된 건지 정확히 기억나지 않았다. 그래서 denpendencies의 implementation 문을 주석 처리하고, Sync 및 빌드 시도를 해 보았다.

Play Core 라이브러리를 제거했을 때 발생하는 빌드 오류
Play Core 라이브러리를 제거했을 때 발생하는 빌드 오류

그러자 위와 같이 빌드 오류가 발생하면서...

Play Core 라이브러리를 제거했을 때 발생하는 인앱 리뷰 코드 오류
Play Core 라이브러리를 제거했을 때 발생하는 인앱 리뷰 코드 오류

Play Core 용도를 단번에 파악할 수 있게 되었다. Trindex 앱에서는 인앱 리뷰를 가능하게 만들기 위해 사용하고 있었는데, 해당 기능을 구현한 코드와

Play Core 라이브러리를 제거했을 때 발생하는 import 오류
Play Core 라이브러리를 제거했을 때 발생하는 import 오류

그 코드를 사용하기 위해 import 한 패키지들에 오류 표기가 되었다. 이 부분들을 해결해 주는 것이 이번 작업의 목표라 할 수 있겠다.

Play Core 마이그레이션 방법

앞서 확인된 import 오류는 크게 play.core.review.*와 play.core.tasks.*로 나눠볼 수 있다. 구글 플레이 팀이 제공하는 마이그레이션 가이드를 보면...

https://developer.android.com/guide/playcore?hl=ko

기존 단일 Play Core 라이브러리가 4개의 라이브러리로 나뉜 것으로 파악되는데, 그중 review.*에 해당되는 패키지를 다음과 같이 기존 implementation 대신 사용했다.

Play Core 인앱 리뷰와 관련된 새로운 dependency
Play Core 인앱 리뷰와 관련된 새로운 dependency

dependencies에 추가 후 sync를 하면

review.*에 대한 import 오류 해결
review.*에 대한 import 오류 해결

예상했던 것처럼 play.core.review.*와 관련된 import 문제는 모두 해결된다. 남은 것은 play.core.tasks.*와 관련된 import 문제인데,

tasks.* 패키지 경로 변경으로 import 오류 해결
tasks.* 패키지 경로 변경으로 import 오류 해결

가이드에 명시된 것처럼 위와 같이 gms.tasks.*로 대체해 주면 된다.

대부분의 문제가 해결된 상황
대부분의 문제가 해결된 상황

import 문제를 모두 해결하고 다시 인앱 리뷰 코드로 가보면 오류의 대부분이 해결된 것을 볼 수 있다. 하지만 getErrorCode() 메소드 호출 부분은 여전히 문제가 있다. 현재까지 확인된 바로는 getErrorCode() 메소드가 더 이상 지원되지 않는 것으로 보인다.

getErrorCode() 대신 발생하는 예외에 대해 메시지를 출력하는 것으로 마무리
getErrorCode() 대신 발생하는 예외에 대해 메시지를 출력하는 것으로 마무리

따라서 해당 부분을 위와 같이 적당히 대체해 주었다. 다시 import 부분으로 돌아가 보면 더 이상 사용하지 않는 패키지들이 비활성화된 모습을 볼 수 있는데,

마이그레이션 후 import 내용을 정리한 모습
마이그레이션 후 import 내용을 정리한 모습

해당 코드들을 정리해 주는 것으로 이번 Play Core 관련 마이그레이션 작업을 마무리했다. 테스트해 보니 일단 별문제 없이 동작하는 것으로 보인다.