Build Number — vad är det, parameterns betydelse och inkrement

Författare: IT Sectr Publicerad: 2026-04-18 Lästid: 8 min

Build Number — är en unik numerisk identifierare för en mobil app-build som används för intern versionsidentifiering. Till skillnad från Version Name visas inte denna parameter för användaren, men är kritisk för appbutiker. Enligt uppgifter från Android Developers, 2025 förhindrar korrekt användning av Build Number konflikter vid publicering av uppdateringar.

Huvudpunkter

  • Build Number — numerisk identifierare för varje build, används för intern versionsredovisning.
  • I Android ställs det in med parametern versionCode i build.gradle, i iOS — CFBundleVersion i Info.plist.
  • Build Number måste öka med varje ny build — appbutiker kontrollerar detta villkor.
  • Till skillnad från Version Name visas Build Number inte för användare i Google Play och App Store.
  • Automatisk inkrement av Build Number via CI/CD eliminerar fel med dubbletter av buildnummer.

Vad är Build Number

Build Number — är en unik heltalsidentifierare som tilldelas varje build av en mobilapp. Appbutiker använder den för att avgöra versionens nyhet — ju större nummer, desto nyare build.

I Android kallas denna parameter versionCode, i iOS — CFBundleVersion. Båda parametrarna är obligatoriska för publicering och måste öka monotont med varje ny build.

Enligt uppgifter från Google Play Console Help (2025) kontrolleras versionCode vid varje APK-uppladdning: om den uppladdade builden har ett versionCode som är mindre än eller lika med den redan publicerade, avvisar Google Play filen med ett fel.

Använd Build Number för intern spårning av builds — koppla numret till commit-hashen i versionskontrollsystemet för snabb identifiering av en problematisk release.

Varför Build Number behövs

Build Number löser problemet med unik identifiering av varje byggd version av appen. Utan det är det omöjligt att avgöra vilken build som är nyare om Version Name inte har ändrats.

Appbutiker som Google Play och App Store använder Build Number för att lösa konflikter vid uppdatering. Om en användare installerar en ny version över en gammal, jämför systemet Build Number och erbjuder endast uppdatering om värdet är större.

Denna mekanik är kritisk för korrekt leverans av uppdateringar: utan ett monotont ökande Build Number kan användare fastna på en gammal version av appen.

Format för Build Number

Build Number kan vara ett enkelt sekventiellt nummer (1, 2, 3...) eller sammansatt som kodar ytterligare information. Sammansatta nummer inkluderar ofta build-datumet eller build-numret från CI/CD-systemet.

För Android är versionCode ett heltal av typen int, maximalt värde — 2100000000. För iOS är CFBundleVersion en sträng med tre punktskilda nummer, varje högst 255.

Enligt uppgifter från Apple Developer (2025) stöder CFBundleVersion upp till 3 komponenter, men App Store använder dem som ett enda ordningsnummer för att jämföra versioner.

Build Number på Android

Android ställs Build Number in med parametern versionCode i filen build.gradle. Det är ett heltal som måste vara unikt för varje version av appen som publiceras i Google Play.

Parametern deklareras i blocket android.defaultConfig och måste öka med varje ny release. Google Play tillåter inte uppladdning av APK med ett versionCode som redan har använts för en annan version av samma app.

Enligt uppgifter från Google Play Developer API (2025) är det maximala värdet för versionCode 2100000000. Det rekommenderas att börja på 1 och öka med 1 för varje ny build för att undvika att gränsen tar slut.

Använd ett sammansatt versionCode som kodar versionsnumret: Major * 1000000 + Minor * 1000 + Patch — detta förenklar mappningen till semantisk version.

Begränsningar för versionCode i Android

versionCode har strikta begränsningar: det är ett 32-bitars heltal med tecken, så det maximala värdet är 2100000000. När gränsen är nådd kan appen inte uppdateras i Google Play.

För Android App Bundle anges versionCode även i basmodulen och varje funktionsmodul kan ha sitt eget versionCode. Google Play kombinerar dem i ett enda verifieringssystem.

Denna begränsning är viktig att beakta vid val av versionsstrategi — alltför snabb tillväxt av numret kan leda till långsiktiga problem.

Build Number på iOS

iOS ställs Build Number in med nyckeln CFBundleVersion i filen Info.plist. Till skillnad från Android är denna parameter en sträng, men måste också öka med varje ny build.

Formatet för CFBundleVersion — en till tre punktseparerade nummer. Varje nummer får inte överstiga 255. App Store tolkar strängen som en sekvens av nummer för jämförelse: 1.0.1 anses nyare än 1.0.0.

Enligt uppgifter från Apple Developer Documentation (2025) kräver App Store Connect unikhet av CFBundleVersion för varje uppladdad build. Om en build med ett redan använt nummer laddas upp, kommer systemet att avvisa den.

Hantera CFBundleVersion via agvtool eller Xcode-byggskript för att garantera monoton ökning av numret vid varje build.

Integration med Xcode Build Settings

Xcode möjliggör hantering av CFBundleVersion via Build Settings-inställningarna. Fältet “Current Project Version” anger basvärdet och Build Phase-skript kan automatiskt öka det.

För CI/CD använd fastlane-plugin increment_build_number, som läser den aktuella versionen från Info.plist och ökar den med ett givet värde. Detta garanterar unikheten för varje build.

Detta tillvägagångssätt automatiserar hanteringen av Build Number fullständigt och eliminerar mänskliga fel vid förberedelse av en release.

Automatisk inkrement av Build Number

Automatisk inkrement av Build Number är en standardpraxis i moderna CI/CD-pipelines. Manuell ökning av build-numret leder till fel och konflikter vid publicering.

