[Flutter] 구글 플레이스토어 비공개 테스트 앱 출시 체크리스트

image (6).png

2주간 20명 대상 비공개 테스트 진행

2023년 11월 13일 이후에 만든 개인 계정을 사용하는 개발자는 앱을 테스트해야 Google Play에 앱을 배포할 수 있습니다. 개발자는 이 요구사항을 충족할 때까지 Play Console의 특정 기능(예: 프로덕션(출시 > 프로덕션), 사전 등록(출시 > 테스트 > 사전 등록)을 사용할 수 없습니다. 새로운 개인 개발자 계정의 앱 테스트 요구사항

구글 플레이 스토어에 조직이 아닌 개인 계정으로 앱을 출시하기 위해서는 반드시 비공개 테스트 과정을 거쳐야 한다. 비공개 테스트는 사전에 이메일을 등록한 사용자들만 앱을 다운 받아서 테스트해 볼 수 있다.

 

새로 만든 개인 개발자 계정이 있는 경우 최근 14일 이상 지속적으로 테스트에 참여하겠다고 선택한 상태인 20명 이상의 테스터를 대상으로 비공개 테스트를 진행해야 합니다.

심지어 20명이 모여야 1일부터 카운트가 시작되고, 테스터들은 2주간 계속해서 앱 설치를 유지해야 한다. 혹시 모르기 때문에 테스터는 20명 이상으로 넉넉히 구하는 게 좋다.

 

이 까다로운 조건 때문에 크몽에는 테스터 20명 조건을 달성해 주는 상품도 생겼다. 지인만으로 20명을 채우기 어려울 것 같다면 테스터 품앗이를 제공하는 오픈채팅방도 있다. (실질적으로는 네이버 카페에서 진행된다.)

 

따라서 앱 출시 계획이 있다면 이 비공개 테스트 과정까지 포함해서 일정을 고려해야 한다.

 

 

앱 서명 (keystore)

Android에서는 인증서를 사용해 디지털 방식으로 서명된 APK만 기기에 설치하거나 업데이트할 수 있습니다. Android App Bundle을 사용하여 출시하는 경우 업로드 키로 App Bundle에 서명한 후 Play Console에 업로드해야 합니다. 앱 서명

abb 파일을 업로드하려면 앱 서명이 필요하다.

 

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

명령어를 입력해서 upload-keystore.jks 파일을 생성한다.

 

storePassword=<password-from-previous-step>
keyPassword=<password-from-previous-step>
keyAlias=upload
storeFile=upload-keystore.jks

패스워드 두 가지를 입력해서 key.properties 파일도 생성한다.

  • android > key.properties
  • android > app > keystore.jks

파일 위치가 잘못되면 빌드 에러가 발생할 수도 있으니까 신경써서 생성한다.

 

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

...

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

buildTypes {
  release {
    signingConfig signingConfigs.release
  }
}

app > build.gradle 파일에도 코드를 추가한다.

 

 

타켓 SDK 버전 34 이상

image (5).png

현재 앱이 33의 API 수준을 타켓팅하고 있지만, 보안 및 성능에 최적화된 최신 API를 기반으로 앱을 빌드하려면 API 수준 34 이상을 타켓팅해야 합니다.

앱 서명을 추가해서 abb 파일을 업로드하는 데는 성공했지만 오류 메세지로 인해 다음 단계로 넘어갈 수 없었다.

 

2024년 8월 31일부터 다음과 같습니다. 새 앱과 앱 업데이트는 Google Play에 제출하려면 Android 14(API 수준 34)를 타겟팅해야 합니다. Google Play 앱의 대상 API 수준 요구사항

올해 9월부터 SDK 버전이 34 이상이어야 앱을 제출할 수 있다고 한다.

 

// local.properties
flutter.minSdkVersion=21
flutter.compileSdkVersion=34
flutter.targetSdkVersion=34

// app/build.gradle
def flutterCompileSdkVersion = localProperties.getProperty('flutter.compileSdkVersion')
if (flutterCompileSdkVersion == null) {
    flutterCompileSdkVersion = '34'
}

def flutterMinSdkVersion = localProperties.getProperty('flutter.minSdkVersion')
if (flutterMinSdkVersion == null) {
    flutterMinSdkVersion = '21'
}

def flutterTargetSdkVersion = localProperties.getProperty('flutter.targetSdkVersion')
if (flutterTargetSdkVersion == null) {
    flutterTargetSdkVersion = '34'
}

...

compileSdkVersion flutterCompileSdkVersion.toInteger()

...

targetSdkVersion flutterTargetSdkVersion.toInteger()
versionCode flutterVersionCode.toInteger()

local.properties파일에 코드를 추가하고, app/build.gradle 파일에는 코드 추가 및 수정을 했다.

 

 

기호 파일 생성

image.png

경고 메세지라 필수 사항은 아니지만 간단해서 기호 파일을 등록했다.

 

image (1).png

프로젝트의 build\app\intermediates\merged_native_libs\release\out\lib 디렉토리를 압축해서 zip 파일을 생성한다.

 

image (2).png

구글 플레이 콘솔 메뉴에서 App Bundle 탐색기를 들어간다. 현재 버전에서 우측 화살표를 클릭한다.

 

image (3).png

다운로드 탭에서 네이티브 디버그 기호에 압축한 zip 파일을 업로드한다.

 

 

앱 게시 신청 완료

image (4).png

드디어 비공개 테스트 앱 게시 신청을 완료했다🎉🎉
앱 게시는 처음이라 삽질한 부분이 많았기 때문에 그 과정을 간단하게 기록해봤다.

 

 

참고 문서