Build Config i mobilappar — vad är det, konfigurering och funktionsprincip

Författare: IT Sectr Publicerad: 2026-06-01 Lästid: 9 min

Build Config omfattar byggparametrar: byggtyper, kompileringsflaggor, signeringsnycklar och SDK-versioner som avgör hur appen byggs för olika miljöer. Enligt Android Developers Guide (2026) stöder byggsystemet Gradle Product Flavors och Build Types för flexibel konfigurering. Build Config automatiserar växlingen mellan debug och release utan manuell kodändring.

Viktigaste punkterna

  • Build Config — ett system av byggparametrar som avgör hur, med vilka flaggor och för vilken plattform appen byggs.
  • Gradle i Android stöder Build Types (debug, release) och Product Flavors (demo, full version) med oberoende konfigurationer.
  • Xcode använder Build Configurations (Debug, Release) och Build Settings för att ställa in kompileringsflaggor och signering.
  • BuildConfig.java — en genererad klass i Android som innehåller fält med värdena för den aktuella byggkonfigurationen.
  • Automatisering av Build Config integreras med CI/CD-pipelines (GitLab CI, GitHub Actions) för att bygga olika flavors.

Vad är Build Config i mobilutveckling

Build Config — är den samling inställningar som avgör processen för kompilering, byggande och paketering av mobilappen. Byggkonfigurationen omfattar val av målplattform, lägsta SDK-version, optimeringsflaggor, signeringsnycklar och miljövariabler.

Moderna mobilprojekt har sällan en enda byggkonfiguration. Vanligtvis är de flera: debug (för utveckling med felsökning), release (för produktion med optimering), staging (för testning med produktionsdata) och olika flavors (demo, full, företagsversion).

Enligt undersökningen Gradle Build Tool Survey (2025) använder ett genomsnittligt Android-projekt 3.2 olika byggkonfigurationer och ett iOS-projekt — 2.8. Varje konfiguration kan ha egna kompileringsflaggor, signeringscertifikat och server-URL:er.

Huvuduppgiften för Build Config är att automatisera växlingen mellan dessa konfigurationer. I stället för att manuellt ändra serverns URL eller felsökningsflaggan väljer utvecklaren önskad Build Variant i IDE, och byggsystemet sätter in motsvarande parametrar.

Korrekt konfigurering av Build Config påverkar appens säkerhet kritiskt: i debug-bygget är detaljerade loggar, databasinspektor och felsökningsslutpunkter aktiverade, som måste uteslutas fysiskt från release-binärfilen. Gradle löser detta genom Build Types: i debug kan flaggan debuggable true ställas in, i release — minifyEnabled true med ProGuard. iOS uppnår samma resultat genom Swift Active Compilation Conditions, där koden inuti #if DEBUG inte kompileras i release-konfigurationen.

Build Config i Android: Gradle och BuildConfig

Android använder byggsystemet Gradle med två nyckelbegrepp: Build Types och Product Flavors. Deras kombination skapar Build Variants — varje variant har en egen fullständig byggkonfiguration.

Build Types: debug och release

Build Type — är konfigurationen som avgör hur appen byggs. Som standard skapar Gradle två typer: debug (med felsökning, utan obfuskering) och release (med ProGuard/R8, signerad för publicering). Utvecklaren kan lägga till egna typer: staging, benchmark, qa.

kotlin
// build.gradle.kts
android {
    buildTypes {
        debug {
            isDebuggable = true
            buildConfigField("String", "API_URL", "\"http://dev.api.com\"")
        }
        release {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
            buildConfigField("String", "API_URL", "\"https://prod.api.com\"")
        }
    }
}

Product Flavors: appens versioner

Product Flavors gör det möjligt att skapa olika versioner av en app från en enda kodbas. Till exempel: gratisversion med reklam, betalversion utan reklam och företagsversion med ytterligare funktioner. Varje flavor kan ha ett eget applicationId, egna resurser och SDK-beroenden.