GitHub Actions, GitLab CI och Jenkins tillhandahåller inbyggda variabler med build-numret. Dessa variabler används i Gradle- eller Xcode-skript för automatisk ifyllning av Build Number.

Enligt uppgifter från GitLab CI Documentation (2025) garanterar variabeln CI_PIPELINE_IID ett unikt nummer för varje pipeline, vilket är idealiskt för användning som Build Number.

Konfigurera automatisk inkrement på CI/CD-nivå — detta eliminerar behovet av att manuellt ändra Build Number vid varje commit till releas-grenen.

Populära automatiseringsverktyg

GitHub Actions stöder den inbyggda variabeln run_number, som automatiskt ökar för varje pipeline-körning. Värdet kan skickas till Gradle via versionCode.

Jenkins använder variabeln BUILD_NUMBER, som är tillgänglig i alla byggstadier. För Xcode-projekt kör Jenkins agvtool med detta nummer.

Välj verktyget som är integrerat i din teknikstack för att minimera extra konfiguration.

Build Number och Version Name

Build Number och Version Name fungerar som ett par: det första — för maskiner, det andra — för människor. Build Number ger teknisk unikhet, Version Name — semantik som är förståelig för användaren.

I Android är dessa två parametrar oberoende: versionCode kan öka utan att versionName ändras (till exempel för att korrigera ett byggfel). I iOS är CFBundleVersion inte heller kopplad till CFBundleShortVersionString.

Enligt uppgifter från Stack Overflow Developer Survey (2024) använder 82% av teamen automatisk inkrement av Build Number, men endast 45% automatiserar uppdatering av Version Name — detta är en av de vanliga orsakerna till fel vid releaser.

Öka alltid Build Number vid varje build, även om Version Name inte ändras — detta garanterar korrekt funktion av uppdateringsmekanismen i appbutiker.

Bästa praxis för Build Number

Börja versionCode på 1 och öka med 1 för varje build. För iOS använd en analog metod med CFBundleVersion. Undvik sammansatta nummer om det inte finns strikt behov — ett enkelt sekventiellt nummer är lättare att spåra.

Koppla Build Number till CI/CD-systemets build-nummer — detta förenklar spårning från fel till specifik commit. Git-tagg med build-nummer och version är bästa praxis för releasekontroll.

Exempel på konfiguration av Build Number

Kodexempel visar hur man konfigurerar automatisk inkrement av Build Number på båda plattformarna.

versionCode i Gradle med CI-variabel

I Android kan versionCode ställas in via en CI/CD-miljövariabel. Om variabeln inte är inställd används standardvärdet.

groovy
android {
    defaultConfig {
        versionCode System.getenv("CI_PIPELINE_ID")?.toInteger() ?: 1
        versionName "1.2.0"
    }
}

versionCode får värdet från CI/CD-variabeln, vilket garanterar numrets unikhet för varje build i pipelinen.

Inkrement av CFBundleVersion via agvtool

I iOS används agvtool för automatisk ökning av Build Number, som är inbyggt i Xcode Command Line Tools.

bash
# Öka build-numret med 1
xcrun agvtool next-version -all

# Ställa in ett specifikt build-nummer
xcrun agvtool new-version -all "3.0.1"

Flaggan -all uppdaterar versionen i alla projektets mål, vilket garanterar synkronisering av värden mellan huvudappen och tillägg.

Fastlane för automatisering

Fastlane — ett populärt verktyg för att automatisera byggande av mobilappar. Plugin-programmet increment_build_number ökar automatiskt Build Number.

ruby
increment_build_number(
    build_number: ENV["BUILD_NUMBER"] ||
                 latest_testflight_build_number + 1
)

Fastlane integreras med alla CI/CD-system och stöder både Android- och iOS-projekt.

Vanliga frågor

Vad händer om Build Number inte ökas?

Appbutiken kommer att avvisa uppladdningen. Google Play och App Store kontrollerar om Build Number för den nya builden är större än för den tidigare publicerade versionen. Om villkoret inte uppfylls kommer uppladdningen att avvisas.

Kan Build Number återställas till 1?

Endast för ny app. Efter första publiceringen kan Build Number bara öka. Återställning till 1 leder till felet “versionCode already exists” vid försök att publicera en ny version.

Vad är maximalt Build Number i Android?

2100000000 — det maximala värdet för versionCode i Android, eftersom det är ett 32-bitars heltal med tecken. Vid rimlig ökning med 1 per build räcker gränsen för miljarder builds.

Vad är skillnaden mellan CFBundleVersion och CFBundleShortVersionString?

CFBundleVersion — internt build-nummer som måste öka med varje build. CFBundleShortVersionString — användarversionen som visas i App Store. Det första — för maskiner, det andra — för människor.

Måste Build Number ökas för testbyggen?

Ja, obligatoriskt. TestFlight kräver också att varje uppladdad build har ett unikt Build Number. Om numret inte ökas kommer TestFlight att avvisa uppladdningen.

Sammanfattning

  • Build Number — intern numerisk build-identifierare, obligatorisk för publicering i Google Play och App Store.
  • Android används versionCode (heltal), på iOS — CFBundleVersion (sträng upp till 3 komponenter).
  • Build-numret måste öka monotont — butiker avvisar builds med ej ökat Build Number.
  • Automatisk inkrement via CI/CD eliminerar fel och garanterar unikheten för varje build.
  • Build Number är oberoende av Version Name — det kan ökas utan att användarversionen ändras.
  • För Android använd CI/CD-variabler i Gradle, för iOS — agvtool eller fastlane.
  • Maximalt versionCode i Android — 2100000000, CFBundleVersion — upp till 255 för var och en av de tre komponenterna.

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å