Voltar para o Blog
Quest Log

Unity Android Build Failed: Erros de Gradle, SDK e JDK

Robô mecânico verde consertando uma engrenagem quebrada ao lado de uma tela cheia de linhas de erro vermelhas

Unity Android build failed? Veja onde ler o erro real, as causas de Gradle build failed, SDK não encontrado, JDK incompatível, dependência duplicada e minSdk.

Ferramenta:Unity

Unity Android Build Failed: Erros de Gradle, SDK e JDK

Quando aparece "unity android build failed", a primeira coisa a saber é que a linha vermelha do Console quase nunca é o erro. "Gradle build failed" é o resumo; a causa real está escrita algumas linhas acima, no log completo, e cai quase sempre em seis grupos: versão de Gradle ou do plugin Android, SDK ou NDK não encontrado, JDK errado, dependência duplicada (com o EDM4U no meio), minSdk incompatível e cache corrompido. Este guia mostra onde ler o erro de verdade no Unity 6.3 LTS e qual a causa e a correção de cada um.

No fim tem um checklist para rodar antes de pedir ajuda num fórum, que resolve a maioria dos casos sozinho.

Como ler o erro de build Android

O Console mostra várias mensagens quando a build falha. A ordem de leitura:

  1. Ignore a última. "Build completed with a result of 'Failed'" e "BuildFailedException" só dizem que falhou.
  2. Ache a mensagem do Gradle. Clique na entrada com "Gradle build failed" ou "CommandInvokationFailure". O painel de baixo do Console mostra o texto completo. Role até achar * What went wrong:. A frase logo abaixo é o erro real.
  3. Leia também a primeira mensagem vermelha da lista, não só a última. Quando um erro causa outros, o primeiro costuma ser a origem.
  4. Se o texto estiver cortado, abra o log completo do editor: no menu de três pontos do Console, Open Editor Log. No Windows ele fica em %LOCALAPPDATA%\Unity\Editor\Editor.log; no macOS, em ~/Library/Logs/Unity/Editor.log. Procure por "What went wrong" com Ctrl+F.

O projeto Gradle que a Unity gera para cada build fica dentro do seu projeto, em Library/Bee/Android/Prj/IL2CPP/Gradle (ou Mono2x no lugar de IL2CPP, se você usa Mono). Quando o erro cita um arquivo build.gradle ou AndroidManifest.xml, é ali que ele está. Ler esse arquivo gerado ajuda a entender o que a Unity montou.

Se você ainda não fez a primeira build Android, comece pelo guia de como gerar APK na Unity, que cobre a instalação certa dos módulos; boa parte dos erros abaixo nasce de pular uma etapa dali.

Unity Android build failed: Gradle

O Gradle é a ferramenta de build do Android. A Unity gera um projeto Gradle e chama o Gradle para empacotar o APK ou AAB. Cada versão da Unity é testada com uma versão específica do Gradle e do Android Gradle Plugin (AGP), e a tabela oficial de compatibilidade da Unity 6.3, consultada em outubro de 2026, é:

UnityGradleAndroid Gradle Plugin
6000.3.1f1 a 6000.3.16f18.138.10.0
6000.3.17f1 a 6000.3.25f19.1.09.0.0
6000.3.26f1 em diante9.3.19.1.1

Repare que a versão muda dentro da própria 6.3, conforme o patch. Isso tem uma consequência prática: se você usa um template Gradle customizado (mainTemplate.gradle, baseProjectTemplate.gradle) criado num patch antigo, ele pode fixar uma versão de plugin que não casa com o Gradle do patch novo. Os sintomas típicos:

  • Failed to apply plugin ou Could not create plugin of type 'AppPlugin': Gradle e AGP em versões incompatíveis. Confira se algum template ou plugin de terceiros fixa a versão do AGP.
  • Minimum supported Gradle version is X: o AGP pedido é mais novo que o Gradle usado. Mesma causa.
  • Unsupported class file major version: o JDK não casa com o Gradle (veja a seção de JDK).

A correção: em Edit > Project Settings > Player > Publishing Settings > Build, veja quais templates customizados estão marcados (Custom Main Gradle Template, Custom Base Gradle Template, Custom Gradle Properties Template e outros). Se você não sabe por que um deles está marcado, provavelmente foi um plugin que ligou. Desmarque, faça uma build, e se passar, recrie o template no patch atual (desmarcar e marcar de novo gera um arquivo novo a partir do modelo da versão instalada) e reaplique só as suas alterações.

SDK e NDK não encontrados

