Réponses:
Cette réponse s'appuie fortement sur la documentation officielle d'Android (les parties citées, en particulier).
Comment configurer la prise en charge Multidex pour Unity Project
Qu'est-ce que Multidex:
Les fichiers d'application Android (APK) contiennent des fichiers de bytecode exécutables sous forme de fichiers exécutables Dalvik (DEX), qui contiennent le code compilé utilisé pour exécuter votre application. La spécification Dalvik Executable limite le nombre total de méthodes pouvant être référencées dans un seul fichier DEX à 65 536, y compris les méthodes de framework Android, les méthodes de bibliothèque et les méthodes dans votre propre code. Dépasser cette limite nécessite que vous configuriez votre processus de génération d'application pour générer plus d'un fichier DEX, appelé configuration multi-dex.
Lorsque nous utilisons Multidex:
Lorsque nous dépassons le nombre total de méthodes pouvant être référencées dans un seul fichier DEX à 65 536, y compris les méthodes de framework Android, les méthodes de bibliothèque et les méthodes dans votre propre code.
Évitez la limite de 64 Ko
Avant de configurer votre application pour permettre l'utilisation de 64 Ko ou plus de références de méthode, vous devez prendre des mesures pour réduire le nombre total de références appelées par votre code d'application, y compris les méthodes définies par votre code d'application ou les bibliothèques incluses. Les stratégies suivantes peuvent vous aider à éviter d'atteindre la limite de référence DEX:
Passez en revue les dépendances directes et transitives de votre application - Assurez-vous que toute grande dépendance de bibliothèque que vous incluez dans votre application est utilisée d'une manière qui dépasse la quantité de code ajoutée à l'application. Un anti-modèle commun consiste à inclure une très grande bibliothèque car quelques méthodes utilitaires étaient utiles. La réduction des dépendances du code de votre application peut souvent vous aider à éviter la limite de référence DEX.
Supprimez le code inutilisé avec ProGuard - Activez la réduction de code pour exécuter ProGuard pour vos versions. L'activation de la réduction garantit que vous n'envoyez pas de code inutilisé avec vos fichiers APK.
Outre ces conseils officiels, lors de la création de votre projet Unity, les étapes suivantes vous aideront davantage:
La configuration de votre projet d'application pour utiliser une configuration multi dex nécessite que vous apportiez la modification suivante.
Si votre minSdkVersion est réglé sur 21 ou plus, tout ce que vous devez faire est de mettre
multiDexEnabled
àtrue
votre fichier build.gradle niveau du module, comme indiqué ici:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
Cependant, si votre
minSdkVersion
est défini sur 20 ou moins, vous devez utiliser la bibliothèque de prise en charge multidex comme suit:3.1. Modifiez le fichier build.gradle au niveau du module pour activer multidex et ajoutez la bibliothèque multidex en tant que dépendance, comme indiqué ici:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
3.2. Selon que vous remplacez la classe Application, effectuez l'une des opérations suivantes:
- Si vous ne remplacez pas la
Application
classe, modifiez votre fichier manifeste à définirandroid:name
dans la<application>
balise comme suit:
<?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>
- Si vous remplacez la
Application
classe, modifiez-la pour étendre MultiDexApplication (si possible) comme suit:
public class MyApplication extends MultiDexApplication { ... }
- Ou si vous remplacez la classe Application mais qu'il n'est pas possible de modifier la classe de base, vous pouvez remplacer la méthode attachBaseContext () et appeler MultiDex.install (this) pour activer le multidex:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Vérifiez le formulaire d'erreur des autres plugins et nettoyez le projet. Et sysc à nouveau.
S'il y a un problème de dépendance dans votre projet, exécutez cette commande dans Android Terminal
% Gradle clean App."App name"
Copiez ces dépendances dans votre Gradle d'application, sous dépendances:
compile fileTree(include: ['*.jar'], dir: 'bin')
compile fileTree(include: ['*.jar'], dir: 'libs')
Ajoutez le signatureConfig dans vos projets principaux Gradle.
Ou définissez le mode de signature sur le mode débogage manuellement, allez dans Fichier -> Structure du projet -> Sous les modules Cliquez sur votre projet et sous Types de construction sélectionnez Déboguer -> choisissez Configuration de la signature-> déboguer
Synchronisez maintenant votre Gradle et générez le projet.
Je vous recommanderais de parcourir ce lien qui vous aidera à créer des jeux activés multidex directement par l'unité.
https://medium.com/@abhpatidar/solving-unity-dex-issue-538e134c8809
Remarque: Cela n'activera que le multidex dans l'unité elle-même (et devrait résoudre les problèmes de multidex). Il ne résoudra pas les problèmes liés à Gradle.