Arquivo .env no desenvolvimento mobile: o que é, para que serve e princípio de funcionamento

Autor: IT Sectr Publicado: 2026-05-31 Tempo de leitura: 9 min

O arquivo .env armazena variáveis de ambiente em um formato simples chave-valor e separa a configuração do código fonte da aplicação. De acordo com The Twelve-Factor App (2011), a configuração deve ser estritamente separada do código, e os arquivos .env tornaram-se o padrão dessa abordagem. .env File permite injetar diferentes valores de chaves de API, URLs de servidor e flags de compilação sem recompilar o projeto.

Pontos principais

  • .env File — um arquivo de texto com variáveis de ambiente no formato KEY=VALUE, localizado na raiz do projeto.
  • Twelve-Factor App recomenda armazenar a configuração em variáveis de ambiente, não no código.
  • Segurança — .env nunca deve ir para o Git; o arquivo é adicionado ao .gitignore.
  • Bibliotecas carregadoras — no Android usa-se gradle-dotenv, no iOS — Config.xcconfig, no Flutter — flutter_dotenv.
  • Ambiente de execução — os valores do .env são substituídos na etapa de compilação, não durante a execução da aplicação.

O que é .env File e para que serve

.env File é um arquivo de configuração que armazena variáveis de ambiente em um formato de texto simples KEY=VALUE. Cada linha contém uma variável: o nome da chave e seu valor, separados por um sinal de igual.

Os arquivos .env resolvem um problema fundamental do desenvolvimento moderno: diferentes ambientes (local, teste, produção) exigem configurações completamente diferentes. A URL do servidor API em uma máquina local é http://localhost:8080, em um servidor de produção é https://api.production.com. Se esses valores estiverem codificados diretamente no código da aplicação, cada compilação para um ambiente diferente requer alteração do código fonte.

A prática de armazenar a configuração fora do código principal da aplicação foi padronizada no manifesto The Twelve-Factor App (2011), que identificou as variáveis de ambiente como a única maneira correta de configurar uma aplicação. De acordo com a pesquisa JetBrains Developer Ecosystem (2024), mais de 67% dos desenvolvedores mobile usam arquivos .env em seus projetos.

Para o desenvolvimento mobile, o .env oferece uma vantagem adicional: os valores são substituídos na etapa de compilação via Gradle (Android) ou xcconfig (iOS), permitindo criar compilações separadas para desenvolvimento, staging e produção sem alterar o código fonte.

O .env é especialmente útil ao trabalhar em equipe: cada desenvolvedor cria seu próprio .env local com configurações para seu ambiente (caminho do BD local, chaves de API de depuração), enquanto as configurações comuns são fixadas no .env.example no repositório. Isso elimina a situação em que após um git pull a compilação de um desenvolvedor quebra devido à falta de uma variável de ambiente que ele desconhecia. Um novo membro da equipe simplesmente copia .env.example para .env e preenche seus valores locais.

Sintaxe e estrutura do .env File

O formato .env é extremamente simples: cada linha é uma variável na forma KEY=VALUE. Espaços ao redor do sinal de igual geralmente são ignorados, mas na maioria das bibliotecas são considerados parte do valor, por isso é melhor evitá-los.

Regras básicas de escrita

Comentários começam com o caractere # — toda a linha após ele é ignorada. Linhas vazias também são ignoradas. Se o valor contiver espaços, ele é colocado entre aspas duplas ou simples.

env
# Configurações básicas do ambiente
APP_NAME=MyMobileApp
APP_ENV=development

# Configuração de API
API_BASE_URL=http://localhost:3000/api
API_TIMEOUT=30000

# Dados sensíveis
DB_PASSWORD=secret_password_123
JWT_SECRET=your_jwt_secret_key

Tipos de valores e escape

Todas as variáveis no .env são strings, mas as bibliotecas carregadoras podem convertê-las para o tipo necessário. Para escapar caracteres especiais, usam-se barras invertidas e aspas. Se um valor contiver o caractere # como parte do texto, ele deve ser escapado como \#.

  • Strings — sem aspas ou entre aspas: KEY=value ou KEY="value with spaces"
  • Números — escritos sem aspas: PORT=8080
  • Valores booleanos — strings true/false: DEBUG=true
  • Multilinha — barra invertida no final da linha: KEY=line1\
    line2
  • Substituição — em alguns analisadores: DB_URL=${DB_HOST}:${DB_PORT}

