A contagem do método da unidade excede o limite de 64K
20
Acabei de ter um problema relacionado a um método de 64k no Unity, por isso não consigo criar meu projeto. Ele mostra que a limitação do método excede o limite da contagem do método de 64k. Então, alguém aqui pode me ajudar a resolver esse problema?
Como configurar o suporte Multidex para o projeto Unity
O que é o Multidex:
Os arquivos do aplicativo Android (APK) contêm arquivos executáveis de bytecode na forma de arquivos Dalvik Executable (DEX), que contêm o código compilado usado para executar seu aplicativo. A especificação do Executável Dalvik limita o número total de métodos que podem ser referenciados em um único arquivo DEX a 65.536, incluindo métodos de estrutura do Android, métodos de biblioteca e métodos em seu próprio código. Para ultrapassar esse limite, você deve configurar o processo de criação do aplicativo para gerar mais de um arquivo DEX, conhecido como configuração multi-dex.
Quando usamos o Multidex:
Quando excedemos o número total de métodos que podem ser referenciados em um único arquivo DEX para 65.536, incluindo métodos de estrutura do Android, métodos de biblioteca e métodos em seu próprio código.
Evite o limite de 64K
Antes de configurar seu aplicativo para permitir o uso de 64 K ou mais de referências de método, você deve executar etapas para reduzir o número total de referências chamadas pelo código do aplicativo, incluindo métodos definidos pelo código do aplicativo ou pelas bibliotecas incluídas. As estratégias a seguir podem ajudá-lo a evitar atingir o limite de referência DEX:
Revise as dependências diretas e transitivas do seu aplicativo - verifique se qualquer dependência de biblioteca grande incluída no seu aplicativo é usada de maneira que supere a quantidade de código que está sendo adicionado ao aplicativo. Um anti-padrão comum é incluir uma biblioteca muito grande porque alguns métodos utilitários foram úteis. Reduzir as dependências do código do aplicativo pode ajudar a evitar o limite de referência do DEX.
Remova o código não utilizado com o ProGuard - ative o encolhimento do código para executar o ProGuard em suas compilações de versão. A ativação da redução garante que você não esteja enviando código não utilizado com seus APKs.
Além dessas dicas oficiais, ao criar seu projeto do Unity, seguir estas etapas o ajudará ainda mais:
Crie um projeto Android a partir do seu Unity Editor.
Importe seu projeto Android no Android Studio.
A configuração do seu projeto de aplicativo para usar uma configuração multi dex requer que você faça a seguinte modificação.
Se o seu minSdkVersion está definido para 21 ou superior, tudo o que você precisa fazer é definir multiDexEnableda trueem seu arquivo build.gradle do nível de módulo, como mostrado aqui:
No entanto, se você minSdkVersionestiver definido como 20 ou menos, deverá usar a biblioteca de suporte multidex da seguinte maneira:
3.1 Modifique o arquivo build.gradle no nível do módulo para ativar o multidex e adicione a biblioteca multidex como uma dependência, conforme mostrado aqui:
Ou, se você substituir a classe Application, mas não for possível alterar a classe base, poderá substituir o método attachBaseContext () e chamar MultiDex.install (this) para ativar o multidex:
Adicione o signatureConfig nos seus principais projetos Gradle.
Ou defina manualmente o modo de Assinatura para o modo de Depuração, vá em Arquivo -> Estrutura do Projeto -> Em Módulos Clique no seu projeto e em Tipos de Compilação, selecione Depuração -> escolha Configuração de Assinatura> depuração
Qual o tamanho do seu projeto que levou a esse erro?
Evorlor 10/07
11
Na verdade, estou usando a mediação do Google AdMob, para que isso seja usado para adicionar de 6 a 7 anúncios de SDK, para que minha contagem final de métodos de projetos seja de cerca de 76 mil.
Rakesh
0
Eu recomendo que você acesse este link, que o ajudará a criar jogos habilitados para multidex diretamente através da unidade.
Atualmente, esta é uma resposta apenas para link: embora o link responda à pergunta, a resposta não. Você pode querer incluir o núcleo do conteúdo vinculado aqui (o link em si não é ruim, é apenas havin única ligação que é ruim).
Vaillancourt
Eu concordo com você, mas os passos escritos são muitos. Por isso tive que criar um artigo e compartilhar o link. Eu preferiria assim, para ter apenas uma fonte de verdade, em vez de criar múltiplas.
Abhishek Patidar
Entenda, mas não é assim que os sites do Stack Exchange funcionam: respostas somente para links são excluídas. Se você quiser, posso converter esta resposta em um comentário da pergunta: você manterá sua referência visível para os usuários futuros e vencemos. Só tenho um link para resposta. (¤ A principal questão com as respostas apenas para links é que, se você derrubar seu site (ou seu ISP falir com todos os seus dados), essa resposta será totalmente inútil; é por isso que a resposta deve responder à pergunta.)
Vaillancourt
Faz sentido. Vou converter minha resposta em instruções completas.
Eu recomendo que você acesse este link, que o ajudará a criar jogos habilitados para multidex diretamente através da unidade.
https://medium.com/@abhpatidar/solving-unity-dex-issue-538e134c8809
Nota: Isso permitirá apenas o multidex na própria unidade (e deve corrigir problemas com multidex). Não corrigirá problemas relacionados ao gradle.
fonte