kotlin
android {
    productFlavors {
        register("demo") {
            applicationId = "com.example.app.demo"
            versionNameSuffix = "-demo"
        }
        register("full") {
            applicationId = "com.example.app"
            versionNameSuffix = ""
        }
    }
}

Klassen BuildConfig: åtkomst från koden

För varje Build Variant genererar Gradle klassen BuildConfig med konfigurationsfält. Utvecklaren lägger till egna fält via buildConfigField, medan standardfälten (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) skapas automatiskt.

kotlin
// Använda BuildConfig i koden
class NetworkModule {
    fun createApiClient(): ApiClient {
        return if (BuildConfig.DEBUG) {
            ApiClient(
                baseUrl = BuildConfig.API_URL,
                interceptor = HttpLoggingInterceptor()
            )
        } else {
            ApiClient(baseUrl = BuildConfig.API_URL)
        }
    }
}

BuildConfig gör det också möjligt att aktivera eller inaktivera funktioner i byggfasen. Man kan till exempel lägga till fältet FEATURE_CHAT_ENABLED och aktivera chatten endast i appens fullständiga version, utan körningskontroller och villkorsoperatorer i koden.

För felsökning av nätverksförfrågningar gör BuildConfig med fältet DEBUG det möjligt att automatiskt ansluta HttpLoggingInterceptor i OkHttp endast för debug-byggen. Detta garanterar att ingen HTTP-förfrågan loggas i produktionen, även om utvecklaren av misstag glömmer att ta bort loggningen före release-bygget.

Build Config i iOS: Xcode och Build Settings

I iOS-ekosystemet hanteras Build Config genom Xcode Build Settings — en parametertabell där varje parameter kan ha olika värden för olika konfigurationer (Debug, Release, Staging).

Xcode Build Configurations

Som standard skapar Xcode två konfigurationer: Debug (för utveckling, utan optimering) och Release (för produktion, med optimering -Os). Utvecklaren kan lägga till egna konfigurationer via menyn Project > Info > Configurations.

För varje konfiguration ställs Build Settings in: kompilatorflaggor (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), signeringskod (CODE_SIGN_IDENTITY), provisioning-profiler och entitlements. Xcode sparar dessa inställningar i filen project.pbxproj.

xcconfig: externa konfigurationsfiler

För bekväm hantering av Build Settings använder iOS-utvecklare .xcconfig-filer — textfiler med parametrar i formatet KEY = VALUE. Detta är motsvarigheten till .env för Xcode: värdena kopplas till projektet och skriver över inställningarna i project.pbxproj.

env
// Debug.xcconfig
BUNDLE_ID_SUFFIX = .debug
API_BASE_URL = http://localhost:8080
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG
CODE_SIGN_IDENTITY = Apple Development

// Release.xcconfig
BUNDLE_ID_SUFFIX =
API_BASE_URL = https://api.production.com
SWIFT_ACTIVE_COMPILATION_CONDITIONS =
CODE_SIGN_IDENTITY = Apple Distribution

Info.plist: konfigurering vid körning

En del av Build Config-parametrarna hamnar i Info.plist — manifestfilen för iOS-appen. Genom Info.plist konfigureras URL-scheman, behörigheter (kamera, mikrofon), bakgrundslägen och konfigurering av inloggning via tredjepartstjänster.

Värden från xcconfig kan sättas in i Info.plist genom syntaxen $(VARIABLE_NAME). Till exempel expanderas $(API_BASE_URL) i Info.plist enligt den aktiva byggkonfigurationen. Detta centraliserar hanteringen av miljöparametrar för alla Apple-plattformar.

Build Config i CI/CD-pipelines

I moderna projekt integreras Build Config med system för kontinuerlig integrering: GitLab CI, GitHub Actions, Bitrise, CircleCI. Varje pipeline kan skriva över Build Config-parametrar genom miljövariabler i CI/CD-systemet.

Gradle Build Config i CI

För Android startar CI-pipelinen Gradle med angivande av Build Variant: ./gradlew assembleFullRelease. Signeringsparametrar överförs genom CI-variabler: STORE_PASSWORD, KEY_ALIAS. Gradle läser dem från körningsmiljön och sätter in dem i build.gradle.kts.