Ao carregar .env, as bibliotecas podem realizar interpolação de variáveis — substituir os valores de algumas chaves dentro de outras. Por exemplo, a variável DATABASE_URL=postgres://${DB_USER}:${DB_PASS}@localhost/db expandirá DB_USER e DB_PASS do mesmo arquivo.

Integração do .env File em projetos mobile

A forma de conectar o .env depende da plataforma. Android usa plugins do Gradle, iOS — arquivos de configuração xcconfig, e soluções multiplataforma como Flutter — bibliotecas especializadas.

Android e Gradle: configuração do BuildConfig

No Android, o .env é carregado através do plugin gradle-dotenv. O plugin lê o .env da raiz do projeto e adiciona os valores ao BuildConfig, após o que ficam disponíveis no código Kotlin ou Java através de campos gerados.

kotlin
// build.gradle.kts (app level)
plugins {
    id("co.uzzu.dotenv") version "4.0.0"
}

android {
    buildFeatures {
        buildConfig = true
    }
}

kotlin {
    // Acesso no código: BuildConfig.API_BASE_URL
    buildConfigField("String", "API_BASE_URL",
        "\"" + dotenv.get("API_BASE_URL") + "\"")
}

iOS e Xcode: conexão do Config

No iOS, as variáveis de ambiente geralmente são configuradas através de arquivos xcconfig. Para carregar .env em Swift, usa-se a biblioteca DotEnv ou o mecanismo embutido Info.plist com chaves personalizadas.

swift
// Carregando .env em projeto Swift
import DotEnv

struct AppConfig {
    static func load() {
        let env = DotEnv(Bundle.main)
        env.load()

        let apiURL = ProcessInfo.processInfo
            .environment["API_BASE_URL"] ??
            "https://default.api.com"
    }
}

Flutter e Dart: biblioteca flutter_dotenv

Para Flutter existe o pacote flutter_dotenv, que carrega as variáveis do .env durante a inicialização da aplicação. O arquivo .env é colocado na raiz do projeto e as variáveis ficam disponíveis através da classe dotenv.

dart
// pubspec.yaml
dependencies:
  flutter_dotenv: ^5.1

// main.dart — carregando na inicialização
import 'package:flutter_dotenv/flutter_dotenv.dart';

void main() async {
  await dotenv.load(fileName: '.env');
  var apiUrl = dotenv.get('API_BASE_URL');
  runApp(MyApp(baseUrl: apiUrl));
}

As três abordagens compartilham um princípio comum: o .env é carregado na etapa de compilação ou ao iniciar a aplicação, os valores são armazenados em cache e usados no código através de constantes geradas. Isso impede que dados sensíveis cheguem ao repositório.

Para React Native, usa-se o pacote react-native-config, que na etapa de compilação gera automaticamente uma classe BuildConfig para Android e constantes no Info.plist para iOS a partir de um único arquivo .env na raiz do projeto. Isso é especialmente conveniente para startups que usam Expo ou bare workflow: basta um único .env no nível raiz para que todas as plataformas recebam as mesmas variáveis de ambiente sem duplicar configurações.

Segurança e melhores práticas do .env File

Apesar de todas as vantagens, o .env não é uma solução completa para armazenar segredos em ambiente de produção. Ele fornece um nível básico de proteção, mas se usado incorretamente, pode levar ao vazamento de dados confidenciais.

Proteção via .gitignore

A regra mais importante — o .env nunca deve ir para o sistema de controle de versão do repositório. O arquivo é adicionado ao .gitignore imediatamente após a criação, e apenas o arquivo de amostra .env.example com valores vazios ou fictícios é commitado no repositório.

env
# .env.example — commitado no repositório
APP_NAME=
APP_ENV=development
API_BASE_URL=http://localhost:3000
API_TIMEOUT=30000
# DB_PASSWORD — não especificar nem no exemplo!
# JWT_SECRET — não especificar nem no exemplo!
env
# .gitignore
# Arquivos Dotenv
.env
.env*.local

