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를 이용하여 뽑았다. 아주 퀄 좋게 뽑아준다.
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 파일을 올린다!
번외: APK 테스트
flutter build apk --split-per-abi
명령어를 통해 apk를 만들고 기기를 USB에 연결
flutter install
명령어를 통해 APK를 테스트하는 간단한 방법이 있긴 하지만, App bundle로 하는 테스트가 아니기 때문에 추천하지는 않는다.
댓글
댓글 쓰기