본문 바로가기
플러터(flutter)

플러터로 만든 안드로이드 앱 스토어에 릴리즈(Release) 하기

by 기계공학 주인장 2025. 1. 13.
반응형

플러터 공식 문서에 해당 내용이 있기 때문에 따라하면서 만들어 보겠습니다.

 

https://docs.flutter.dev/deployment/android

 

Build and release an Android app

How to prepare for and release an Android app to the Play store.

docs.flutter.dev


구글 플레이 스토어에 등록할 아이콘 만들기

 

등록할 아이콘을 생성해서 플러터 프로젝트에 등록을 해야합니다.

 

자세한 내용 및 아이콘을 만드는 방법은 이전 포스팅에 상세히 적었습니다.

 

https://android-developer.tistory.com/103

 

[플러터] flutter_launcher_icons를 사용해서 앱 아이콘 넣기(자세히 설명)

플러터에서 앱 아이콘을 넣는 방법은  기본적으로 Android와 iOS 각각 설정해주는 것입니다. 하지만, flutter_launcher_icons 패키지를 사용하면 좀 더 편리하게 앱 아이콘을 바꿀 수 있습니다.플러터에

android-developer.tistory.com

 

위 포스팅을 따라하면 앱 아이콘 등록뿐 아니라 스토어에 등록할 아이콘도 동시에 제작이 가능합니다.


플러터 프로젝트에 구글 플레이 스토어에서 사용할 디지털 서명 넣기

구글 플레이 스토어에 앱을 등록하기 위해선 앱 서명이 필요합니다.

 

https://docs.flutter.dev/deployment/android#sign-the-app

 

Build and release an Android app

How to prepare for and release an Android app to the Play store.

docs.flutter.dev

 

1. 키스토어 만들기

 

맥OS를 사용중이라면 다음과 같은 커맨드를 사용해서 쉽게 만들 수 있습니다.

 

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

 

윈도우 OS를 사용중이라면 PowerShell을 열어서 다음 커맨드를 사용하면됩니다.

 

keytool -genkey -v -keystore $env:USERPROFILE\upload-keystore.jks `
        -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 `
        -alias upload

 

참고로 위 커맨드는 반드시 플러터의 루트 디렉토리에서 실행되어야 합니다.

 

커맨드를 입력하면 비밀번호를 설정하고 각종 이름, 조직명을 설정하게 되는데

 

입력이 끝나면 upload-keystore.jks 파일이 어디에 저장되었다고 뜹니다.

 

(그대로 입력했다면 컴퓨터의 바탕화면에 저장되어 있을겁니다.)

 

따로 보관할 수 있는 곳에 저장해야합니다.


 

2. 생성된 키스토어로 플레이 스토어 업로드용 key.properties 만들기

 

생성한 upload-keystore.jks 파일을 다음 위치에 저장합니다.

 

[project]/android/

 

플러터 프로젝트의 다음과 같은 위치에 key.properties라는 파일을 새롭게 만듭니다.

 

[project]/android/key.properties

 

그러면 다음과 같은 모습이 됩니다.

 

 

(방금 프로젝트에 넣은 2개의 파일은 꼭 gitignore 처리를 하시길 바랍니다.)

 

key.properties안에 다음과 같은 내용을 넣어줍니다.

 

storePassword=<키생성시 입력한 암호>
keyPassword=<키생성시 입력한 암호>
keyAlias=upload
storeFile=../upload-keystore.jks

 

keyAlias는 처음에 커맨드로 upload-keystore.jks를 만들 때 사용한 커맨드 안에 답이 있습니다.

 

keytool -genkey -v -keystore $env:USERPROFILE\upload-keystore.jks `
        -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 `
        -alias upload

 

(커맨드를 변경하지 않았다면 그대로 keyAlias = upload로 하시면됩니다.)

 


3. Gradle에서 서명 구성하기

 

먼저 다음과 같이 [project]/android/app/build.gradle 을 수정해서 방금 생성한 

 

key.properties 파일을 읽어올 수 있도록 한다.

 

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

android {
   ...
}

 

다음과 같이 코드에 에러가 발생했다고 뜨지만 무시해도 된다.

 

 

그리고 release에 대한 앱 서명을 등록해준다.

 

똑같은 [project]/android/app/build.gradle 파일에서 android{..} 안 부분을 다음 내용으로 수정한다.

 

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

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.release
        }
    }

 

 

