[Flutter] Android 배포하기 (Play Console)

Tyger·2023년 12월 25일
2

Flutter Packages

목록 보기
2/3

Android 배포하기 (Play Console)

이번 글에서는 Flutter로 개발된 앱의 최초 플레이 스토어 배포 방법에 대해서 살펴보도록 하겠다.

해당 내용은 앱을 스토어에 최초 배포할 때에만 필요한 내용이고, 배포되는 앱의 특성에 따라 작성하는 내용이 다르게 적용되다 보니 전체적인 부분에 대해서만 알아보자.

먼저, Google 플레이 스토어에 앱을 배포하기 위해서는 당연히 구글 개발자 계정이 필요하다. 구글 개발자 계정은 한 번만 구매해도 평생 사용이 가능하고 여러 앱을 배포해도 문제는 없다. 다만, 정책을 위반한 경우에는 계정이 정지되니 이 점 꼭 참고하시기 바란다.

Play Console

플레이 콘솔에 접속하여 로그인을 진행해 보자. 저는 현재 해당 계정으로 앱 2개가 배포된 상태이기에 아래와 같은 화면이 노출되고 있다.

우측 상단에 앱만들기 버튼을 눌러 본격적으로 앱을 생성해 주도록 하자.

앱 만들기

앱 만들기에서 아래 정보를 입력해야 하는데, 앞으로 작성되는 내용은 언제라도 수정이 가능한 내용이기에 잘 못 작성하거나 확실하지 않다면, 아무렇게나 쓰고 배포 전 수정해주면 된다.

앱 이름, 기본 언어를 설정하고 해당 앱이 게임인지에 대해서 체크하면 된다. 여기서 중요한 부분이 하나 있는데, 배포할 앱이 무료인지 유료인지를 선택하는 영역이다. 지금은 아무거나 선택해도 되지만 배포 전에는 꼭 하나를 선택해야 하며, 한 번 선택된 것은 절대 변경할 수 없다.

예를들어, 본인의 앱이 유료 앱인데 무료로 배포한 경우 절대 유료 앱이 될 수 없다. 다시 배포해야 된다.

하단에 보면 개발자 프로그램 정책과 미국 수출법 동의 관련한 내용을 체크해 주도록 하자.

자 이제 앱이 생성되었다. 이제 생성된 앱을 배포하기 위해 세부 설정을 진행해 주자. 여기서 설정되는 내용도 당연히 배포 전까지는 수정할 수 있고, 일부 내용에 대해서는 배포 후에도 설정 변경할 수 있다.

앱 설정

개인정보처리방침 설정에 본인의 서비스의 개인정보 관련 방침을 작성한 웹페이지 URL을 등록해주면 된다.

앱 엑세스 권한 관련 설정을 진행해 주자. 심사를 위해 해당 앱의 엑세스권한을 구글측에 제공하라는 부분이기에 앱 전체 중 일부라도 사용자 접근을 제한하고 있다면 제한됨을 체크하여야 한다. 그렇지 않다면 심사 중 리젝 가능성이 있습니다.

광고 여부에 대해서 체크해주자.

콘텐츠 등급 부분이다. 설문지 시작을 클릭하여 설문을 완료하고 나면 등급이 부여된다.

개발자 이메일 주소를 등록하고 카테고리를 선택한 다음 설문을 시작하자.

설문이 끝나고 나면, 아래와 같이 각 스토어 마다의 등급이 부여된 결과를 볼 수 있다. 해당 설문이 잘 못 되었거나 다시 하고 싶은 경우 재설문 시작을 클릭하여 설문을 다시 진행할 수 있다.

지금까지 12개 항목 중 4개를 끝냈다. 이어서 나머지 8개 항목도 진행해 주자. 8개 항목을 전부 캡쳐할 수 없어서 간단한 내용들은 설명하지 않았습니다.

타겟층 및 컨텐츠에서 앱의 대상 연령대를 설정할 수 있는데, 위에서 진행한 컨텐츠 설명에 전연령 등급을 부여 받았기에 저는 전체 연령을 모두 선택하였다.

스토어 설정에서는 카테고리를 설정하고 태그를 등록할 수 있다. 카테고리와 태그는 해당 서비스의 검색 및 노출에 큰 영향을 끼칠 수 있으니 신중하게 선택하여야 한다.