Mensagens como "Android SDK not found", "Unable to locate Android NDK" ou "SDK Platform Tools version is older" apontam para o mesmo lugar: Edit > Preferences > External Tools (no macOS, Unity > Settings > External Tools), seção Android.

  • Se as caixas de usar o SDK, o NDK e o JDK instalados com a Unity estão desmarcadas, a Unity procura no caminho que você digitou. Marque as caixas e teste.
  • Se marcar mostra um aviso de que não estão instalados, faltou o submódulo Android SDK & NDK Tools no Unity Hub. Volte ao Hub, Installs, Add modules na sua versão.
  • Se você precisa de um SDK externo (por exemplo, por causa do Android Studio), confira se a pasta tem as plataformas e as build-tools que o erro cita, pelo SDK Manager do Android Studio.

O problema brasileiro: caminho com acento. Se o seu usuário do Windows é João ou Usuário, o caminho da pasta de cache do Gradle e de arquivos temporários contém caracteres fora do ASCII, e várias ferramentas do Android não lidam bem com isso. O mesmo vale para projetos em pastas como Área de Trabalho ou com espaços e acentos no nome. Os erros variam e quase nunca falam de acento. Teste mover o projeto para um caminho curto e simples, como C:\Projetos\MeuJogo. Se o problema estiver no perfil do usuário, a variável de ambiente GRADLE_USER_HOME apontando para uma pasta sem acento (como C:\gradle) costuma resolver.

JDK: versão e caminho

A documentação de dependências da Unity 6.3 lista o OpenJDK 17 para a série 6000. Os problemas de JDK aparecem como:

  • Unsupported class file major version seguido de um número: um JDK diferente do esperado está compilando (o número indica a versão do Java que gerou o arquivo).
  • Could not compile build file com menção a classes Java.

Duas causas comuns. A primeira é a caixa de usar o JDK instalado com a Unity desmarcada em External Tools, apontando para um Java antigo ou novo demais que você instalou para outra coisa. A segunda é uma variável de ambiente JAVA_HOME ou um Java antigo no PATH interferindo. O próprio rastreador de bugs da Unity registra casos em que um Java antigo instalado no sistema assumiu o lugar do JDK 17.

Correção: marque o JDK instalado com a Unity em External Tools, feche o editor e, se o erro continuar, confira JAVA_HOME nas variáveis de ambiente do sistema. Ele não precisa existir para a Unity funcionar; se aponta para um Java 8 ou 11, remova ou corrija.

Erro de build é o tipo de problema que faz muita gente desistir de publicar o jogo depois de meses de trabalho, justamente porque o jogo está pronto e a última etapa trava sem explicação clara. Ter visto esses erros com alguém explicando o porquê de cada um transforma uma semana de frustração em dez minutos de correção.

Curso de Unity
Quer fazer seu primeiro jogo na Unity?

No curso de Unity 6 da CursoGame.Dev você vai do zero ao primeiro jogo, com um desafio prático em cada level e suporte individual no WhatsApp quando travar.

Conhecer o curso de Unity
Suporte no WhatsAppAcesso vitalícioGarantia de 7 dias

Dependências duplicadas e EDM4U

Quando o projeto tem SDKs de anúncio, Firebase, login ou analytics, cada um traz bibliotecas Android próprias. Se dois trazem a mesma biblioteca em versões diferentes, o Gradle falha com:

  • Duplicate class com.exemplo.Classe found in modules ...
  • Program type already present
  • Manifest merger failed

Quase todos esses SDKs usam o EDM4U (External Dependency Manager for Unity, do Google), que lê os arquivos *Dependencies.xml de cada plugin e resolve as bibliotecas Android num lugar só. O fluxo de correção:

  1. Procure cópias físicas de .aar ou .jar na pasta Assets/Plugins/Android. Se o EDM4U resolve as dependências pelo Gradle e também existe uma cópia do mesmo .aar ali (de uma versão antiga do plugin), você tem a duplicata. Apague a cópia antiga.
  2. Confira se há duas instalações do EDM4U (uma pelo Package Manager e outra como pasta dentro de Assets, trazida por um SDK). Deixe só uma.
  3. Force a resolução: Assets > External Dependency Manager > Android Resolver > Force Resolve.
  4. Ative os templates que o EDM4U pede. Em Publishing Settings, versões recentes do EDM4U pedem Custom Main Gradle Template e Custom Gradle Properties Template marcados, para injetar as dependências no Gradle em vez de copiar arquivos.

Para Manifest merger failed, leia a linha seguinte: ela diz qual atributo conflita e em quais bibliotecas. Normalmente é resolvido atualizando o plugin mais antigo.

Target e Min API Level

Dois erros clássicos aparecem aqui.

uses-sdk:minSdkVersion X cannot be smaller than version Y declared in library. Uma biblioteca de algum plugin exige Android mais novo que o Minimum API Level do seu Player Settings. A correção é subir o Minimum API Level para pelo menos o valor Y citado. Isso reduz os aparelhos compatíveis, então confira se o plugin vale a troca. Lembre que a Unity 6.3 suporta Android 7.1 (API level 25) em diante.