이제 --release 모드로 앱을 빌드해서 문제 없이 빌드되는지 확인한다.

 

문제없이 빌드된다면 앱 서명 부분은 완료된다.


플러터 프로젝트로 Release용 앱 파일 만들기

플러터 프로젝트의 루트 디렉토리에서 다음과 같은 커맨드를 입력합니다.

 

flutter build appbundle

 

혹시 main.dart 파일의 경로를 바꿨다면 다음과 같이 입력하면됩니다.

 

flutter build appbundle --target lib/entry/main.dart

 

그럼 다음과 같이 생성된 앱 파일의 경로를 보여주면서 앱 파일 생성이 완료된 것을 볼 수 있습니다.

 

 

만약 저처럼 여러 개의 flutter flavor를 지정했고, main.dart 파일의 위치도 바꿨다면 다음과 같이 커맨드를 지정하면됩니다.

 

flutter build appbundle --release --flavor <flavor이름> --target=lib/screens/main.dart

 

flavor 이름은 [project]/android/app/build.gradle 안에 지정한 flavor와 동일한 이름을 사용하면됩니다.


플러터 앱을 Play Console에 업로드하기

 

Play Console에 로그인하여 앱 전용 프로젝트를 만드는 방법과 개발자용 계정을 만드는 방법은 생략하겠습니다.

 

생성된 앱 파일을 업로드 하면 다음과 같은 화면을 볼 수 있습니다.

 

 

이 때 앱 파일만 업로드 하면 다음과 같은 경고가 생기는 것을 볼 수 있습니다.

 

이 App Bundle 아티팩트 유형은 네이티브 코드를 포함하며 아직 디버그 기호가 업로드되지 않았습니다.
비정상 종료 및 ANR 을 더 쉽게 분석하고 디버그할 수 있도록 기호 파일을 업로드하는 것이 좋습니다

 

 

 

처음 앱을 업로드하는 것이라면 확실하게 디버깅을 해야할 필요가 있기 때문에 다음과 같은 과정을 통해

 

디버그 기호를 업로드 해주는 것이 좋습니다.

 

참고로 디버그 기호는 앱을 배포할 때 마다 업로드 해줘야합니다.

 

물론 경고이기 때문에 이를 무시하고 업로드 할 수 있습니다. 

 

디버그 기호 제출용 압축 파일 만들기

 

아래 경로로 이동하여 x86_64, arm64-v8a, armeabi-v7a 해당 폴더들을 함께 압축합니다.

[플러터 프로젝트]/build/app/intermediates/merged_native_libs/release/out/lib

 

압축파일 이름은 아무거나 해도 상관없지만 저는 merged_native_libs.zip로 했습니다.

 

이후 해당 위치에서 커맨드 라인을 실행합니다.

 

그리고 다음과 같은 커맨드를 입력합니다.

 

zip -d 압축파일명.zip "__MACOSX*”

 

즉, 저 같은 경우에는 다음과 같습니다.

 

zip -d merged_native_libs.zip "__MACOSX*"

 

해당 커맨드의 의미는 다음과 같습니다.

 

merged_native_libs.zip 압축 파일 내에서 __MACOSX로 시작하는 모든 파일이나 폴더를 삭제

 

그리고 다음과 같은 과정으로 업로드 합니다.

 

App Bundle 탐색기에 들어가서 특정 앱 버전을 클릭하고

 

 

다운로드 탭에 "네이티브 디버그 기호" 부분에 업로드 합니다.

 

 

이후 앱 스토어에 배포를 하시면됩니다.


플러터로 만든 안드로이드 앱 스토어에 릴리즈(Release) 하기 정리

  1. 앱 스토어에 사용할 아이콘과 그래픽 이미지를 준비한다.
  2. 앱 아이콘을 등록한다.
  3. 키스토어를 만들어서 구글 플레이 스토어용 앱 서명을 안드로이드 앱에 등록한다.
  4. 안드로이드 앱 파일(.abb)을 생성한다.
  5. 안드로이드 앱 파일을 구글 플레이 스토어 콘솔을 통해 등록한다.
  6. (필요하다면) 네이티브 디버그 기호도 업로드 한다.

[출처]

 

https://whoyoung90.tistory.com/90

 

반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


댓글