4
votes

Problème de fusion avec Unity 2018.3 Android Dex

Avant de décider de rejeter ce message comme étant "en double" sans même le lire, sachez que j'ai regardé une tonne de messages liés à ce sujet et que je ne trouve pas de solution pour mon exemple, y compris tous suggéré par StackOverflow. La plupart des publications concernent Android Studio au lieu de l'unité.

Mon erreur est donnée dans Unity lors de la tentative de compilation sur Android, elle plante ici.

CommandInvokationFailure: Gradle build failed. 
C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\OpenJDK\Windows\bin\java.exe -classpath "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-4.6.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleDebug"

stderr[
D8: Program type already present: com.unity3d.ads.BuildConfig

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformDexArchiveWithExternalLibsDexMergerForDebug'.

J'ai beaucoup essayé de changer des choses avec un fichier build.gradle des messages suggèrent, mais je ne peux rien faire fonctionner.

L'erreur n'existait pas dans Unity 2018.2. J'ai vérifié juste avant la mise à jour, mais la mise à jour pose maintenant ce problème.

Quelqu'un a-t-il des idées spécifiques à UNITY sur ce qu'il faut faire ici? J'ai essayé tellement de choses et personne n'a encore pu m'aider dans la publication.

Merci pour toute aide


1 commentaires

Cela s'applique également à 2019.1.0b7. La suppression des publicités comme dans la réponse ci-dessous lui a permis de se construire.


4 Réponses :


1
votes

Cette erreur se produit probablement lorsque vous ajoutez une bibliothèque qui n'est pas compatible avec votre compileSdkVersion. Dans votre cas, vous pouvez avoir des bibliothèques qui n'ont pas été importées par défaut par unity (et qui le sont maintenant) ou il peut y avoir un problème avec la version Build Tools. (Vous pouvez essayer de les mettre à jour)

J'ai eu un problème similaire il y a quelques versions, mais je ne me souviens pas comment je l'ai résolu. Je n'ai pas encore eu le temps de passer à unity 2018.3. (Les astuces ressemblent donc davantage à des suppositions, mais elles peuvent vous aider à résoudre le problème.)


7 commentaires

Merci pour vos conseils. Je l'apprécie et je vais l'examiner - je posterai si je trouve une solution


Apparemment, la médiation des annonces Google était ce qui provoquait l'erreur. Une fois supprimée, l'erreur a disparu. Je ne sais pas ce que je vais faire pour le contourner plus tard, mais au moins il se compile à nouveau. Merci pour le conseil


Cela peut être lié à ceci: blogs. unity3d.com/2018/08/07/… Toutes les annonces seront diffusées par les annonces unit et monétisées par unity ou google. (Payout le sujet donc je peux me tromper.


Google a peut-être abandonné AdMob pour Unity, car Google est désormais un autre partenaire publicitaire dans le cadre des enchères unifiées d'Unity


Si je vous comprends bien, vous dites qu'en utilisant uniquement Unity Ads, vous pourrez également diffuser des annonces Google sur leur réseau? Dans ce cas, Unity Ads est donc la meilleure option?


Je suis également confus par l'article, mais il semble que oui, mais sans aucun test, je ne peux pas en être sûr.


Hey. Je suis passé d'une version interne obsolète à une version moderne de gradle, et maintenant je vois cette erreur. C'est super frustrant, car je ne suis pas capable de construire. Je n'utilise pas d'annonces Google, mais des annonces unitaires. 1) Comment avez-vous découvert quelles dépendances étaient incompatibles avec le SDK? 2) Comment mettre à jour une dépendance? Unity était très intéressé par la version de NDK que je devais télécharger, pourquoi ne pouvait-il pas fonctionner avec la dernière version téléchargée par le gestionnaire de SDK. C'est extrêmement étrange et déroutant.



4
votes

Vous pouvez ouvrir PackageManage sous Window dans la barre de menu et supprimer Advertisement ou vous pouvez supprimer le fichier com.unity.ads de Library / PackageCache dans le répertoire du projet pour résoudre ce problème.


1 commentaires

C'était ça le problème. Fixé! Merci!



0
votes

Mes paramètres (Mac):
- Android Studio 2.3
- Unity 2019.1.5f1:
- Paramètres du lecteur -> Autres paramètres -> Version d'exécution des scripts = .Net 4
- Package Manager -> Publicité: Désinstallé
- Préférences -> Outils externes -> Android: coché Installé avec Unity (tout)

Ma solution:
- supprimer GoogleMobileAds du projet
- supprimer PlayServicesResolver du projet
- supprimer les plugins du projet
- Package d'importation -> Package personnalisé -> GoogleMobileAds.unitypackage (3.15.1 dans mon cas)


0 commentaires

0
votes

Les erreurs Dex se produisent généralement lorsque vous avez trop de méthodes importées dans un projet, pas à cause d'un package spécifique. Je suppose que la mise à niveau vers une nouvelle version vous a obligé à importer de nouveaux éléments dans votre projet.

Vous devez activer ProGuard.

Cause: http://twinkfed.homedns.org/Android ///tools/building/multidex.html

Correction: https://www.youtube.com/watch?v=va0FQNlBUX0


0 commentaires