Build Config em aplicativos móveis — o que é, configuração e princípio de funcionamento

Autor: IT Sectr Publicado: 2026-06-01 Tempo de leitura: 9 min

Build Config inclui parâmetros de compilação: tipos de build, flags de compilação, chaves de assinatura e versões de SDK que determinam como uma aplicação é construída para diferentes ambientes. De acordo com Android Developers Guide (2026), o sistema de build Gradle suporta Product Flavors e Build Types para configuração flexível. Build Config automatiza a alternância entre debug e release sem alteração manual de código.

Pontos principais

  • Build Config é um sistema de parâmetros de compilação que define como, com quais flags e para qual plataforma a aplicação é construída.
  • Gradle no Android suporta Build Types (debug, release) e Product Flavors (demo, versão completa) com configurações independentes.
  • Xcode usa Build Configurations (Debug, Release) e Build Settings para configurar flags de compilação e assinatura.
  • BuildConfig.java é uma classe gerada no Android contendo campos com valores da configuração de compilação atual.
  • Automação do Build Config integra-se com pipelines CI/CD (GitLab CI, GitHub Actions) para compilar diferentes flavors.

O que é Build Config no desenvolvimento móvel

Build Config é um conjunto de configurações que definem o processo de compilação, construção e empacotamento de uma aplicação móvel. A configuração de compilação inclui a seleção da plataforma alvo, versão mínima do SDK, flags de otimização, chaves de assinatura e variáveis de ambiente.

Projetos móveis modernos raramente têm uma única configuração de compilação. Geralmente eles têm várias: debug (para desenvolvimento com depuração), release (para produção com otimização), staging (para teste com dados reais) e vários flavors (demo, completo, empresarial).

De acordo com a Gradle Build Tool Survey (2025), um projeto Android médio usa 3.2 configurações de compilação diferentes, enquanto um projeto iOS usa 2.8. Cada configuração pode ter seus próprios flags de compilação, certificados de assinatura e URLs de servidor.

A principal tarefa do Build Config é automatizar a alternância entre essas configurações. Em vez de alterar manualmente a URL do servidor ou o flag de depuração, o desenvolvedor seleciona o Build Variant desejado no IDE, e o sistema de compilação substitui os parâmetros correspondentes.

A configuração adequada do Build Config afeta criticamente a segurança da aplicação: compilações debug incluem logs detalhados, inspetor de banco de dados e endpoints de depuração que devem ser fisicamente excluídos do binário release. O Gradle resolve isso através de Build Types: debug pode ter o flag debuggable true, release — minifyEnabled true com ProGuard. O iOS alcança o mesmo através de Swift Active Compilation Conditions, onde o código dentro de #if DEBUG não é compilado na configuração release.

Build Config no Android: Gradle e BuildConfig

O Android usa o sistema de compilação Gradle com dois conceitos-chave: Build Types e Product Flavors. Sua combinação forma Build Variants — cada variante tem sua própria configuração de compilação completa.

Build Types: Debug e Release

Build Type é uma configuração que define como a aplicação é construída. Por padrão, o Gradle cria dois tipos: debug (com depuração, sem ofuscação) e release (com ProGuard/R8, assinado para publicação). O desenvolvedor pode adicionar seus próprios tipos: 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: Versões da aplicação

Product Flavors permitem criar diferentes versões da mesma aplicação a partir de uma única base de código. Por exemplo: versão gratuita com anúncios, versão paga sem anúncios e versão empresarial com funcionalidades adicionais. Cada flavor pode ter seu próprio applicationId, recursos e dependências SDK.

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

Classe BuildConfig: Acesso a partir do código

Para cada Build Variant, o Gradle gera uma classe BuildConfig com campos de configuração. O desenvolvedor adiciona campos personalizados através de buildConfigField, enquanto os campos padrão (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) são criados automaticamente.

kotlin
// Usando BuildConfig no código
class NetworkModule {
    fun createApiClient(): ApiClient {
        return if (BuildConfig.DEBUG) {
            ApiClient(
                baseUrl = BuildConfig.API_URL,
                interceptor = HttpLoggingInterceptor()
            )
        } else {
            ApiClient(baseUrl = BuildConfig.API_URL)
        }
    }
}

O BuildConfig também permite ativar ou desativar funcionalidades no momento da compilação. Por exemplo, você pode adicionar um campo FEATURE_CHAT_ENABLED e ativar o chat apenas na versão completa da aplicação, sem verificações em tempo de execução e operadores condicionais no código.

Para depurar requisições de rede, o BuildConfig com o campo DEBUG permite anexar automaticamente o HttpLoggingInterceptor no OkHttp apenas para compilações debug. Isso garante que nenhuma requisição HTTP seja registrada em produção, mesmo que o desenvolvedor acidentalmente esqueça de remover o registro antes de compilar a release.

Build Config no iOS: Xcode e Build Settings

No ecossistema iOS, o Build Config é gerenciado através de Xcode Build Settings — uma tabela de parâmetros onde cada parâmetro pode ter valores diferentes para configurações diferentes (Debug, Release, Staging).

Configurações de Build do Xcode

Por padrão, o Xcode cria duas configurações: Debug (para desenvolvimento, sem otimizações) e Release (para produção, com otimização -Os). O desenvolvedor pode adicionar suas próprias configurações através do menu Project > Info > Configurations.