이제 마지막 항목인 기본 스토어 등록정보를 작성해주자.

먼저 앱 이름, 간단한 설명, 자세한 설명을 작성해 주도록 하자.

다음으로 앱 아이콘과 그래픽 이미지를 등록해주자. 생성된 아이콘이나 이미지가 없다면 아래 사이트 접속해서 무료로 생성할 수 있다.

App Icon 만들기
그래픽 이미지 만들기

마지막으로 스크린샷을 필수로 등록해야 하는데, 이 부분은 태블릿 앱이면 태블릿으로 모바일이면 모바일로 등록을 진행해주면 된다.

이제 저장을 눌러주고, 좌측에 대시보드 탭을 눌러보면 앱 설정 항목이 없어진 것을 확인할 수 있다.

앱 설정에서 등록한 정보를 수정하고 싶을 때는 좌측 하단의 앱 설정에서 수정할 수 있다.

국가/지역 선택

대시보드에서 스크롤을 아래로 이동해 보면 버전 생성 및 개시 관련 설정이 있다.

여기서 먼저 국가 및 지역 선택을 진행하도록 하자.

서비스의 사용 국가를 설정하는 것인데, 국가는 저와 같이 177개국 전체를 설택할 수도 있고, 1개국만 선택할 수도 있다.

모든 국가에 배포되면 좋겠지만, 그렇게 하기 위해서는 각 국가의 정책별 대응이 전부 가능하여야 하기에 운영이 가능한 국가 범위에서 선택 하도록 하자. 국내만 타겟하는 경우에는 대한민국만 선택하면 된다.

새 버전 만들기

이제 앱 배포를 위한 AAB 빌드 파일을 업로드하여 배포를 진행하도록 해보자.

지금까지 배포된 버전이 없으면 아래와 같이 보여지는데, 새 버전 만들기를 클릭해 주자.

Google Play 버전에 서명하지 않은 경우 서명 키 선택을 진행해주면 된다. 자체 키를 사용하기도 하지만 일반적으로는 Google에서 제공해주는 키를 사용한다.

해당 키를 발급 받게되면, 추가적으로 해야하는 작업이 있다. 먼저 설정 > 앱 서명 탭으로 이동해보자.

SHA-1 인증서 지문이 있는데, 해당 SHA-1 키가 배포용 앱의 SHA-1 키가 된다. 즉, 간편 로그인이나 써드파티 제공사에서 안드로이드용 SHA-1 키를 등록하게 되어있는데, 해당 키를 제공하여야 배포된 앱에서도 써드파티가 작동한다는 말이다.

예를들어 카카오 로그인을 사용한다면 카카오 개발자 센터에 SHA-1 키를 등록하였을 것이다. 여기서 등록한 키는 디버그 키 또는 릴리즈 키였을 것이다.

개발자 PC에서 빌드한 앱은 디버그 또는 릴리즈 모드에 따라 해당 키로 로그인이 가능하지만 스토어에 배포된 앱은 앱 서명에 사용한 키를 사용하기에 새롭게 발급 받은 SHA-1 키도 추갛해 주어야 한다.

디지털 서명

이제 Play Console 초기 배포시 설정은 거의 끝이 났고, 이제 각자의 Android 프로젝트에서 업로드용 디지털 서명을 진행한 후 Play Console에 추출한 AAB 파일을 업로드 해보도록 하자.

업로드 디지털 서명이 없이 AAB를 업로드 하려고 해도 무한 로딩만 걸릴 뿐 업로드가 되지 않는다.

2017년 5월 이전에는 안드로이드 배포를 위한 Signing, Upload key를 모두 개발자가 직접 관리 하여야 했지만, 키 분실시 배포를 추가로 할 수 없다는 문제가 있었다. 2017년 5월 이후 부터는 Signing Key는 Google이 관리하고, 개발자는 Upload Key만 관리하여 운영을 할 수 있게 되었다.

Upload Key는 분실시 재등록을 진행하여 추가적인 배포를 지속적으로 할 수 있다. 이제 Upload Key 서명을 진행해 주도록 하자.

먼저, 저는 Flutter로 개발된 앱이며, VSCode를 사용하고 있다.

