build-release
SKILL.md
Android Release Build Skill
Google Play Store 배포를 위한 Android App Bundle(AAB) 프로덕션 빌드를 생성하는 스킬입니다.
빌드 전 체크리스트
필수 확인 사항
- Keystore 파일 준비 완료
- gradle.properties에 서명 정보 설정
- versionCode 증가 확인
- versionName 업데이트 확인
- ProGuard/R8 규칙 설정
- 디버그 코드 제거 (Log, debuggable 등)
build.gradle.kts 릴리즈 설정 확인
android {
defaultConfig {
versionCode = 10
versionName = "1.2.0"
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
signingConfig = signingConfigs.getByName("release")
}
}
}
AAB 빌드 명령어
기본 릴리즈 빌드
./gradlew bundleRelease
클린 빌드 (권장)
./gradlew clean bundleRelease
빌드 + 테스트
./gradlew clean test bundleRelease
특정 flavor 빌드
# productFlavors가 있는 경우
./gradlew bundleProductionRelease
./gradlew bundleFreeRelease
./gradlew bundlePaidRelease
빌드 출력 경로
app/build/outputs/bundle/release/app-release.aab
빌드 최적화 옵션
병렬 빌드
./gradlew bundleRelease --parallel
빌드 캐시 사용
./gradlew bundleRelease --build-cache
메모리 설정 (gradle.properties)
org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError
org.gradle.parallel=true
org.gradle.caching=true
AAB 검증
bundletool로 APK 추출 테스트
# bundletool 설치 (macOS)
brew install bundletool
# APK 세트 생성
bundletool build-apks \
--bundle=app/build/outputs/bundle/release/app-release.aab \
--output=app-release.apks \
--ks=keystore/release-key.jks \
--ks-key-alias=my-key-alias \
--ks-pass=pass:<password>
# 연결된 디바이스에 설치
bundletool install-apks --apks=app-release.apks
AAB 정보 확인
bundletool dump manifest --bundle=app-release.aab
bundletool dump resources --bundle=app-release.aab
앱 크기 분석
bundletool get-size total --bundle=app-release.aab
Play Console 업로드
Google Play Console CLI (추천)
# 설치
pip install google-play-scraper
# 또는 Gradle Play Publisher 플러그인 사용
./gradlew publishReleaseBundle
Gradle Play Publisher 설정
// build.gradle.kts
plugins {
id("com.github.triplet.play") version "3.8.4"
}
play {
serviceAccountCredentials.set(file("play-service-account.json"))
track.set("internal") // internal, alpha, beta, production
defaultToAppBundles.set(true)
}
멀티 모듈 프로젝트
전체 모듈 빌드
./gradlew :app:bundleRelease
Dynamic Feature Module 포함
./gradlew :app:bundleRelease \
:feature1:bundleRelease \
:feature2:bundleRelease
문제 해결
일반적인 빌드 오류
| 에러 | 원인 | 해결 |
|---|---|---|
| Keystore was tampered with | 잘못된 비밀번호 | 비밀번호 확인 |
| No matching signing config | 서명 설정 누락 | signingConfigs 확인 |
| OutOfMemoryError | 메모리 부족 | gradle.properties에서 Xmx 증가 |
| R8 error | ProGuard 규칙 문제 | proguard-rules.pro 수정 |
ProGuard/R8 디버깅
# 매핑 파일 생성 확인
ls app/build/outputs/mapping/release/
# 규칙 테스트
./gradlew :app:minifyReleaseWithR8 --info
리소스 축소 문제
// 특정 리소스 유지
android {
buildTypes {
release {
// res/raw/keep.xml 사용
}
}
}
<!-- res/raw/keep.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/some_layout,@drawable/some_image" />
CI/CD 빌드 스크립트
GitHub Actions 예시
- name: Build Release AAB
run: |
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > keystore.jks
./gradlew bundleRelease
env:
RELEASE_STORE_FILE: keystore.jks
RELEASE_STORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
RELEASE_KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
RELEASE_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
빌드 완료 후
- AAB 파일 확인:
app/build/outputs/bundle/release/app-release.aab - 매핑 파일 백업:
app/build/outputs/mapping/release/mapping.txt - Play Console 업로드
- 내부 테스트 트랙에서 먼저 테스트
- 단계적 출시 (Staged Rollout) 권장
사용 예시
사용자가 다음과 같이 요청하면 이 스킬을 활용합니다:
- "AAB 빌드해줘"
- "릴리즈 빌드 만들어줘"
- "프로덕션 빌드해줘"
- "Play Store용 빌드해줘"
- "번들 빌드해줘"
- "배포용 빌드 생성해줘"
Weekly Installs
3
Repository
ingpdw/pdw-andr…dev-toolFirst Seen
Feb 7, 2026
Security Audits
Installed on
cline3
gemini-cli3
github-copilot3
codex3
cursor3
opencode3