Loading...
Loading...
Android App Bundle(AAB) 프로덕션 빌드를 생성합니다. AAB 빌드, 릴리즈 빌드, 프로덕션 빌드, Play Store 배포용 빌드 요청 시 사용됩니다.
npx skill4agent add ingpdw/pdw-android-dev-tool build-releaseandroid {
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")
}
}
}./gradlew bundleRelease./gradlew clean bundleRelease./gradlew clean test bundleRelease# productFlavors가 있는 경우
./gradlew bundleProductionRelease
./gradlew bundleFreeRelease
./gradlew bundlePaidReleaseapp/build/outputs/bundle/release/app-release.aab./gradlew bundleRelease --parallel./gradlew bundleRelease --build-cacheorg.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError
org.gradle.parallel=true
org.gradle.caching=true# 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.apksbundletool dump manifest --bundle=app-release.aab
bundletool dump resources --bundle=app-release.aabbundletool get-size total --bundle=app-release.aab# 설치
pip install google-play-scraper
# 또는 Gradle Play Publisher 플러그인 사용
./gradlew publishReleaseBundle// 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./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 수정 |
# 매핑 파일 생성 확인
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" />- 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 }}app/build/outputs/bundle/release/app-release.aabapp/build/outputs/mapping/release/mapping.txt