Risposte:
Questa risposta si basa fortemente sulla documentazione ufficiale di Android (le parti citate, in particolare).
Come impostare il supporto Multidex per Unity Project
Cos'è Multidex:
I file delle applicazioni Android (APK) contengono file bytecode eseguibili sotto forma di file DEX (Dalvik Executable), che contengono il codice compilato utilizzato per eseguire l'app. La specifica eseguibile di Dalvik limita il numero totale di metodi a cui è possibile fare riferimento in un singolo file DEX a 65.536, inclusi i metodi del framework Android, i metodi della libreria e i metodi nel proprio codice. Per superare questo limite è necessario configurare il processo di creazione dell'app per generare più di un file DEX, noto come configurazione multi-dex.
Quando usiamo Multidex:
Quando superiamo il numero totale di metodi che è possibile fare riferimento in un singolo file DEX a 65.536, inclusi i metodi del framework Android, i metodi della libreria e i metodi nel proprio codice.
Evita il limite di 64 KB
Prima di configurare l'app per abilitare l'uso di 64K o più riferimenti a metodi, è necessario adottare misure per ridurre il numero totale di riferimenti chiamati dal codice dell'app, inclusi i metodi definiti dal codice dell'app o dalle librerie incluse. Le seguenti strategie possono aiutarti a evitare di colpire il limite di riferimento DEX:
Rivedi le dipendenze dirette e transitive della tua app : assicurati che ogni grande dipendenza della libreria che includi nella tua app sia utilizzata in modo da superare la quantità di codice che viene aggiunta all'app. Un anti-pattern comune è quello di includere una libreria molto grande perché alcuni metodi di utilità erano utili. Ridurre le dipendenze del codice dell'app può spesso aiutarti a evitare il limite di riferimento DEX.
Rimuovi il codice inutilizzato con ProGuard : abilita la riduzione del codice per eseguire ProGuard per le build di rilascio. L'abilitazione della riduzione consente di non spedire il codice inutilizzato con gli APK.
Oltre a questi suggerimenti ufficiali, durante la creazione del progetto Unity, seguire questi passaggi ti aiuterà ulteriormente:
L'impostazione del progetto dell'app per l'utilizzo di una configurazione multi-dex richiede la modifica seguente.
Se il vostro minSdkVersion è impostato su 21 o superiore, tutto quello che dovete fare è impostare
multiDexEnabled
atrue
nel file build.gradle a livello di modulo, come illustrato di seguito:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
Tuttavia, se il valore
minSdkVersion
impostato è 20 o inferiore, è necessario utilizzare la libreria di supporto multidex come segue:3.1. Modificare il file build.gradle a livello di modulo per abilitare multidex e aggiungere la libreria multidex come dipendenza, come mostrato qui:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
3.2. A seconda che si ignori la classe Application, eseguire una delle seguenti operazioni:
- Se non si ignora la
Application
classe, modificare il file manifest per impostarloandroid:name
nel<application>
tag come segue:
<?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 si ignora la
Application
classe, modificarla per estendere MultiDexApplication (se possibile) come segue:
public class MyApplication extends MultiDexApplication { ... }
- Oppure, se si esegue l'override della classe Application ma non è possibile modificare la classe base, è possibile invece sostituire il metodo attachBaseContext () e chiamare MultiDex.install (questo) per abilitare multidex:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Controlla l'errore dai manifest di altri plugin e pulisci il progetto.
In caso di problemi di dipendenza nel progetto, eseguire questo comando in Terminale Android
% Gradle clean App."App name"
Copia queste dipendenze nel tuo Grado applicazione, sotto le dipendenze:
compile fileTree(include: ['*.jar'], dir: 'bin')
compile fileTree(include: ['*.jar'], dir: 'libs')
Aggiungi signingConfig nel tuo progetto principale Gradle.
Oppure imposta manualmente la modalità Firma sulla modalità Debug, vai su File -> Struttura del progetto -> Sotto Moduli Fai clic sul tuo progetto e in Tipi di build seleziona Debug -> scegli Config firma -> debug
Ora sincronizza il tuo Gradle e costruisci il progetto.
Ti consiglierei di passare attraverso questo link che ti aiuterà a creare giochi abilitati multidex direttamente attraverso l'unità.
https://medium.com/@abhpatidar/solving-unity-dex-issue-538e134c8809
Nota: questo abiliterà il multidex solo nell'unità stessa (e dovrebbe risolvere i problemi relativi al multidex). Non risolverà i problemi relativi alla pendenza.