Flutter 는 pubspec.yaml 파일에서 빌드 버전을 관리한다.
{Flutter_proejct} > pubspec.yaml
(...)
version: 1.0.10+7
(...)
"1.0.10+7" 의 형식으로 되어 있는 빌드 넘버를 풀어보면, 대부분 이런 의미를 가진다.
- 1 : 매우 큰 업데이트
- 0 : 특별한 기능 변경
- 10 : 소소한 버그 개선
- +7 : (비공개) 지속적인 개발 단계의 빌드
그런데, 구글의 play 콘솔에 테스트 버전을 빌드해서 테스트 하기 위해 파일을 업로드하면, 이런 오류가 발생해 가끔씩 당황하게 된다.
7 버전 코드는 이미 사용되었습니다. 다른 버전 코드를 사용해 보세요.
너무 사소한 디버그라서 코드만 수정하고 바로 Build 했을 때 발생하는 문제다. 반드시 한 번은 실행해 주어야 코드가 변경되어서 빌드가 변경되지 않았을 때 발생하는 오류로 보인다. 가끔은 내가 빌드 넘버 올리는걸 잊어버리고 디버깅 한 다음에, 긴가민가 해서 넘버를 하나 더 올리는 경우에도 이런 문제가 생기는 듯 하다.
$ flutter build apk
.apk 빌드를 한 번 해준 다음,
$ flutter build appbundle
.aab 앱번들을 빌드하면 해결된다.
단, 한 번 오류가 발생했던 빌드 넘버는 사용할 수가 없다. 마지막 오류가 발생한 다음 번호로 빌드하자. 위에 예시에서 +7 버전릴리즈 오류가 생겼다면, +8 이후의 넘버를 사용해야 한다.
그리고, +빌드넘버는 버전 네임과 별개로 무조건 증가시켜야 한다. 1.1.10+10000 에서 1.2.0이 되더라도 다시 1.2.0+1로 시작하는게 아니라 1.2.0+12000 처럼 의미있게 증가시키도록 한다. (소규모 프로젝트는 1.1.10+11 이나 1.2.10+21 처럼 작게 증가시켜도 됨)
note.
- 처음 겪는 일이라, 이리저리 검색해도 최신 Flutter/dart 이 아니거나, Android Studio 환경의 경우가 마땅치 않아 기록으로 남깁니다.
- 지난 번, flutter run 으로도 해결되긴 했지만, 최근 이 또한 실패해서 apk 로 빌드 한 다음에 aab 를 빌드하니 성공했습니다.