본인의 프로젝트 수준에서 터미널에 아래 명령어를 입려해 주자.

Mac
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

Windows
keytool -genkey -v -keystore c:/Users/[사용자 이름]/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

아래와 같은 절차로 키 발급을 진행하면 된다.

저장된 경로로 이동해보면 key.jks 파일이 있는데 해당 파일을 project > android > app 아래에 넣어주도록 하자.

Keystore 참조 파일을 추가로 생성해주자. key.properties 파일을 project > android 아래에 생성해주자.

storePassword={your_password}
keyPassword={your_password}
keyAlias=key
storeFile=./key.jks

key.jks
android > app

key.properties
android

android > app 수준의 build.gradle 파일에 key.properties 참조를 위한 코드를 추가해 주도록 하자.

아래 코드를 android 블럭 위에 넣어주자.

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android 블럭 안에 보면 buildTypes 라는 태그가 있는데, 해당 태그 위에 아래 코드를 추가해주자.

    signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile file(keystoreProperties['storeFile'])
           storePassword keystoreProperties['storePassword']
       }
    }

buildTypes 태그안에 debug를 release로 변경해주면 된다.

기존

release {
	signingConfig signingConfigs.debug
}

변경

release {
	signingConfig signingConfigs.release
}

이제 터미널에 appbundle 추출 명령어를 입력하면 된다.

flutter build appbundle

project > build > app > outputs > bundle > release > app-release.aab

출시

추출된 AAB 파일을 업로드 해주도록 하자. 최초 배포시에는 로딩이 길어질 수도 있으니 기다리시면 정상적으로 업로드 될 겁니다.

출시 노트를 작성해 주도록 하자. 출시 노트는 이번 버전에서 어떤 부분이 추가되고 개선 되었는지에 대한 로그성 글이라고 생각하면 된다.

다음을 눌러주고 특이 사항이 없다면 제출을 해주자. 이제 출시로 넘어갔고, 구글에서 심사 후 문제가 없으면 정상적으로 출시가 되는데, 저와 같이 검토 중이라고 변경되지 않았다면 게시 게요에 접속해서 심사를 직접 제출해 주어야 한다.

게시 개요로 이동을 클릭해 보자.

아래와 같이 나와있다면, 파란색 버튼을 클릭하여 직접 심사에 올려주면 된다.

이제 검토 중으로 변경이 되었다. 심사를 기다리면 된다.

게시 개요

게시 개요에 대한 부분이 있는데, 이 부분은 중요한 부분이기 때문에 한 번 살펴보도록 하겠다.

Play console에서 앱을 게시하는 방법은 2가지가 있다. "관리형 게시가 사용 설정됨""관리형 게시가 사용 중지됨" 이러헥 두 가지 방법으로 나뉜다.

앱을 제출하고 나면, 구글에서 심사 후 배포를 진행할 수 있는 상태로 변경이 된다. 만일 심사를 통과 후 자동으로 스토어에 출시를 하기를 원한다면 "관리형 게시가 사용 중지됨" 상태를 선택해 주면된다.

직접 배포 시점을 사용하고 싶다면 "관리형 게시가 사용 설정됨" 상태로 선택하고, 심사 통과 후 업데이트 시기를 맞춰 배포를 진행하면 된다.

심사를 요청하거나 통과된 앱은 삭제 할 수 없으며, 관리형 게시를 사용한 경우에는 해당 앱을 배포하지 않고, 새로운 앱을 다시 제출하면 된다.

심사 요청 상태에서도 심사 통과 되기전에, 새로운 앱을 출시하면 기존 앱은 삭제되고 새로운 앱을 기준으로 심사를 받게 된다.

마무리

오랜만에 스토어에 앱을 배포하면서 내용을 정리해 봤는데, 애플에 비하면 구글은 수월한 편인 것 같다.

다만 구글은 디지털 서명이나 써드파티에 배포용 SHA-1 키를 등록해주어야 하는 번거로움도 있고, UGC 정책 기준이 까다로운 편이라 리젝 위험이 높기는 하다.

조만간 App store에 앱을 배포하는 과정에 대해서도 작성하도록 하겠다.

궁금하신 사항은 댓글 남겨주세요 !

profile
Flutter Developer

0개의 댓글