Android Resolving Android Dependencies报错解决

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_NT"setlocalsetDIRNAME=%~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_EXE=java.exe%JAVA_EXE%-version >NUL 2>&1if"%ERRORLEVEL%"=="0"goto initecho.echoERROR: JAVA_HOME is notsetand no'java'command 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[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. set CMD_LINE_ARGS= set _SKIP=2 :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
  1. 重新导入

    再弹窗中再点击【reload】等待加载完成即可

三、方案二

3.1判断是否需要这些依赖

如果你的项目不包含广告功能(Unity Ads、IronSource、AdMob 等),这些依赖完全可以安全删除,删除后不影响正常功能。

3.2操作步骤

第 1 步:删除广告依赖的 XML 声明文件

这些 XML 文件告知 EDM4U 需要下载哪些依赖。删除它们后 EDM4U 就不再尝试解析广告相关的依赖:
例如本项目实际删除的文件:Assets/LevelPlay/Editor/IronSourceSDKDependencies.xml
如果项目中还有其他广告依赖文件,一并删除,
常见位置包括:

第 2 步:清空 Android Resolver 的已解析依赖记录

ProjectSettings/AndroidResolverDependencies.xml是 EDM4U 自动生成的文件,记录了之前已下载解析的所有依赖。删除 其中<packages><files>节点内的广告相关条目,或者直接删除整个文件让 EDM4U 重新生成。
本项目实际清理的内容:中删除了play-services-ads-identifierplay-services-basementmediation-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实用干货!