Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- java 콘솔 출력 차이
- UI/UX
- scss
- nodejs
- 자바 출력 방식
- 배포
- Flutter
- LLM
- 엡
- lifecycle
- JQ
- 앱심사
- riverpod
- develop
- firebase
- 자바 포맷 출력
- npm
- java
- println
- java 출력
- 자바스크립트
- JS
- abap
- ListView
- printf
- react
- unity
- 단축키
- Clean Architecture
- DART
Archives
- Today
- Total
guricode
[flutter-sns-project - 10]안드로이드 릴리즈 단계 요약 본문
1) 키스토어 생성
keytool -genkeypair -v -keystore "%USERPROFILE%\key.jks" -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
질문에 답하며 비밀번호와 DN 입력. 국가코드는 KR.
2) 키 확인
keytool -list -v -keystore "%USERPROFILE%\key.jks"
alias가 key인지 확인.
3) key.properties 생성
android/app/key.properties 파일을 만들고 아래 내용 저장.
storeFile=C:\\Users\\<계정>\\key.jks
storePassword=<스토어비번>
keyAlias=key
keyPassword=<키비번>
경로는 실제 파일 위치. \\ 또는 / 사용.
4) Gradle(Kotlin DSL) 설정
android/app/build.gradle.kts에 서명 설정을 포함(이미 있다면 유지).
import java.util.Properties
import java.io.FileInputStream
val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("app/key.properties")
if (keystorePropertiesFile.exists()) {
FileInputStream(keystorePropertiesFile).use { keystoreProperties.load(it) }
}
val hasKeystore =
keystorePropertiesFile.exists() &&
(keystoreProperties["storeFile"] as String?)?.isNotBlank() == true
android {
// ... 기존 android { } 설정 ...
if (hasKeystore) {
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 { release { signingConfig = signingConfigs.getByName("release") } }
} else {
buildTypes { release { signingConfig = signingConfigs.getByName("debug") } } // 임시
}
}
루트 android/build.gradle.kts에는 플러그인 버전만 선언.
plugins {
id("com.android.application") version "8.7.3" apply false
id("org.jetbrains.kotlin.android") version "2.1.0" apply false
id("dev.flutter.flutter-gradle-plugin") apply false
id("com.google.gms.google-services") version "4.4.2" apply false
}
settings.gradle.kts에 저장소:
pluginManagement { repositories { google(); mavenCentral(); gradlePluginPortal() } }
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
repositories { google(); mavenCentral() }
}
5) 디버그 캐시 정리
flutter clean
flutter pub get
6) 릴리즈 빌드
APK:
flutter build apk --release
AAB(플레이 스토어 권장):
flutter build appbundle --release
출력:
- APK: build/app/outputs/flutter-apk/app-release.apk
- AAB: build/app/outputs/bundle/release/app-release.aab
7) 버전 관리
pubspec.yaml
version: 1.0.0+1 # +뒤가 versionCode
릴리즈마다 +1 증가.
8) 업로드
- Google Play Console → 앱 생성 → 내부 테스트 트랙에 .aab 업로드.
- 앱 서명 by Google 사용 권장.
9) 흔한 오류 대처
- path may not be null or empty: key.properties의 storeFile 비었음. 절대경로로 수정.
- Keystore was tampered with: 비밀번호 불일치. storePassword/keyPassword 재확인.
- Missing google_app_id: android/app/google-services.json 누락 또는 패키지명 불일치.
macOS/Linux용 키 생성만 참고:
keytool -genkeypair -v \
-keystore "$HOME/key.jks" -storetype JKS \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias key
'앱 > Flutter&Dart' 카테고리의 다른 글
| [flutter]Hero 애니메이션 (0) | 2025.09.09 |
|---|---|
| [flutter-sns-project - 11]flutter 앱 배포 준비,CheckboxListTile,WebView (0) | 2025.09.08 |
| [flutter-sns-project - 9] 트러블슈팅 - 구글로그인 중간에 화면 나갈시 그대로 홈 화면으로 진입되는 문제 (0) | 2025.09.04 |
| [flutter-sns-project - 8] Flutter 앱에 Sentry 연동하기: 설치부터 초기화까지 (0) | 2025.09.04 |
| [flutter-sns-project - 7] 트러블슈팅 - 이메일/패스워드 인자 순서 뒤바뀐 로그인/회원가입 실패 (0) | 2025.09.03 |