Respostas:
Esta resposta depende muito da documentação oficial do Android (as partes citadas, especificamente).
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:
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
multiDexEnabled
atrue
em seu arquivo build.gradle do nível de módulo, como mostrado aqui:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
No entanto, se você
minSdkVersion
estiver 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:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
3.2 Dependendo de você substituir a classe Application, execute um dos seguintes procedimentos:
- Se você não substituir a
Application
classe, edite seu arquivo de manifesto para definirandroid:name
na<application>
tag da seguinte maneira:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
- Se você substituir a
Application
classe, altere-a para estender o MultiDexApplication (se possível) da seguinte maneira:
public class MyApplication extends MultiDexApplication { ... }
- 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:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Verifique o erro do manifesto de outros plugins e limpe o projeto.
Se houver algum problema de dependência no seu projeto, execute este comando no Android Terminal
% Gradle clean App."App name"
Copie estas dependências no Application Gradle, em dependências:
compile fileTree(include: ['*.jar'], dir: 'bin')
compile fileTree(include: ['*.jar'], dir: 'libs')
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
Agora sincronize seu Gradle e construa o projeto.
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.