Solução de problemas e perguntas frequentes sobre o Unity e o Firebase

Nesta página, você verá dicas e soluções de problemas específicos para o Unity que podem ser encontrados ao usar o Firebase.

Você está enfrentando algum outro desafio ou seu problema não está descrito abaixo? Confira as Perguntas frequentes sobre o Firebase para ver mais dúvidas relacionadas ao Firebase ou a um produto específico.

Um problema com um único dex ao criar um app Android

Ao criar um app para Android, você pode encontrar uma falha de compilação relacionada a ter um único arquivo dex. A mensagem de erro será semelhante à seguinte, caso seu projeto esteja configurado para usar o sistema de compilação do Gradle.

Cannot fit requested classes in a single dex file.

Os arquivos Dalvik Executable (.dex) são usados para conter um conjunto de definições de classe e os dados associados ao grupo de apps para Android (.apk). Um único arquivo dex está limitado a referências a métodos 65.536. A compilação falhará se o número total de métodos de todas as bibliotecas Android no projeto exceder esse limite.

O Unity introduziu a Minimização em 2017.2, que usa o Proguard (ou outras ferramentas em algumas versões do Unity) para remover o código não utilizado, o que pode reduzir o número total de métodos referenciados em um único arquivo dex. A opção pode ser encontrada em Player Settings > Android > Publishing Settings > Minify. As opções podem ser diferentes em versões diferentes do Unity. Portanto, consulte a documentação oficial do Unity.

Se o número de métodos referenciados ainda exceder o limite, outra opção será ativar multidex. Há várias maneiras de fazer isso no Unity:

  • Se Custom Gradle Template em Player Settings estiver ativado, modifique mainTemplate.gradle.
  • Se você usar o Android Studio para criar o projeto exportado, modifique o arquivo build.gradle do módulo.

Saiba mais detalhes no Guia do usuário do multidex.

Problemas ao criar para Android com minSdkVersion 23

Ao criar para o Android, se você segmentar o minSdkVersion 23, ele poderá falhar na etapa de dexação, geralmente na tarefa do Gradle ":launcher:mergeExtDexDebug", onde ele dirá que "Falha ao transformar" uma das bibliotecas do Android. Isso é causado por um bug na ferramenta dex padrão no SDK do Android que a maioria dos editores do Unity usa e pode ser corrigido de algumas maneiras:

  • Defina minSdkVersion como 24.
  • Ative a minificação do Android em Player Settings > Android > Publishing Settings > Minify.
  • Especifique uma versão diferente da ferramenta dex adicionando o seguinte ao arquivo settingsTemplate.gradle:
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

Problemas na criação para iOS com o Cocoapods

Durante a criação para iOS, a instalação do Cocoapod pode falhar com um erro sobre a localidade do idioma ou a codificação UTF-8. No momento, há várias maneiras diferentes de contornar o problema.

  • No terminal, execute pod install diretamente e abra o arquivo xcworkspace resultante.

  • Faça o downgrade da versão do Cocoapods para 1.10.2. O problema existe apenas na versão 1.11 e mais recentes.

  • No seu ~/.bash_profile ou equivalente, adicione export LANG=en_US.UTF-8

Como atualizar a versão dos SDKs do Firebase para Unity

O processo para atualizar as versões dos SDKs do Firebase para Unity depende de como eles foram importados inicialmente. Veja os dois métodos de importação alternativos:

  • Como importar arquivos .unitypackage no diretório Assets/ do projeto
  • Como importar usando o Unity Package Manager (UPM)
    • Essa é a maneira recomendada de gerenciar pacotes no Unity 2018.4+.
    • Use esse método para facilitar futuras atualizações de versão e para limpar o diretório Assets/.

No seu projeto Unity, use apenas um método de importação para gerenciar todos os pacotes do Firebase. As instruções abaixo podem ser usadas para atualizar a versão dos pacotes individuais, bem como para migrar o gerenciamento de pacotes para o UPM (o método de importação recomendado), se necessário.