Android Resolving Android Dependencies报错解决
Unity打包Android Resolving Android Dependencies卡死/失败解决方案前言很多Unity开发者在导出APK/AAB安卓安装包时会卡在Resolving Android Dependencies解析依赖这一步界面长时间加载、无响应甚至直接报错打包中断。一、Android打包卡住原因Resolving Android Dependencies即解析安卓依赖库是 Unity 安卓打包前由 EDM4U 工具自动执行的流程它会扫描项目各类 SDK 依赖配置、联网从 Maven 仓库下载 aar/jar 库并自动处理版本冲突以生成构建文件一旦流程中断就无法打包该工具默认会访问maven.google.com等海外远程仓库下载依赖在国内网络、公司防火墙等环境下常常出现访问超时、下载挂起的情况这也是打包卡在这一步最主要的原因。二、方案一学习了这个博主的解决方法https://blog.csdn.net/chenggong2dm/article/details/134603866是因为缺失gradlew.bat导致因此我们要在对应目录下创建这个bat文件之后再重新解析打包1.将下面的内容复制到gradlew.bat中if%DEBUG%echooff rem##########################################################################rem rem Gradle startup scriptforWindows rem rem##########################################################################remSetlocal scopeforthe variables with windows NT shellif%OS%Windows_NTsetlocalsetDIRNAME%~dp0if%DIRNAME%setDIRNAME.setAPP_BASE_NAME%~n0setAPP_HOME%DIRNAME% rem Add default JVM options here.You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.setDEFAULT_JVM_OPTS rem Find java.exeifdefined JAVA_HOME goto findJavaFromJavaHomesetJAVA_EXEjava.exe%JAVA_EXE%-version NUL 21if%ERRORLEVEL%0goto initecho.echoERROR: JAVA_HOME is notsetand nojavacommand could be found in your PATH.echo.echoPleasesetthe JAVA_HOME variable in your environment to match theecholocation of your Java installation.goto fail :findJavaFromJavaHomesetJAVA_HOME%JAVA_HOME:% set JAVA_EXE%JAVA_HOME%/bin/java.exe if exist %JAVA_EXE% goto init echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :init rem Get command-line arguments, handling Windows variants if not %OS% Windows_NT goto win9xME_args if %eval[22] 4 goto 4NT_args :win9xME_args rem Slurp the command line arguments. set CMD_LINE_ARGS set _SKIP2 :win9xME_args_slurp if x%~1 x goto execute set CMD_LINE_ARGS%* goto execute :4NT_args rem Get arguments from the 4NT Shell from JP Software set CMD_LINE_ARGS%$ :execute rem Setup the command line set CLASSPATH%APP_HOME%\gradle\wrapper\gradle-wrapper.jar rem Execute Gradle %JAVA_EXE% %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% -Dorg.gradle.appname%APP_BASE_NAME% -classpath %CLASSPATH% org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% :end rem End local scope for the variables with windows NT shell if %ERRORLEVEL%0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! if not %GRADLE_EXIT_CONSOLE% exit 1 exit /b 1 :mainEnd if %OS%Windows_NT endlocal :omega重新导入再弹窗中再点击【reload】等待加载完成即可三、方案二3.1判断是否需要这些依赖如果你的项目不包含广告功能Unity Ads、IronSource、AdMob 等这些依赖完全可以安全删除删除后不影响正常功能。3.2操作步骤第 1 步删除广告依赖的 XML 声明文件这些 XML 文件告知 EDM4U 需要下载哪些依赖。删除它们后 EDM4U 就不再尝试解析广告相关的依赖例如本项目实际删除的文件Assets/LevelPlay/Editor/IronSourceSDKDependencies.xml如果项目中还有其他广告依赖文件一并删除常见位置包括Assets/GoogleMobileAds/Editor/— AdMobAssets/UnityAds/Editor/— Unity AdsAssets/*/Editor/*Dependencies.xml— 任何以 Dependencies.xml 结尾的广告相关文件第 2 步清空 Android Resolver 的已解析依赖记录ProjectSettings/AndroidResolverDependencies.xml是 EDM4U 自动生成的文件记录了之前已下载解析的所有依赖。删除 其中packages和files节点内的广告相关条目或者直接删除整个文件让 EDM4U 重新生成。本项目实际清理的内容中删除了play-services-ads-identifier、play-services-basement、mediation-sdk这几条广告相关包files中删除了对应的.aar和.jar文件引用第 3 步删除已下载的广告 AAR/JAR 文件EDM4U 之前下载的广告原生库文件需要从Assets/Plugins/Android/中清除所有androidx.*.aar 文件这些是广告 SDK 的传递依赖没有广告 SDK 就用不到。第 4 步删除 EDM4U 本身可选但推荐如果项目完全不需要外部依赖管理可以删除 EDM4U 插件目录。Unity 会在下次打开项目时不再尝试解析依赖。常见目录名Assets/ExternalDependencyManager/、Assets/PlayServicesResolver/删除后重启 Unity确认不再出现 “Resolving Android Dependencies” 提示。注意事项如果操作后打包提示缺少某个库说明项目中某段代码实际引用了广告相关的 API。此时应检查代码移除对应的using。建议在操作前备份项目或提交 Git以便出错时回退。本专栏记录Unity新手小白的学习成长之路愿和大家一同钻研、共同进步。文章若有疏漏或错误欢迎各位大佬在评论区指正我会及时勘误优化。觉得内容对你有帮助不妨点个关注后续持续更新Unity实用干货