kotlin
// build.gradle.kts — läsning från CI-variabler
android {
    signingConfigs {
        register("release") {
            storeFile = file(System.getenv("KEYSTORE_PATH") ?: "debug.keystore")
            storePassword = System.getenv("STORE_PASSWORD") ?: ""
            keyAlias = System.getenv("KEY_ALIAS") ?: "key"
            keyPassword = System.getenv("KEY_PASSWORD") ?: ""
        }
    }
}

Xcode Build Config i CI

För iOS använder CI xcodebuild med konfigurationsflaggor: -configuration Release. Signeringscertifikat levereras genom CI-secrets och profiler — genom Apple Developer Portal API eller Fastlane match.

Verktyget Fastlane automatiserar hanteringen av Build Config: det genererar xcconfig, uppdaterar versioner i Info.plist, signerar byggda IPA-filer och laddar upp dem till App Store Connect. Fastlane gym (byggande) och match (signering) — är standarden för iOS CI-pipelines.

Enligt Bitrise Build Report (2025) minskar projekt med konfigurerad Build Config i CI tiden för manuell byggkonfigurering med 73% och minskar antalet signeringsfel med 89%. Automatiserad Build Config — är ett obligatoriskt element i en production-ready-pipeline.

En annan viktig aspekt — parametrisering av versionshantering genom Build Config. Gradle gör det möjligt att läsa versionCode och versionName från CI-variabler och dynamiskt sätta in dem i build.gradle.kts, vilket eliminerar versionsobalans mellan utvecklare. I iOS löses en liknande uppgift genom agvtool (Apple Generic Versioning Tool), som kan öka byggnumret baserat på git-taggar eller byggnumret i CI.

Vanliga frågor

Vad är skillnaden mellan Build Type och Product Flavor i Android?

Build Type (debug, release) avgör hur appen byggs: med eller utan felsökning, med eller utan optimering. Product Flavor (demo, full) avgör vilken version som byggs: olika applicationId, SDK, resurser. Deras kombination kallas Build Variant.

Hur överför man ett värde från Build Config till Android-koden?

Genom metoden buildConfigField i build.gradle.kts. Fältet läggs till i den automatiskt genererade klassen BuildConfig och blir tillgängligt i koden som BuildConfig.FIELD_NAME. För strängar måste värdet omslutas i escaped citattecken.

Hur konfigurerar man flera miljöer (development, staging, production) i iOS?

Genom .xcconfig-filer — en för varje miljö. I Project > Info > Configurations läggs konfigurationerna Debug/Staging/Release till, som var och en refererar till sin egen xcconfig. Värden sätts in i Info.plist genom syntaxen $(VAR_NAME).

Varför använda BuildConfig i stället för flaggor i koden?

BuildConfig skiljer byggkonfigurationen från appens logik. Flaggor i koden kräver manuell ändring och omkompilering när miljöer växlas. BuildConfig växlar alla parametrar automatiskt vid val av Build Variant i IDE eller CI.

Kan man ha olika beroenden för olika flavors?

Ja, Gradle gör det möjligt att ange beroenden för specifika flavors: demoImplementation och fullImplementation. Demoversionen kan ansluta ett analysbibliotek, medan fullversionen — inte. Detta minskar APK-storleken för olika flavors.

Sammanfattning

  • Build Config — ett system av byggparametrar som styr hur appen kompileras och för vilken miljö.
  • Android använder Gradle med Build Types, Product Flavors och den genererade klassen BuildConfig för åtkomst till parametrar från koden.
  • iOS använder Xcode Build Settings och .xcconfig-filer för att konfigurera kompileringsflaggor, signering och server-URL:er.
  • Build Variant — en kombination av Build Type och Product Flavor som skapar en unik byggkonfiguration med egna resurser.
  • CI/CD-integration gör det möjligt att överföra Build Config-parametrar genom miljövariabler, vilket eliminerar manuell konfigurering.
  • Fastlane och Gradle automatiserar signering, versionshantering och publicering för båda plattformarna.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också