Para cada configuração, são configurados Build Settings: flags do compilador (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), código de assinatura (CODE_SIGN_IDENTITY), perfis de provisionamento e entitlements. O Xcode escreve essas configurações no arquivo project.pbxproj.

xcconfig: Arquivos de configuração externos

Para gerenciamento conveniente de Build Settings, desenvolvedores iOS usam arquivos .xcconfig — arquivos de texto com parâmetros no formato KEY = VALUE. São análogos ao .env para Xcode: os valores são conectados ao projeto e sobrescrevem as configurações em 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: Configuração em tempo de execução

Parte dos parâmetros do Build Config vai para Info.plist — o arquivo de manifesto da aplicação iOS. Através do Info.plist são configurados esquemas de URL, permissões (câmera, microfone), modos em segundo plano e configuração de login com serviços terceiros.

Valores do xcconfig podem ser substituídos no Info.plist usando a sintaxe $(VARIABLE_NAME). Por exemplo, $(API_BASE_URL) no Info.plist será expandido de acordo com a configuração de compilação ativa. Isso centraliza o gerenciamento de parâmetros de ambiente para todas as plataformas Apple.

Build Config em pipelines CI/CD

Em projetos modernos, o Build Config integra-se com sistemas de integração contínua: GitLab CI, GitHub Actions, Bitrise, CircleCI. Cada pipeline pode sobrescrever parâmetros do Build Config através de variáveis de ambiente do sistema CI/CD.

Gradle Build Config em CI

Para Android, o pipeline CI executa o Gradle com o Build Variant especificado: ./gradlew assembleFullRelease. Parâmetros de assinatura são passados através de variáveis CI: STORE_PASSWORD, KEY_ALIAS. O Gradle os lê do ambiente de execução e os substitui em build.gradle.kts.

kotlin
// build.gradle.kts — leitura de variáveis CI
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 em CI

Para iOS, CI usa xcodebuild com flags de configuração: -configuration Release. Certificados de assinatura são entregues através de CI secrets, e perfis através de Apple Developer Portal API ou Fastlane match.

A ferramenta Fastlane automatiza o gerenciamento do Build Config: gera xcconfig, atualiza versões no Info.plist, assina IPAs construídos e os envia para App Store Connect. Fastlane gym (compilação) e match (assinatura) são o padrão para pipelines CI iOS.

De acordo com o Bitrise Build Report (2025), projetos com Build Config configurado em CI reduzem o tempo de configuração manual de compilação em 73% e reduzem erros de assinatura em 89%. Build Config automatizado é um elemento obrigatório de um pipeline pronto para produção.

Outro aspecto importante é a parametrização de versionamento através do Build Config. O Gradle permite ler versionCode e versionName de variáveis CI e substituí-los em build.gradle.kts dinamicamente, eliminando a dessincronização de versões entre desenvolvedores. No iOS, uma tarefa similar é resolvida através do agvtool (Apple Generic Versioning Tool), que pode incrementar o número de compilação com base em tags git ou no número de build no CI.

Perguntas frequentes

Qual a diferença entre Build Type e Product Flavor no Android?

Build Type (debug, release) define como a aplicação é construída: com ou sem depuração, com ou sem otimização. Product Flavor (demo, full) define qual versão é construída: diferente applicationId, SDK, recursos. Sua combinação é chamada de Build Variant.

Como passar um valor do Build Config para o código Android?

Através do método buildConfigField em build.gradle.kts. O campo é adicionado à classe BuildConfig gerada automaticamente e fica disponível no código como BuildConfig.NOME_DO_CAMPO. Para strings, o valor deve ser envolvido em aspas escapadas.

Como configurar múltiplos ambientes (development, staging, production) no iOS?

Através de arquivos .xcconfig — um para cada ambiente. Em Project > Info > Configurations são adicionadas configurações Debug/Staging/Release, cada uma referenciando seu próprio xcconfig. Os valores são substituídos no Info.plist usando a sintaxe $(VAR_NAME).

Por que usar BuildConfig em vez de flags no código?

BuildConfig separa a configuração de compilação da lógica da aplicação. Flags no código exigem alterações manuais e recompilação ao mudar de ambiente. BuildConfig muda todos os parâmetros automaticamente ao selecionar um Build Variant no IDE ou CI.

Flavors diferentes podem ter dependências diferentes?

Sim, o Gradle permite especificar dependências para flavors específicos: demoImplementation e fullImplementation. A versão demo pode incluir uma biblioteca de análise enquanto a completa não. Isso reduz o tamanho do APK para diferentes flavors.

Resumo

  • Build Config é um sistema de parâmetros de compilação que controla como uma aplicação é compilada e para qual ambiente.
  • Android usa Gradle com Build Types, Product Flavors e a classe BuildConfig gerada para acessar parâmetros do código.
  • iOS usa Xcode Build Settings e arquivos .xcconfig para configurar flags de compilação, assinatura e URLs de servidor.
  • Build Variant é uma combinação de Build Type e Product Flavor que cria uma configuração de compilação única com seus próprios recursos.
  • Integração CI/CD permite passar parâmetros do Build Config através de variáveis de ambiente, eliminando a configuração manual.
  • Fastlane e Gradle automatizam assinatura, versionamento e publicação para ambas as plataformas.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também