Target API e a Google Play. O build passa, mas o envio para a loja é recusado por target API baixo. Desde 31 de agosto de 2026, a Google Play exige que apps novos e atualizações mirem no Android 16 (API level 36) ou superior, segundo a página oficial do Android Developers consultada em outubro de 2026. Em Other Settings, deixe Target API Level em Automatic (highest installed) e confira se a plataforma 36 aparece na lista; se não, atualize o editor para o patch mais recente da 6.3.

Limpar cache e Library

Quando nada no log faz sentido, ou a build quebrou sem você mudar nada, pode ser cache. Em ordem, do mais leve ao mais pesado:

  1. Feche a Unity antes de apagar qualquer coisa.
  2. Apague Library/Bee/Android. É o projeto Gradle gerado e os artefatos de build Android. A próxima build recria tudo. Rápido e seguro.
  3. Apague o cache do Gradle do usuário: a pasta .gradle/caches dentro da sua pasta de usuário (ou do GRADLE_USER_HOME, se você configurou). Resolve dependências baixadas corrompidas; a próxima build baixa de novo e demora mais.
  4. Apague a pasta Library inteira. Último recurso. A Unity reimporta todos os assets ao abrir, o que num projeto grande pode levar muito tempo. A pasta Library não deve estar no controle de versão, então não há risco de perder trabalho.

Nunca apague Assets, Packages ou ProjectSettings: ali está o seu projeto. Para quem automatiza builds num servidor, esses mesmos passos viram etapas de limpeza no pipeline, como mostra o guia de builds automatizados e CI/CD para jogos.

Checklist antes de pedir ajuda

Rode na ordem. A maioria dos erros some antes do fim da lista:

  1. Um projeto vazio novo, na mesma versão do editor, gera APK? Se não, o problema é de instalação (módulos, External Tools, JDK), não do seu projeto.
  2. Os três submódulos (Android Build Support, OpenJDK, Android SDK & NDK Tools) estão instalados no Hub para esta versão exata?
  3. Em External Tools, as caixas de usar JDK, SDK e NDK da Unity estão marcadas e sem aviso?
  4. O caminho do projeto e do usuário está livre de acentos e espaços?
  5. Algum template Gradle customizado está marcado sem você saber por quê?
  6. Existe .aar ou .jar duplicado em Assets/Plugins/Android?
  7. Rodou Force Resolve do EDM4U depois de instalar ou atualizar um SDK?
  8. O Minimum API Level atende o que as bibliotecas pedem?
  9. Apagou Library/Bee/Android com o editor fechado?
  10. Copiou a frase depois de What went wrong, e não só "Gradle build failed"?

Se precisar abrir um tópico em fórum, mande: a versão exata do editor (6000.3.x), o resultado do item 1, a lista de plugins Android, e o trecho do log a partir de "What went wrong". Com isso alguém consegue ajudar; com "deu Gradle build failed", ninguém consegue.

Próximo passo

Depois de a build passar, crie um perfil de build de teste e um de publicação na janela Build Profiles, para nunca mais alternar configurações na mão. E se você também exporta da Godot, compare a lista de erros com o guia de exportar Godot para Android: SDK, JDK e keystore causam problemas parecidos nas duas engines.

Perguntas frequentes

O que significa Gradle build failed na Unity?

Significa que a etapa final da build Android, feita pelo Gradle, falhou. A mensagem "Gradle build failed" é só o resumo; a causa real está algumas linhas acima no log, normalmente depois de "What went wrong". Pode ser versão de ferramenta, dependência duplicada, minSdk incompatível ou caminho com caracteres especiais.

Qual JDK a Unity 6.3 usa para Android?

A documentação da Unity 6.3 indica o OpenJDK 17, instalado pelo Unity Hub como submódulo do Android Build Support. Se você aponta a Unity para outro JDK em External Tools, ele precisa ser compatível; o caminho mais seguro é usar o que vem com o editor.

Como resolver Android SDK not found na Unity?

Instale o submódulo Android SDK & NDK Tools pelo Unity Hub e, em Edit > Preferences > External Tools, marque a opção de usar o SDK instalado com a Unity. Se você usa um SDK externo, confira se o caminho existe e se tem as plataformas e build-tools que a Unity pede.

Apagar a pasta Library resolve erro de build Android?

Às vezes, quando o problema é cache corrompido do projeto Gradle gerado. Antes de apagar tudo, tente apagar só a pasta Library/Bee/Android, que é onde a Unity gera o projeto Gradle. Apagar a Library inteira força a reimportação de todos os assets, o que pode levar muito tempo em projetos grandes.