회사에서 개발중인 C 프로젝트를 플레이스토어에 내부테스트 버전으로 올렸는데,
"앱 업데이트를 출시하려면 2024년 8월 31일까지 대상 API 수준을 업데이트하세요."
라는 메세지가 있었다.
보기엔 별 일 아니었다. 간단하게 ProjectSettings에서 target API를 33->34로 바꿔주면 될 줄 알았다.
그렇게 빌드를 했을 때에 아래같은 에러가 뜨며 빌드가 중단됐다.
WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 34
This Android Gradle plugin (7.4.2) was tested up to compileSdk = 33
This warning can be suppressed by adding
android.suppressUnsupportedCompileSdk=34
to this project's gradle.properties
The build will continue, but you are strongly encouraged to update your project to
use a newer Android Gradle Plugin that has been tested with compileSdk = 34
지금 사용중인 Android gradle plugin 버전은 targetAPI를 33까지만 지원한다는 내용이었다.
C 프로젝트 에서 사용중인 유니티 버전은 최신 lts버전인 2022.3.39f1였다.
해당 버전에서는 Android gradle plugin 7.4.2를 사용중이고, 이것은 API레벨34에 적합하지 않다는 로그가 나오고 있다.
너무 모순이었다. 한마디로
최신버전이 API34레벨을 지원하지 않는데, 구글에서는 API레벨34를 원한다는거였다.
/
분명 나랑 같은 처지의 개발자가 많을텐데, 구글링 했을때 그런 사람이 너무 적었다.
뭔가 이상하다는걸 눈치 챘어야했는데.. 한발 빼서 멀리서 보지 않고 또 머리 들이밀면서 깊숙히 파고들었다.
정말 많은 포럼과 문서를 읽었고 직접 파일을 타이핑해서 수정해보고, 여러가지 새 버전의 gradle 파일도 받아서 바꿔치기 해보고, 환경변수도 건드리는 등등 참 많이 해봤다. 회사 cto님이랑 구글밋까지 하면서 찾아보았다.
/
빌드는 계속 실패했고, 머리를 식히고 생각해보니 바로 어제 구글에 업데이트했던 N 프로젝트가 생각났다.
생각해보니 N 프로젝트에도 분명 API 34로 올리라는 메세지가 왔어서, 별 문제없이 내가 올렸었다. 근데 왜 C프로젝트만 이렇게 복잡할까?
당장 N 을켜서 C 와 뭐가 다른지 비교했다.
- N의 gradle 버전을 봤는데 C와 같은 7.4.2였다... ..... 😥
- N의 Minimum API Level은 24였고, C는 22였다.
그걸 말씀드리자 cto님이 그럼 일단 gradle 문제는 아니라고 말씀하셨고, 나도 그런것같았다..
그리고 N에서는 사용하지 않고 C에서 사용하는게 있었는데, 페이스북 sdk였다.
그리고 화면공유로 보여주신 화면에 minimum API Level을 올리면 된다는 글을 보았다.(링크는 찾으면 올리겠다.)
Minimum API Level가 기존에는 22로 설정돼있었는데, 24로 바꾸어서 빌드하니 성공했다.
한것에 비해 해답은 허무했지만, 너무 다행이다.