Alternativas para ambiente de produção

Para projetos em produção, recomenda-se usar soluções profissionais de gerenciamento de segredos. .env em produção só é aceitável se o arquivo estiver localizado fora do document-root do servidor e tiver permissões de acesso rigorosas.

  • AWS Secrets Manager — armazenamento em nuvem de segredos com rotação de chaves e auditoria de acesso
  • Google Secret Manager — serviço do Google Cloud para armazenar chaves de API e senhas
  • HashiCorp Vault — ferramenta com segredos dinâmicos e criptografia do lado do servidor
  • Firebase Remote Config — configuração em nuvem com testes A/B para aplicações mobile
  • GitLab CI/CD Variables — armazenamento embutido de segredos para pipelines de compilação

De acordo com o Snyk State of Open Source Security (2024), o vazamento de arquivos .env através de repositórios foi a causa de mais de 12% de todos os incidentes de divulgação de chaves de API entre as empresas pesquisadas. O uso de um gerenciador de segredos dedicado reduz esse risco a zero.

Proteção adicional é alcançada implementando hooks de pre-commit usando ferramentas como husky e lint-staged, que verificam se o desenvolvedor adicionou acidentalmente .env a um commit. Ferramentas como git-secrets (AWS) e talisman escaneiam cada commit em busca de padrões de chaves de API, tokens e senhas, bloqueando o commit se detectados. Para pipelines de CI, recomenda-se adicionar detect-secrets — um scanner automático que não permitirá que um arquivo .env entre no repositório mesmo se o desenvolvedor cometer um erro.

Perguntas frequentes

É necessário commitar .env no Git?

Não, .env não deve ser commitado no Git. O arquivo contém dados sensíveis e deve ser adicionado ao .gitignore. Em vez disso, coloca-se no repositório o .env.example com um modelo de todas as variáveis necessárias.

Qual a diferença entre .env e .env.example?

.env é o arquivo real com valores de produção que nunca é commitado. O arquivo .env.example contém as mesmas chaves, mas com valores vazios ou falsos — ele é commitado no repositório como modelo para novos desenvolvedores.

Pode-se usar .env em produção?

Sim, mas não é recomendado sem proteção adicional. Se .env for usado em um servidor de produção, o arquivo deve estar localizado fora do document-root do servidor web com permissões de acesso 600 (apenas proprietário). Para projetos críticos, gerenciadores de segredos são preferíveis.

Como carregar .env em um projeto Android?

Através do plugin gradle-dotenv (co.uzzu.dotenv). O plugin lê .env da raiz do projeto e exporta os valores para o BuildConfig. As variáveis ficam disponíveis no código como BuildConfig.VARIABLE_NAME na etapa de compilação.

O .env suporta interpolação de variáveis?

Sim, muitos analisadores suportam interpolação no formato ${VAR_NAME}. Por exemplo, URL=${HOST}:${PORT} substituirá os valores de HOST e PORT do mesmo arquivo. No entanto, essa capacidade depende da biblioteca carregadora específica.

Resumo

  • .env File — um formato de texto simples para armazenar variáveis de ambiente, separando a configuração do código da aplicação.
  • Twelve-Factor App fundamentou o armazenamento de configuração em variáveis de ambiente como padrão do desenvolvimento moderno de aplicações.
  • Integração em projetos mobile é feita através do plugin gradle-dotenv (Android), xcconfig (iOS) ou flutter_dotenv (Flutter).
  • Segurança é garantida adicionando .env ao .gitignore e usando .env.example no repositório.
  • Produção requer soluções profissionais — AWS Secrets Manager, Google Secret Manager ou HashiCorp Vault.
  • Substituição de valores ocorre na etapa de compilação via BuildConfig no Android ou Info.plist no iOS, sem alterar o código fonte.
  • Risco de vazamento — 12% dos incidentes com chaves de API estão relacionados ao commit de .env em repositórios (Snyk, 2024), portanto a verificação automática em CI é obrigatória.

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