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,bec, 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 assembleReleaseInspecionando 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.apksRemovendo 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:
versionCodeaumentado eversionNameatualizado.isMinifyEnabledeisShrinkResourcesativados para a versão de lançamento.- Regras de preservação adicionadas para todas as bibliotecas baseadas em reflexão.
targetSdkatende 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
releaseativa o R8 por meio deisMinifyEnabledeisShrinkResourcespara reduzir, ofuscar e otimizar. - As regras de preservação protegem o código baseado em reflexão contra remoção.
- Sempre aumente o
versionCodee atualize oversionName. - Compile com
./gradlew bundleReleasee 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
- Preparando uma compilação para lançamento
- Assinatura do aplicativo
- O Play Console e a página do aplicativo
- Lançamentos graduais e atualizações