Unable to convert 类 into dex format build error in Unity 5.3.5f1.当 Admob Unity Plugins 添加到项目中时

Unable to convert classes into dex format build error in Unity 5.3.5f1. When Admob Unity Plugins are added into the project

在我的 Unity 游戏中,导入 Admob Unity Plugins 后,我无法构建我的项目。它给出了构建错误,无法将 类 转换为 dex 格式,Unity 版本为 5.3.5f1。我得到的错误日志是这样的:

> <p> Error building Player: CommandInvokationFailure: Unable to convert
> classes into dex format. See the Console for details. C:\Program
> Files\Java\jdk1.8.0_74\bin\java.exe -Xmx2048M
> -Dcom.android.sdkmanager.toolsdir="C:/Users/Rajan/AppData/Local/Android/sdk\tools"
> -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar"
> -
> 
> stderr[ Uncaught translation error:
> java.lang.IllegalArgumentException: already added:
> Lcom/unity3d/ads/android/BuildConfig; Uncaught translation error:
> java.lang.IllegalArgumentException: already added:
> Lcom/unity3d/ads/android/IUnityAdsListener; Uncaught translation
> error: java.lang.IllegalArgumentException: already added:
> Lcom/unity3d/ads/android/UnityAds; Uncaught translation error:
> java.lang.IllegalArgumentException: already added:
> Lcom/unity3d/ads/android/UnityAds; Uncaught translation error:
> java.lang.IllegalArgumentException: already added:
> Lcom/unity3d/ads/android/UnityAds; Uncaught translation error:
> java.lang.IllegalArgumentException: already added:
> Lcom/unity3d/ads/android/UnityAds; Uncaught translation error:
> java.lang.IllegalArgumentException: already added:
> Lcom/unity3d/ads/android/UnityAdsDeviceLog; Uncaught translation
> error: java.lang.IllegalArgumentException: already added:
> Lcom/unity3d/ads/android/UnityAdsDeviceLog; Uncaught translation
> error: java.lang.IllegalArgumentException: already added:
> Lcom/unity3d/ads/android/UnityAdsDeviceLog$UnityAdsLogLevel;
> 
> UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.RuntimeException:
> Translation has been interrupted  at
> com.android.dx.command.dexer.Main.processAllFiles(Main.java:608)  at
> com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)   at
> com.android.dx.command.dexer.Main.run(Main.java:277)  at
> com.android.dx.command.dexer.Main.main(Main.java:245)     at
> com.android.dx.command.Main.main(Main.java:106)   at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)     at
> SDKMain.main(SDKMain.java:129) Caused by:
> java.lang.InterruptedException: Too many errors   at
> com.android.dx.command.dexer.Main.processAllFiles(Main.java:600)  ...
> 9 more ] stdout[ processing archive F:\Unity Projects\Car Racing
> Game\Temp\StagingArea\android-libraries\unityads-release\libs\.\classes.jar...
> ignored resource META-INF/ ignored resource META-INF/MANIFEST.MF
> ignored resource com/ ignored resource com/unity3d/ ignored resource
> com/unity3d/ads/ ignored resource com/unity3d/ads/android/ processing
> com/unity3d/ads/android/BuildConfig.class... processing
> com/unity3d/ads/android/IUnityAdsListener.class... processing
> com/unity3d/ads/android/UnityAds.class... processing
> com/unity3d/ads/android/UnityAds.class... processing
> com/unity3d/ads/android/UnityAds.class... processing
> com/unity3d/ads/android/UnityAds.class... processing
> com/unity3d/ads/android/UnityAdsDeviceLog.class... processing
> com/unity3d/ads/android/UnityAdsDeviceLog.class... processing
> com/unity3d/ads/android/UnityAdsDeviceLog$UnityAdsLogLevel.class...
> processing
> com/unity3d/ads/android/UnityAdsDeviceLog$UnityAdsShowMsg.class...
> processing com/unity3d/ads/android/UnityAdsDeviceLogEntry.class...
> processing com/unity3d/ads/android/UnityAdsDeviceLogLevel.class...
> processing com/unity3d/ads/android/UnityAdsUtils.class... ignored
> resource com/unity3d/ads/android/cache/ processing
> com/unity3d/ads/android/cache/UnityAdsCache.class... processing
> com/unity3d/ads/android/cache/UnityAdsCache.class... processing
> com/unity3d/ads/android/cache/UnityAdsCacheThread.class... processing
> com/unity3d/ads/android/cache/UnityAdsCacheThreadHandler.class...
> ignored resource com/unity3d/ads/android/campaign/ processing
> com/unity3d/ads/android/campaign/UnityAdsCampaign.class... processing
> com/unity3d/ads/android/campaign/UnityAdsCampaign$UnityAdsCampaignStatus.class...
> ignored resource com/unity3d/ads/android/data/ processing
> com/unity3d/ads/android/data/UnityAdsAdvertisingId.class... processing
> com/unity3d/ads/android/data/UnityAdsAdvertisingId.class...
> processing
> com/unity3d/ads/android/data/UnityAdsAdvertisingId$GoogleAdvertisingInfo.class...
> processing
> com/unity3d/ads/android/data/UnityAdsAdvertisingId$GoogleAdvertisingInfo$GoogleAdvertisingInfoBinder.class...
> processing
> com/unity3d/ads/android/data/UnityAdsAdvertisingId$GoogleAdvertisingInfo$GoogleAdvertisingInfoBinder$GoogleAdvertisingInfoImplementation.class...
> processing
> com/unity3d/ads/android/data/UnityAdsAdvertisingId$GoogleAdvertisingServiceConnection.class...
> processing com/unity3d/ads/android/data/UnityAdsDevice.class...
> ignored resource com/unity3d/ads/android/item/ processing
> com/unity3d/ads/android/item/UnityAdsRewardItem.class... processing
> com/unity3d/ads/android/item/UnityAdsRewardItemManager.class...
> ignored resource com/unity3d/ads/android/properties/ processing
> com/unity3d/ads/android/properties/UnityAdsConstants.class...
> processing
> com/unity3d/ads/android/properties/UnityAdsProperties.class... ignored
> resource com/unity3d/ads/android/unity3d/ processing
> com/unity3d/ads/android/unity3d/UnityAdsUnityEngineWrapper.class...
> processing
> com/unity3d/ads/android/unity3d/UnityAdsUnityEngineWrapper.class...
> processing
> com/unity3d/ads/android/unity3d/UnityAdsUnityWrapper.class...
> processing
> com/unity3d/ads/android/unity3d/UnityAdsUnityWrapper.class...
> ignored resource com/unity3d/ads/android/video/ processing
> com/unity3d/ads/android/video/IUnityAdsVideoPlayerListener.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPausedView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView$VideoStateChecker.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView$VideoStateChecker.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView$VideoStateChecker.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView$VideoStateChecker.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView$VideoStateChecker.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView$VideoStateChecker.class...
> processing
> com/unity3d/ads/android/video/UnityAdsVideoPlayView$VideoStateChecker.class...
> processing com/unity3d/ads/android/video/UnityAdsVideoView.class...
> ignored resource com/unity3d/ads/android/view/ processing
> com/unity3d/ads/android/view/UnityAdsFullscreenActivity.class...
> processing
> com/unity3d/ads/android/view/UnityAdsFullscreenActivity.class...
> processing
> com/unity3d/ads/android/view/UnityAdsFullscreenActivity$UnityAdsPlayVideoRunner.class...
> processing com/unity3d/ads/android/view/UnityAdsMainView.class...
> processing com/unity3d/ads/android/view/UnityAdsMainView.class...
> processing com/unity3d/ads/android/view/UnityAdsMainView.class...
> processing com/unity3d/ads/android/view/UnityAdsMainView.class...
> processing com/unity3d/ads/android/view/UnityAdsMainView.class...
> processing com/unity3d/ads/android/view/UnityAdsMainView.class...
> processing
> com/unity3d/ads/android/view/UnityAdsMainView$UnityAdsMainViewState.class...
> processing
> com/unity3d/ads/android/view/UnityAdsMuteVideoButton.class...
> processing
> com/unity3d/ads/android/view/UnityAdsMuteVideoButton.class...
> processing
> com/unity3d/ads/android/view/UnityAdsMuteVideoButton$UnityAdsMuteVideoButtonState.class...
> processing com/unity3d/ads/android/view/UnityAdsViewUtils.class...
> ignored resource com/unity3d/ads/android/webapp/ processing
> com/unity3d/ads/android/webapp/IUnityAdsWebBridgeListener.class...
> processing
> com/unity3d/ads/android/webapp/IUnityAdsWebDataListener.class...
> processing
> com/unity3d/ads/android/webapp/IUnityAdsWebViewListener.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebBridge.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebBridge.class...
> processing
> com/unity3d/ads/android/webapp/UnityAdsWebBridge$UnityAdsWebEvent.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebData.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebData.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebData.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebData.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebData.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebData.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebData.class...
> processing
> com/unity3d/ads/android/webapp/UnityAdsWebData$UnityAdsCancelUrlLoaderRunner.class...
> processing
> com/unity3d/ads/android/webapp/UnityAdsWebData$UnityAdsRequestType.class...
> processing
> com/unity3d/ads/android/webapp/UnityAdsWebData$UnityAdsUrlLoader.class...
> processing
> com/unity3d/ads/android/webapp/UnityAdsWebData$UnityAdsUrlLoaderCreator.class...
> processing
> com/unity3d/ads/android/webapp/UnityAdsWebData$UnityAdsVideoPosition.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebView.class...
> processing com/unity3d/ads/android/webapp/UnityAdsWebView.class...
> processing
> com/unity3d/ads/android/webapp/UnityAdsWebView$UnityAdsJavascriptRunner.class...
> processing
> com/unity3d/ads/android/webapp/UnityAdsWebView$UnityAdsViewChromeClient.class...
> processing
> com/unity3d/ads/android/webapp/UnityAdsWebView$UnityAdsViewClient.class...
> ignored resource com/unity3d/ads/android/zone/ processing
> com/unity3d/ads/android/zone/UnityAdsIncentivizedZone.class...
> processing com/unity3d/ads/android/zone/UnityAdsZone.class...
> processing com/unity3d/ads/android/zone/UnityAdsZoneManager.class...
> processing bin\classes\.\com\admob\demo\R.class... processing
> bin\classes\.\com\admob\demo\R$attr.class... processing
> bin\classes\.\com\admob\demo\R$drawable.class... processing
> bin\classes\.\com\admob\demo\R$id.class... processing
> bin\classes\.\com\admob\demo\R$layout.class... processing
> bin\classes\.\com\admob\demo\R$string.class... processing
> bin\classes\.\com\admob\demo\R$style.class... processing
> bin\classes\.\com\unity3d\ads\android\R.class... processing
> bin\classes\.\com\unity3d\ads\android\R$attr.class... processing
> bin\classes\.\com\unity3d\ads\android\R$drawable.class... processing
> bin\classes\.\com\unity3d\ads\android\R$id.class... processing
> bin\classes\.\com\unity3d\ads\android\R$layout.class... processing
> bin\classes\.\com\unity3d\ads\android\R$string.class... processing
> bin\classes\.\com\unity3d\ads\android\R$style.class... processing
> archive bin\classes.jar... processing
> bitter/jnibridge/JNIBridge.class... processing
> bitter/jnibridge/JNIBridge$a.class... processing
> com/unity3d/player/NativeLoader.class... processing
> com/unity3d/player/ReflectionHelper.class... processing
> com/unity3d/player/ReflectionHelper.class... processing
> com/unity3d/player/ReflectionHelper$a.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer.class... processing
> com/unity3d/player/UnityPlayer$a.class... processing
> com/unity3d/player/UnityPlayer$b.class... processing
> com/unity3d/player/UnityPlayer$c.class... processing
> com/unity3d/player/UnityPlayerActivity.class... processing
> com/unity3d/player/UnityPlayerNativeActivity.class... processing
> com/unity3d/player/UnityPlayerProxyActivity.class... processing
> com/unity3d/player/UnityWebRequest.class... processing
> com/unity3d/player/WWW.class... processing
> com/unity3d/player/a.class... processing
> com/unity3d/player/a.class... processing
> com/unity3d/player/a.class... processing
> com/unity3d/player/a$a.class... processing
> com/unity3d/player/b.class... processing
> com/unity3d/player/b.class... processing
> com/unity3d/player/b.class... processing
> com/unity3d/player/c.class... processing com/unity3d/player/d.class...
> processing com/unity3d/player/d.class... processing
> com/unity3d/player/d.class... processing
> com/unity3d/player/e.class... processing com/unity3d/player/f.class...
> processing com/unity3d/player/g.class... processing
> com/unity3d/player/h.class... processing com/unity3d/player/i.class...
> processing com/unity3d/player/j.class... processing
> com/unity3d/player/k.class... processing
> com/unity3d/player/k.class... processing
> com/unity3d/player/k.class... processing
> com/unity3d/player/k.class... processing
> com/unity3d/player/k.class... processing
> com/unity3d/player/l.class... processing
> com/unity3d/player/l.class... processing
> com/unity3d/player/m.class... processing com/unity3d/player/n.class...
> processing com/unity3d/player/n.class... processing
> com/unity3d/player/o.class... processing com/unity3d/player/p.class...
> processing com/unity3d/player/p.class... processing
> com/unity3d/player/q.class... processing com/unity3d/player/r.class...
> processing com/unity3d/player/s.class... processing
> com/unity3d/player/s.class... processing
> com/unity3d/player/s.class... processing
> com/unity3d/player/s.class... processing
> com/unity3d/player/t.class... processing com/unity3d/player/u.class...
> processing com/unity3d/player/v.class... processing
> com/unity3d/player/w.class... processing
> com/unity3d/player/w.class... processing
> org/fmod/FMODAudioDevice.class... processing org/fmod/a.class...
> processing archive plugins\.\admobunityplugin.jar... ignored resource
> META-INF/MANIFEST.MF processing
> com/admob/plugin/AdmobUnityPlugin.class... processing
> com/admob/plugin/IAdmobListener.class... processing
> com/admob/plugin/a.class... processing com/admob/plugin/b.class...
> processing com/admob/plugin/c.class... processing
> com/admob/plugin/d.class... processing com/admob/plugin/e.class...
> processing com/admob/plugin/f.class... processing
> com/admob/plugin/g.class... processing com/admob/plugin/h.class...
> processing com/admob/plugin/i.class... processing
> com/admob/plugin/j.class... processing com/admob/plugin/k.class...
> processing archive plugins\.\google-play-services.jar... ignored
> resource META-INF/ ignored resource META-INF/MANIFEST.MF ignored
> resource com/ ignored resource com/google/ ignored resource
> com/google/ads/ processing com/google/ads/AdRequest.class...
> processing com/google/ads/AdRequest$ErrorCode.class... processing
> com/google/ads/AdRequest$Gender.class... processing
> com/google/ads/AdSize.class... ignored resource
> com/google/ads/mediation/ processing
> com/google/ads/mediation/AbstractAdViewAdapter.class... processing
> com/google/ads/mediation/AbstractAdViewAdapter$zza.class... processing
> com/google/ads/mediation/AbstractAdViewAdapter$zzb.class... processing
> com/google/ads/mediation/Abstra<message truncated> </p> </body>
> </html>'

因为您的项目中有重复的 imports。可能有来自两个不同插件的两个名称不同的 .jar 文件,但它们的功能相同。

您应该检查 Assets/Plugins/Android/ 中的插件列表并确保它们是重复的。

如果您使用Google游戏服务/Google广告,请确保所有小包使用相同版本:

这对我有用(请在此处查看问题 https://github.com/googleads/googleads-mobile-unity/issues/299):

  1. 先导入Google Analytics插件,删除Assets/PlayServicesResolver/目录下的内容再导入AdMob插件

  2. 通过以下代码手动将分析添加为 Play 服务依赖项。可以将此代码添加到 AdMobDependencies.cs 文件或声明 Play 服务依赖项的新文件中。

    Google.VersionHandler.InvokeInstanceMethod( svcSupport, "DependOn", new object[] { "com.google.android.gms", "play-services-analytics", "LATEST" }, namedArgs: new Dictionary() { {"packageIds", new string[] { "extra-google-m2repository", "extra-android-m2repository"} } });

  3. 如果出现错误,退出Unity,移除项目Assets/Plugins/Android目录下的所有Play服务AAR,并移除"GoogleDependencyAdMobUnity.xml"和"GoogleAarExplodeCache.xml"中的文件"ProjectSettings" 文件夹并重新启动 Unity。

  4. 启动 Unity 并让 Play Services Resolver 重新导入适当的文件。

  5. 之后应该就可以了