Gradle, build variant-lər, signing və release
Gradle — build sistemi: asılılıqlar, compile, R8, imzalama, paketləmə. Bilməli olduğun anlayışlar:
- Build type — debug/release: optimallaşdırma, imza, debuggable fərqləri
- Product flavor — eyni kodun variantları:
dev/staging/prod(fərqli API URL-ləri), bəzənretail/corporate. Build type × flavor = build variant (prodRelease) - buildConfigField / resValue — variant üzrə konfiqurasiya (API URL); sirlər buraya qoyulmur — BuildConfig APK-dan oxunur
- Version catalog (libs.versions.toml) — asılılıqların mərkəzi idarəsi
İmzalama: APK/AAB release keystore ilə imzalanır — itirsən, Play-də yeniləmə çıxara bilməzsən (Play App Signing bunu yumşaldır: Google app signing key-i saxlayır, sən upload key işlədirsən — itəndə reset mümkündür).
AAB (Android App Bundle) — Play-ə yüklənən format: Google hər cihaz üçün optimallaşdırılmış APK-lar (dil, screen density, ABI üzrə split) generasiya edir → kiçik yükləmə ölçüsü. Play-də yeni tətbiqlər üçün məcburidir.
Release axını: internal testing → closed/open testing → staged rollout (5% → 20% → 100%, vitals izlənərək) → tam release. Bank əlavəsi: hər release-də security checklist + penetration test dövrləri.
android {
flavorDimensions += "env"
productFlavors {
create("dev") {
dimension = "env"
applicationIdSuffix = ".dev" // eyni cihazda yan-yana
buildConfigField("String", "API_BASE", "\"https://api-dev.bank.example/\"")
}
create("prod") {
dimension = "env"
buildConfigField("String", "API_BASE", "\"https://api.bank.example/\"")
}
}
buildTypes {
release {
isMinifyEnabled = true
signingConfig = signingConfigs.getByName("release")
// keystore parolları CI secret-lərindən gəlir,
// heç vaxt repo-da saxlanmır
}
}
}Flavor-lar və variant konfiqurasiyası (build.gradle.kts)
CI/CD sualına hazırlıq: tipik pipeline — PR: lint + detekt + unit testlər; merge: assemble + integration testlər; release tag: AAB build (imzalanma CI secret-ləri ilə) → Play internal track-ə avtomatik yükləmə → QA təsdiqi → staged rollout. Alətlər: GitHub Actions/GitLab CI + Gradle Play Publisher/fastlane. "Rollback necə olur?" — Android-də əvvəlki versiyaya qayıtmaq yoxdur: halt rollout + hotfix irəli, buna görə staged rollout + feature flag-lər kritikdir.
🛠 Tapşırıq
Build konfiqurasiyası ilə əl işi:
dev/prodflavor-ları əlavə et: fərqliAPI_BASE,applicationIdSuffixilə hər ikisini eyni cihaza quraşdır.- Release variant üçün imzalama konfiqurasiyası qur (test keystore ilə) və AAB yığ (
bundleProdRelease). mapping.txt-i tap və nə üçün lazım olduğunu bir cümlə ilə yaz.
Bitdi sayılır: cihazda iki nüsxə yanaşı işləyirsə və AAB uğurla yığılıbsa.
📚 Mənbələr və sənədlər
- Build variant-lərin konfiqurasiyasırəsmideveloper.android.com
- Tətbiqin imzalanmasırəsmideveloper.android.com
- Android App Bundle haqqındarəsmideveloper.android.com