Flutter 개발의 마지막 단계! 구글 플레이 스토어 배포를 위한 안드로이드 앱 번들(.aab) 생성 및 서명 설정 방법을 완벽하게 정리했습니다.
1. 터미널에서 빌드하기
안드로이드 스튜디오 하단의 Terminal 탭을 열고 아래 명령어를 입력하세요.
$ flutter build appbundle
- 이 명령어를 실행하면 안드로이드 배포용 번들(.aab) 파일이 생성됩니다.
- 저장 위치:
build/app/outputs/bundle/release/app-release.aab
2. 사전 작업: 앱 이름 및 아이콘 설정
배포 전 내 앱의 정체성을 설정하는 필수 과정입니다.
- 앱 이름:
android/app/src/main/AndroidManifest.xml에서android:label수정 - 아이콘:
flutter_launcher_icons패키지를 활용하면 편리합니다. (상세 방법은 하단 5번 참고)
3. 서명(Signing) 설정: 디지털 도장 만들기
서명되지 않은 앱은 플레이 스토어 등록이 불가능합니다. 아래 순서대로 진행하세요.
1) 키스토어(Keystore) 생성
Windows (PowerShell)
keytool -genkey -v -keystore upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
Mac/Linux (Bash)
keytool -genkey -v -keystore ./upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
💡 팁: 비밀번호 입력 시 화면에 글자가 안 보이지만 잘 입력되고 있는 것이니 안심하세요! 생성된
.jks 파일은 android/app 폴더로 이동시킵니다.
2) key.properties 파일 생성
android 폴더에 key.properties 파일을 만들고 아래 내용을 입력합니다.
storePassword=설정한비밀번호
keyPassword=설정한비밀번호
keyAlias=upload
storeFile=upload-keystore.jks
keyPassword=설정한비밀번호
keyAlias=upload
storeFile=upload-keystore.jks
⚠️ 주의: 이 파일은 보안 정보를 담고 있으므로
.gitignore에 추가해 유출을 방지하세요.
3) build.gradle.kts 수정
android/app/build.gradle.kts 파일을 열어 서명 설정을 연결합니다.
val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
android {
signingConfigs {
create("release") {
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
storeFile = file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["storePassword"] as String
}
}
buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("release")
}
}
}
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
android {
signingConfigs {
create("release") {
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
storeFile = file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["storePassword"] as String
}
}
buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("release")
}
}
}
4. 최종 빌드 및 플레이 콘솔 업로드
모든 준비가 끝났습니다. 다시 빌드 명령어를 실행하고 생성된 파일을 업로드하세요.
$ flutter build appbundle
5. 보너스: flutter_launcher_icons 사용법
pubspec.yaml에 설정값을 추가하고 아래 명령어를 입력하면 아이콘이 자동 생성됩니다.
$ flutter pub get
$ flutter pub run flutter_launcher_icons
$ flutter pub run flutter_launcher_icons
이미지 파일은 1024x1024 크기를 권장하며, 배경색 설정 등 다양한 옵션을 활용해 보세요.

