如何解决Unity Mediation引发的Android项目依赖冲突问题?
我在用Unity开发Android手游,安装Unity Mediation包时出现依赖冲突警告,导致Gradle插件因使用废弃命令无法正常工作,项目无法构建。具体错误日志如下:
Some conflicting dependencies were found. The following dependency versions were modified: com.unity3d.mediation:mediation-sdk:[1.0,2.0[ --> com.unity3d.mediation:mediation-sdk: [1.0,2.0[ com.unity3d.mediation:unityads-adapter:[1.0,2.0[ --> com.unity3d.mediation:unityads- adapter:[1.0,2.0[ UnityEngine.Debug:LogWarning (object) Google.Logger:Log (string,Google.LogLevel) GooglePlayServices.PlayServicesResolver:Log (string,Google.LogLevel) GooglePlayServices.GradleResolver/<>c__DisplayClass7_0:<GradleResolution>b__2 (GooglePlayServices.CommandLine/Result) GooglePlayServices.GradleResolver/<>c__DisplayClass7_1:<GradleResolution>b__9 () Google.RunOnMainThread:ExecuteNext () Google.RunOnMainThread/<>c:<ExecuteAll>b__24_0 () Google.RunOnMainThread:RunAction (System.Action) Google.RunOnMainThread:ExecuteAll () Google.RunOnMainThread:Run (System.Action,bool) GooglePlayServices.GradleResolver/<>c__DisplayClass7_0:<GradleResolution>b__8 (GooglePlayServices.CommandLine/Result) GooglePlayServices.CommandLineDialog/ProgressReporter:SignalComplete () GooglePlayServices.CommandLineDialog/ProgressReporter:CommandLineToolCompletion (GooglePlayServices.CommandLine/Result) GooglePlayServices.CommandLine/<>c__DisplayClass4_1:<RunAsync>b__1 () Google.RunOnMainThread:ExecuteNext () Google.RunOnMainThread/<>c:<ExecuteAll>b__24_0 () Google.RunOnMainThread:RunAction (System.Action) Google.RunOnMainThread:ExecuteAll () UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()
以下是具体解决思路:
强制指定具体依赖版本
勾选UnityPlayer Settings->Publishing Settings->Build中的Custom Main Gradle Template,打开生成的mainTemplate.gradle文件,添加版本强制配置:configurations.all { resolutionStrategy { force 'com.unity3d.mediation:mediation-sdk:1.9.0' force 'com.unity3d.mediation:unityads-adapter:1.9.0' } }选择[1.0,2.0)区间内的稳定具体版本,避免版本范围引发的冲突。
更新Google Play Services Resolver
在Unity Package Manager中搜索Google Play Services Resolver,更新至最新版本。旧版本的Resolver对Gradle兼容性较差,更新后能更高效处理依赖冲突。清理本地缓存
关闭Unity,删除项目根目录下的Library、Temp、obj文件夹,同时删除用户目录下的.gradle缓存文件夹(Windows:C:\Users\<用户名>\.gradle,macOS:~/Users/<用户名>/.gradle),重启Unity后尝试构建。排查第三方插件依赖
检查项目中其他广告、分析类插件(如AdMob、Firebase等)的依赖列表,查看是否存在与Unity Mediation冲突的依赖,移除重复或冲突的包。降级Gradle版本
若因Gradle版本过高导致废弃命令问题,修改mainTemplate.gradle中的Gradle插件版本:dependencies { classpath 'com.android.tools.build:gradle:4.2.2' }同时修改
gradle-wrapper.properties中的Gradle分发URL:distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
内容的提问来源于stack exchange,提问作者Louis Leblond

