Flutter로 앱만들기 (3일과정) 경험 기록 - 3일차. 구글플레이스토어 출시

 

구글 플레이스토어 검토중
구글 플레이스토어 검토

3일차

출시하는 법 알아보기

검색을 통해 이것저것 해봤지만, 뭐니뭐니해도 최신 문서가 짱이다. 2일차 도전에 실패하고 3일차에 최신 문서를 보니, 결국(당연한 거지만) 타 블로그들도 이 문서를 따라한 것 뿐이라는 결론이다.

다만, 그대로 따라하면서 내가 겪은 문제점들을 기록하려고 한다. (다음 출시 때 내가 보려고!)

Launcher icon 넣기

맘편하기 flutter_launcher_icon 패키지를 따라했다. 다만 이 부분은 한국 블로그를 먼저 접해서 yaml 파일을 그에 맞게 했는데 잘 작동했다. android만 출시할거면 아래처럼 약식으로 해도 괜찮을 것 같다.

dependencies:
flutter_launcher_icons: "^0.11.0"

flutter_icons:
  // android 환경에서 icon 등록
  android: "launcher_icon"
  // ios 환경에서 icon 등록
  ios: true
  // logo image 파일 경로 등록
  image_path: "images/icon.png"

flutter pub get
flutter pub run flutter_launcher_icons

위 명령어를 실행하여 pupspec.yaml파일을 적용해준다.

참고로 icon은 midjourney를 이용하여 뽑았다. 아주 퀄 좋게 뽑아준다.

Value Calculator icon
Midjourney가 잘 뽑아줬다.

매터리얼 컴포넌트 활성화

이 부분은 build.gradle의 dependencies부분만 적용해줘서 그런지 빌드시 에러가 났던 부분이다. 나는 패스했고, 패스해도 잘 적용이 되었다. 앱의 style에 많이 신경이 쓰이는 분들은 이 부분을 적용해주는 것이 좋을 것 같다.

앱 서명

keytool -genkey -v -keystore %userprofile%\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload

window의 경우 위 코드를 쓰라고 하는데, 잘 작동하지 않을 수 있다.. 서칭 결과 -storetype JKS 옵션을 붙여주지 않아서 그런 것이였다.
그런데 위코드에는 해당 옵션이 있다?!  그렇다 나는 한글판 가이드를 써서 잘못된 코드를 사용한 것이다. 항상 최신 영문판을 참고해야하는 이유다.

위 코드를 사용하면 key의 비밀번호 설정까지 잘 된다.

앱에서 키스토어 참조

[project]/android/key.properties파일을 만들고 아래를 채워넣는다.
 
storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=upload
storeFile=<location of the key store file, such as /Users/<user name>/upload-keystore.jks>

차례대로 store 비밀번호, key 비밀번호, key별명 (위 앱서명대로 하면 upload라고 써야 한다.)
storeFile은 키가 들어있는 주소이다. 왠일인지 [project]/android/app/ 이 기본 루트였다.
맘 편하게 해당 폴더에 key.jks를 넣고 storeFile=key.jks 라고 썼다.

Gradle에 서명 설정하기

하라는대로 하면 된다.

설정 뒤 flutter clean 명령어를 한번 해준다. 기존 설정들을 지워준다고 한다. (난 안했는데 잘 되긴 했다.) 
설정이 다 지워져서 뭔가 에러가 뜬다면 flutter pub get 명령어로 재설정을 해주자.

Proguard사용

뭔가 이상하다면 제대로 생각한거다. 그렇다. 영문판에는 현재 이 내용이 없다. 거지같은 한글판에만 이 내용이 남아있다. 이대로 하면 빌드할 때 에러나고 영문도 모르고 헤메게 된다. 하지 마라.

이미 해버렸다면 이 부분 주석처리하면 된다.

buildTypes {

        release {

            signingConfig signingConfigs.release

            //minifyEnabled true  이부분
            //useProguard true  이부분

            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //이부분
        }
    }

R8로 코드 줄이기

기본적으로 된다고 하니까 신경쓸 필요 없다.

Multidex 지원 활성화

앱이 너무 큰 경우에 해당한다. 나는 패스!

Manifest 다시보기

체크하라는거 한번씩 다 본다. applicationId 는 특히 출시 후 바꿀 수 없으므로 멋있는걸로 잘 설정한다.

앱 빌드와 공개(release)

드디어 대망의 앱 빌드다. App bundle과 APK 두 방법이 있는데 구글에서는 현재 App bundle방식을 추천하고 언제 이후로는 App bundle아니면 아예 출시로 못 올라가게 한다고 한다. 그냥 말 듣자.

flutter build appbundle

명령어를 입력한다.

App bundle 테스트

  • bundle tool을 이용한 테스트 - 다음 글에서 계속
  • Google Play를 이용한 테스트

두가지 방법이 있다. App bundle로 만들었으면 이 방법을 이용해 테스트하는 것이 좋아 보인다.

테스트까지 잘 됐다면 Google Play Store에 aab 파일을 올린다!

구글 플레이 스토어 App bundle 업로드
구글 플레이스토어 앱 릴리즈 화면

번외: APK 테스트

flutter build apk --split-per-abi
명령어를 통해 apk를 만들고 기기를 USB에 연결
flutter install
명령어를 통해 APK를 테스트하는 간단한 방법이 있긴 하지만,  App bundle로 하는 테스트가 아니기 때문에 추천하지는 않는다.



댓글

이 블로그의 인기 게시물

Box Tengo. Private Policy (iOS)

Value Calculator Privacy Policy

Unity meta파일 필요성과, VSC에서 숨기기