0Pricing
Android Academy · Aula

Preparando uma compilação para lançamento

Pacotes de aplicativos e redução de código.

Preparando uma compilação para lançamento é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.

Da depuração à versão de lançamento

Todos os dias, você executa a compilação de depuração no Android Studio. Mas o Google Play precisa de uma compilação de lançamento: menor, mais rápida e sem a indicação de que pode ser depurada.

Uma compilação de lançamento é diferente de três maneiras principais: ela é assinada com sua chave de lançamento, tem debuggable false e geralmente é reduzida para remover código e recursos não utilizados.

Nesta lição, você preparará uma compilação de lançamento adequada e produzirá o arquivo que o Google Play espera: um Android App Bundle (.aab).

Tipos de compilação no Gradle

O Gradle define dois tipos de compilação por padrão: debug e release. Você os configura no arquivo build.gradle.kts do seu módulo.

O bloco release é onde você ativa as otimizações. Observe isMinifyEnabled e isShrinkResources abaixo — essas são as opções que tornam seu aplicativo menor.

android {
    buildTypes {
        release {
            isMinifyEnabled = true
            isShrinkResources = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

AAB versus APK

O Google Play exige um Android App Bundle (.aab), não um simples .apk.

  • Um .apk contém código e recursos para todos os dispositivos — todas as densidades de tela, todas as arquiteturas de CPU e todos os idiomas.
  • Um .aab é enviado ao Play, que gera um APK pequeno e otimizado para o dispositivo exato de cada usuário.

O resultado: os usuários baixam menos dados e seu aplicativo é instalado ocupando menos espaço. Você ainda usa APKs para testes diretos em um celular, mas publica um AAB.

O que é R8 e a redução de código?

Quando isMinifyEnabled = true, o Android Studio executa o R8. O R8 realiza três tarefas em uma única passagem:

  • Redução — remove classes e métodos que seu aplicativo nunca chama.
  • Ofuscação — renomeia classes e métodos com nomes curtos, como a, b e c, para economizar espaço e dificultar a engenharia reversa.
  • Otimização — incorpora e reescreve o código para que ele seja executado mais rapidamente.

A redução de recursos (isShrinkResources = true) também remove elementos gráficos, layouts e textos não utilizados.

Regras de preservação com ProGuard

Às vezes, o R8 remove ou renomeia código referenciado apenas por reflexão (por exemplo, pelo Gson, pelo Retrofit ou pela serialização). Você protege esse código com regras de preservação em proguard-rules.pro.

Uma regra de preservação informa ao R8: "não renomeie nem exclua estas classes".

# proguard-rules.pro

# Keep data classes used with Gson reflection
-keep class com.example.app.model.** { *; }

# Keep Retrofit interface methods
-keepattributes Signature
-keepattributes *Annotation*

# Keep Kotlin metadata used by libraries
-keep class kotlin.Metadata { *; }

Versionamento do seu aplicativo

Cada versão precisa de dois valores de versão em build.gradle.kts:

  • versionCode — um número inteiro que deve aumentar a cada envio. O Play o utiliza para saber qual compilação é mais recente.
  • versionName — uma sequência legível, como "1.4.0", exibida aos usuários.

Se você esquecer de aumentar o versionCode, o Play rejeitará o envio como duplicado.

android {
    defaultConfig {
        applicationId = "com.example.app"
        minSdk = 24
        targetSdk = 35
        versionCode = 12
        versionName = "1.4.0"
    }
}

Compilando o pacote no Android Studio

Para criar um pacote de lançamento assinado pela interface:

  • Abra Build → Generate Signed Bundle / APK.
  • Escolha Android App Bundle.
  • Selecione ou crie seu keystore e sua chave.
  • Escolha a variante de compilação release.

O Android Studio executa o R8, assina o pacote e coloca o .aab em app/release/. Esse único arquivo é o que você envia ao Play.

Compilando pela linha de comando

Para CI/CD ou scripts, compile o pacote diretamente com o Gradle. O nome da tarefa segue o padrão bundle<Variant>.

bundleRelease produz o AAB. O arquivo fica em app/build/outputs/bundle/release/.

# Build a release App Bundle (.aab)
./gradlew bundleRelease

# Output:
# app/build/outputs/bundle/release/app-release.aab

# Build a release APK instead (for direct install/testing)
./gradlew assembleRelease

Inspecionando e testando o AAB

Você não pode instalar um .aab diretamente em um celular. Para testar os APKs exatos que o Play geraria, use o bundletool do Google.

Ele cria APKs específicos para o dispositivo a partir do seu pacote e os instala em um dispositivo conectado — é o que mais se aproxima de um download real pelo Play.

# Generate APKs from the bundle for the connected device
java -jar bundletool.jar build-apks \
  --bundle=app-release.aab \
  --output=app.apks \
  --connected-device

# Install them on the device
java -jar bundletool.jar install-apks --apks=app.apks

Removendo o código de depuração da versão de lançamento

Uma compilação de lançamento não deve registrar dados confidenciais nem deixar recursos exclusivos de depuração ativados. Use BuildConfig.DEBUG para escolher o comportamento. Ele é true somente em compilações de depuração.

O R8 pode até remover blocos protegidos por um false constante, reduzindo também o tamanho.

fun setupLogging() {
    if (BuildConfig.DEBUG) {
        // Verbose logging only in debug builds
        Log.d("App", "Debug logging enabled")
        Timber.plant(Timber.DebugTree())
    } else {
        // Release: send to crash reporting only, no console spam
        Timber.plant(CrashReportingTree())
    }
}

Lista de verificação para uma versão de lançamento

Antes de compilar o pacote final, confirme:

  • versionCode aumentado e versionName atualizado.
  • isMinifyEnabled e isShrinkResources ativados para a versão de lançamento.
  • Regras de preservação adicionadas para todas as bibliotecas baseadas em reflexão.
  • targetSdk atende ao requisito atual do Play.
  • Nenhum registro exclusivo de depuração ou endpoint de teste no código da versão de lançamento.
  • O AAB foi testado com o bundletool em um dispositivo real.

Quando tudo isso estiver certo, seu .aab estará pronto para ser enviado.

Verificação rápida

Você definiu isMinifyEnabled = true e seu aplicativo falha na versão de lançamento com um erro de "classe não encontrada" gerado pelo seu analisador JSON, mas funciona normalmente na depuração. Qual é a causa mais provável?

Recapitulação: preparando uma compilação de lançamento

Agora você sabe como transformar um aplicativo de depuração em uma compilação pronta para publicação:

  • O Play exige um .aab assinado e gera APKs para cada dispositivo a partir dele.
  • O tipo de compilação release ativa o R8 por meio de isMinifyEnabled e isShrinkResources para reduzir, ofuscar e otimizar.
  • As regras de preservação protegem o código baseado em reflexão contra remoção.
  • Sempre aumente o versionCode e atualize o versionName.
  • Compile com ./gradlew bundleRelease e teste o resultado com o bundletool.

A seguir: como funciona a assinatura que torna essa compilação confiável.

Perguntas Frequentes

A aula “Preparando uma compilação para lançamento” é grátis?

Sim — o texto completo de “Preparando uma compilação para lançamento” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.

O que vou aprender em “Preparando uma compilação para lançamento”?

Pacotes de aplicativos e redução de código. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Android Academy?

Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Preparando uma compilação para lançamento”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Android Academy?

Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Preparando uma compilação para lançamento
  2. Assinatura do aplicativo
  3. O Play Console e a página do aplicativo
  4. Lançamentos graduais e atualizações
← Voltar para Android Academy