Unity 5.6+ and 2017.1.1f1+ Build Problemas (Android): AAPT failed or Android SDK paths problems (JDK Included)

Standard

Hello Guys, chegou a hora de dar algumas dicas de como sanar esse problema chato que está rolando na Unity nos últimos tempos. Deixo claro que vou postar alguns links para salvação do clan, ok? Então vamos lá:

1 – Problemas com SDK da Google na Unity 5.6+ ou 2017+ (JDK mais novo também apresenta problemas)

Recentemente tentei subir minha engine para as versões mais recentes e na hora de buildar para a Google tive diversos problemas. Visando deixar claro cada problema e solução resolvi dissecar através de links por problemas para que você fique bastante em paz na hora de compilar o bicho. No caso de SDK temos diversos problemas que vão desde a Google Tools que não está 100% compatível com a Unity, isto foi oficialmente divulgado, como no link abaixo:

https://unity3d.com/pt/unity/whats-new/unity-5.6.1#section-fixes

A solução que a Unity manda utilizar-se é uma bem conhecida (eu fiz um how to recente sobre: http://www.littleoak.com.br/2018/01/03/how-to-install-support-to-android-sdk-unity-2017-java-development-kit-jdk-dica-simples-e-funcional-jdk-1-9-problems/)

No mesmo link acima eu ensino como lidar com o JDK mais recente (1.9) que também apresenta alguma incompatibilidade misteriosa com a Google.
Outro link bom (e bem WINDOWS no assunto) trata do mesmo assunto, pode ser visto em:

http://devlog.markhlavac.com/2017/06/30/installing-android-sdk-for-unity3d-using-sdk-tools-and-cli/

Isso sana erros como

unable to list target platform

Acima matamos o problema de SDK da Google (e JDK da Oracle).

2 – Problemas na Hora de Buildar para Android

A mensagem mais comum e genérica que você pode receber na hora de buildar para android é:

Unity build problem – AAPT failed ALGUMACOISA ALGUMA COISA ALGUMA COISA

OUUUU

“There is a problem parsing the package”

 

Bom, existem vários caminhos que podem apresentar este problema (VÁRIOS MESMO), mas normalmente a solução que vou deixar vale para quase todos (senão todos) MESMO. Parse é o que mais recebe correção no tweak abaixo, no caso do AAPT pode ser o JDK cagado, nesse caso siga o passo que já falei no link -> http://www.littleoak.com.br/2018/01/03/how-to-install-support-to-android-sdk-unity-2017-java-development-kit-jdk-dica-simples-e-funcional-jdk-1-9-problems/

Na tela de Build Settings precisamos clicar em player settings que fica lá embaixo na tela:


Clicando em PLAYER SETTINGS temos de ajustar várias coisas, não vou entrar nos detalhes, mas há 1 ponto que deve ser BASTANTE observado, OTHER SETTINGS, nele temos o “range” de qual Android mínimo deve rodar o game e qual a API para qual o android foi projetado, se você colocar um range aceitável vai dar certo. Se o mínimo for alto seu Android não vai rodar, se a API for alta demais provavelmente sua Unity não vai compilar corretamente, então fiz assim:


No MINIMUM API LEVEL coloquei o 4.1 e no TARGET deixei o 7.1 (que é level 25, a que temos garantido na TOOLS e NO SDK DA GOOGLE 🙂

Abração guys, vamos que vamos.

How to Install Support to Android SDK (UNITY 2017+) & Java Development Kit (JDK) – Dica simples e funcional (JDK 1.9 problems)

Standard

Bom, serei o mais objetivo possível, ok?

Meu setup será descrito logo abaixo e o tweak para resolver também.

My Desk:

Mac OSX HighSierra 10.13.2,
8 GB ram,
Core2duo,
SSD 120gb Vertex 3 OCZ,
Unity 2017.1.1f1 personal 64bt.

Passo 1 (step 1):

Baixe o Android Studio (sim, o sdk vem nele, essa conversa de gamb de SDK não existe, precisa baixar e o bicho é grande, 700mb+, baixe aqui:

https://developer.android.com/studio/index.html

Depois de baixar e instalar (instalei default) você deve abrir ele e dizer que não tem instalação anterior, apenas um novo WORKSTATION. (nova instalação, sem importação de NADA).

Passo 2 (step 2):

No mesmo link de download do studio existe uma parte de ferramentas de CLI, você deve baixar a CLI do seu SO (pode ser windows, não tem problema, se seguir a lógica desse artigo você vai conseguir fazer rodar em seu windows numa boa):

Baixe em https://dl.google.com/android/repository/sdk-tools-darwin-3859397.zip a versão que eu usei.

EXTRAIA o arquivo que vai gerar uma pasta chamada tools. Pegue esta pasta, copie-a, entre na pasta /Users/SEU_USUARIO/Library/Android/sdk, DELETE OU renomeie a pasta tools que existia e coloque a pasta tools nova (a que você baixou e extraiu do google).

Feito isto temos o básico do Android SDK, mas precisamos arrumar o java (e esse é pegadinha do malandro viu?).

Antes de passarmos para o java precisamos entrar na pasta

/Users/little_oak/Library/Android/sdk/tools/bin pelo terminal, sim, abra o TERMINAL DO MAC (shell) e vamos ter que digitar comandos, lets go?

cd /Users/little_oak/Library/Android/sdk/tools/bin

./sdkmanager “platform-tools

./sdkmanager “platforms;android-25”

./sdkmanager “build-tools;25.0.3”

Entenda que ali é ./ MESMO, estamos mandando rodar o binário que não faz parte de um path global do sistema (para poder rodar comandos se estar no caminho completo dele).

 

Passo 3 (step 3):

Resolvido o problema do SDK da GOOGLE, agora precisamos resolver o sdk da Oracle. De alguma maneira estranha a Unity em suas versões anteriores apresentava uma inconsistência com a TOOLS da google mais recente (isso está descrito no link abaixo):

https://unity3d.com/pt/unity/whats-new/unity-5.6.1#section-fixes

A Unity 2017+ por sua vez já suporta a tools nova, porém apresenta alguma inconsistência pra lá de estranha com o JDK mais recente, o que me fez usar um JDK mais velho. Para dar certo usei o JDK jdk1.8.0_151.jdk (pode baixar aqui: http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-macosx-x64.dmg).

Assim que baixar instale normalmente. Terminada a instalação teremos alguns problemas para sanar, descrevo nos passos abaixo.

Passo 4 (step 4):

No OSX, o sistema bloqueia por padrão a leitura da pasta Library do usuário, sendo necessário dar permissões a esta pasta. Como segurança não é o quesito principal deste postei achei por bem mandar um 777 nela, logo precisamos rodar o comando abaixo:

sudo chmod 777 /Users/MEU_USUARIO/Library/

Feito isto agora podemos brincar na Unity.

Abra a Unity 2017+ e vá em UNITY -> PREFERENCES (imagem abaixo):
External TOOLS -> PROCURA PELA PARTE DE SDK E JDK.

EM SDK coloque: /Users/little_oak/Library/Android/sdk
EM JDK coloque: /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

No Windows os paths mudam, mas é bem mais fácil que no MAC.

Depois é só compilar :).