Unity游戏打包——打包常见报错(含Android、iOS)

本文由 NRatel 历史实操笔记整理而来,可能持续补充。

1、网络问题,Git报错: Empty reply from server

原因:网络问题,检查网络和vpn

解决:重试一次即可

2、网络问题,Git报错:Could not resolve host: xxxxx

原因:网络问题

解决:开启vpn (域名代理)/切换vpn 节点尝试

3、命令行启动Unity时报错:'Library/SourceAssetDB' with error 28 No space left on device

原因:打包机存储空间不足?实际查看存储空间是足的,应该是其他问题。

解决:重启打包机即可解决,但一段时间后可能再次出现。

有一次,发现是启动Unity时闪退了,删除 Library 和 Temp 目录也不起作用。

最后,删除Assets下所有资源然后启动了。再加回资源就好了。

怀疑 unity 在资源导入时发生了什么死锁。

4、FileNotFoundError: [Errno 2] No such file or directory: '/Users/nratel/.jenkins/workspace/BuildApp_Android/NativeProject/XXXXX'

原因:未正常导出Unity工程为Android工程,且Unity没返回错误码,进入了下一步,导致报错。

正常情况下,一般有导出有错,Unity都会返回错误码使流程中断,但还有一些情况还是不会。

解决:检查是否有C#脚本报错(搜索关键字error)、证书是否过期(经常)、检查PlayerSettings设置是否不正确。

5、【安卓】* What went wrong:

Execution failed for task ':launcher:bundleReleaseResources'.

> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade

> AAPT2 aapt2-4.0.1-6197926-osx Daemon #0: Link timed out, attempting to stop daemon.

This should not happen under normal circumstances, please file an issue if it does.

Link timed out 原因不明,大概率网络问题,重试又可以了。

6、【安卓】* What went wrong:

Execution failed for task ':launcher:dexBuilderDebug'.

> java.lang.UnsupportedOperationException: This feature requires ASM7

原因:打完一次 release aab 包后,没有 gralde clean 就打 debug 包时偶现,

解决:启用打包 gralde clean 即可。

7、【安卓】FAILURE: Build failed with an exception.

* What went wrong:

Could not determine the dependencies of task ':launcher:compileDebugJavaWithJavac'.

> Could not resolve all dependencies for configuration ':launcher:debugRuntimeClasspath'.

> Could not determine artifacts for androidx.core:core:1.3.2

> Could not get resource 'https://dl.google.com/dl/android/maven2/androidx/core/core/1.3.2/core-1.3.2.aar'.

> Could not HEAD 'https://dl.google.com/dl/android/maven2/androidx/core/core/1.3.2/core-1.3.2.aar'.

> Remote host closed connection during handshake

* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 30s

原因:公司网络/vpn问题,不能解析下载路径的域名。

解决:当前vpn使用全局代理(网卡),但不使用域名全代。

8、报错:Error building Player: BuildFailedException: You must run `HybridCLR/Installer` after upgrading package

原因:更新 HybridCLR后,未在打包机执行 Install。

注意,把安装内容 HybridCLRData/LocalIl2CppData-OSXEditor 提交到git,防止重打包时被git清空。

9、【安卓】报错

FAILURE: Build failed with an exception.

* What went wrong:

Execution failed for task ':launcher:processDebugResources'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > AAPT2 aapt2-4.0.1-6197926-osx Daemon #1: Unexpected error during link, attempting to stop daemon. This should not happen under normal circumstances, please file an issue if it does.

原因:将安卓 Target API Level 从33提升为34导致。

解决:解决:android sdk、build-tools、gralde、gradle-plugin、jdk、ndk..,都要装成匹配的版本。

10、【安卓】导出工程时报错

原因,将不同Gradle project template version 的unity导出到同一目录所致,应该先清理后再导出。可能发生在分支切换时。

11、Unity 打开新项目,或清除 Library 后重打包时,执行命令卡住不动。

卡死在 AssemblyUpdater.exe update -a 时。

参考:

Assembly updater 导致新工程 importing 卡死的问题 - 技术专栏 - Unity官方开发者社区

https://docs.unity3d.com/cn/2020.3/Manual/EditorCommandLineArguments.html

解决:在 unity 命令行调用时,增加 -disable-assembly-updater

12、【iOS】报错:error: "Unity-iPhone" requires a provisioning profile. Select a provisioning profile in the Signing & Capabilities editor. (in target 'Unity-iPhone' from project 'Unity-iPhone')

解决:在取得正式证书之前,先使用 Automatically Sign 方式

先在导出项目上手动设置Team,

然后查看 project.pbxproj(项目名.xcodeproj-> 右击显示包内容 -> project.pbxproj

),可知 TeamId

13、【iOS】警告 warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.4.99. (in target 'Unity-iPhone' from project 'Unity-iPhone')

解决:在Unity中,将 Target minimum iOS Version 设为12

14、【iOS】报错:error: no such module 'FBSDKCoreKit' import FBSDKCoreKit

原因:facebook 使用 pod 管理依赖,打包时应使用 pod工作空间,而非原始xcode工程。

解决:更新 pod 并使用 pod 工作空间构建。

15、【iOS】报错:xcodebuild: error: The flag -archivePath is required when specifying -exportArchive.

原因:当执行xcodebuild -exportArchive 时,必须指定 -archivePath、-exportPath。

建议:在xcodebuild archive 和 xcodebuild -exportArchive 都显示指定 -archivePath。

在xcodebuild -exportArchive 时,也显示指定 -exportPath。

虽然 xcodebuild archive 时,可以不指定生成位置,默认生成在:

~/Library/Developer/Xcode/Archives/日期/时分.xcarchive

如:~/Library/Developer/Xcode/Archives/2024-6-1/19.51.xcarchive

15、【iOS】报错:xcodebuild: error: The flag -exportOptionsPlist is required when specifying -exportArchive.

原因:当执行xcodebuild -exportArchive 时,必须指定 -exportOptionsPlist。

由 -exportOptionsPlist 指定的 .plist文件其内容可以填写内容,见 xcodebuild -h。

对于 development 的 .plist 暂只指定以下项:

method: development

signingStyle: automatic

teamID: xxxxxxxxxx (xocode上的非开发者账号)

对于 出正式包:指定以下项:

method: app-store

compileBitcode: true

uploadBitcode: true

uploadSymbols: true

signingStyle: automatic

provisioningProfiles:

<key>provisioningProfiles</key>

<dict>

<key>com.yourcompany.yourapp</key> <string>YourProvisioningProfileName</string>

</dict>

注意,xcodebuild -exportArchive 无需指定 -workspace、-scheme -configuration

16、【iOS】报错:error: No profiles for 'com.xxx.xxx' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.xxx.xxx'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild. (in target 'Unity-iPhone' from project 'Unity-iPhone')

原因:更换了包名,报错。这个包名未注册到指定的Team中。

解决:使用运营给的 包名、签名文件

17、【iOS】报错:error: Provisioning profile "xxxxxxxxx" doesn't include the currently selected device "xxx的MacBook Pro" (identifier 00006000-001A498C1432801E). (in target 'Unity-iPhone' from project 'Unity-iPhone')

在xcode 中直接 Product archive 可以成功,

但在相同情形下,执行以下命令行却失败

xcodebuild archive -workspace Unity-iPhone.xcworkspace -scheme Unity-iPhone -configuration Debug

原因:两者的 -destination 和 -configuration 不一致,

在 -destination 为本机mac 时,若签名不包含本机id 则报此错。

若有需要,应让运营添加执行 mac id 重新生成证书。

解决:设置正确的 -destination 和 -configuration。

18、【iOS】报错:error: exportArchive: No "iOS App Development" profiles for team 'XXX TECHNOLOGY CO., LIMITED' matching 'xxxxxxxxxxxx' are installed.

原因:optionsPlist 配置错误。

解决:正确的包含:method、signingStyle、teamID、provisioningProfiles。

19、【iOS】报错: error: Provisioning profile "xxxxxxxxxxxx" doesn't include signing certificate "Apple Development: xxxx (xxxxxxx)". (in target 'Unity-iPhone' from project 'Unity-iPhone')

原因:在Unity 中指定的与 archive 时指定的不一致了。

解决:修改打包脚本,统一在Unity中指定。

20、【iOS】报错:xcodebuild: error: 'Unity-iPhone.xcworkspace' does not exist.

排查:

  1. 确保 EDM4U 中导出类型为 pod工程
  2. 确保导出和初始化pod工程顺利。 打包日志中搜索"pod"

Error running CocoaPods. Please ensure you have at least version 1.0.0. You can install CocoaPods with the Ruby gem package manager:

> sudo gem install -n /usr/local/bin cocoapods

> pod setup

'pod --version' returned status: 1

原因和解决:重装 brew,导致ruby和pod坏了,需重装。

最终确认 pod --version 正确即可。

21、【iOS】报错同上:xcodebuild: error: 'Unity-iPhone.xcworkspace' does not exist.

搜索 pod查看,发现 timeout。 使用命令行进入工程目录 手动执行 pod install 同样如此。

原因是:新接了一些sdk后,需要重新下载这些库,但因网络问题无法下载,开启vpn 或启用代理后解决。(可手动执行一次,后续无需重复下载)

运行时报错一:

Library not loaded: @rpath/FBAEMKit.framework/FBAEMKit

解决:(Facebook Dependencies.xml 添加 addToAllTargets="true" 到每行):

https://github.com/facebook/facebook-sdk-for-unity/issues/659

运行时报错二:

2024-06-06 21:33:27.747087+0800 LegendsMatch[7234:623209] *** Terminating app due to uncaught exception 'GADInvalidInitializationException', reason: 'The Google Mobile Ads SDK was initialized without an application ID. Google AdMob publishers, follow instructions at https://googlemobileadssdk.page.link/admob-ios-update-plist to set a valid application ID. Google Ad Manager publishers, follow instructions at https://googlemobileadssdk.page.link/ad-manager-ios-update-plist.'

原因:Admob 在PListProcessor.cs 中指定GADApplicationIdentifier,但写死了一些依赖的文件路径。这是自己整理目录产生的问题。

解决:注意最好,保持 Admob 导入的原始目录。

相关推荐
SmalBox1 天前
【渲染管线】UnityURP中[渲染路径]选择‌
unity·渲染
陈小峰_iefreer1 天前
使用Stone 3D快速制作第一人称视角在线小游戏
游戏引擎·元宇宙·three.js·web3d
Glunn2 天前
记住密码管理器
unity
阿阳微客2 天前
CSGO搬砖项目详解:从装备选择到市场策略
笔记·学习·游戏
Deepsleep.2 天前
吉比特(雷霆游戏)前端二面问题总结
前端·游戏
17岁的勇气2 天前
Unity Shader unity文档学习笔记(二十一):几种草体的实现方式(透明度剔除,GPU Instaning, 曲面细分+几何着色器实现)
笔记·学习·unity
EQ-雪梨蛋花汤2 天前
【Unity&AS】Unity & Android Studio 联合开发快速入门:环境配置、AAR 集成与双向调用教程
unity·游戏引擎·android studio
Glunn2 天前
UI弹出动画
ui·unity
淡海水2 天前
【URP】Unity Shader Tags
unity·游戏引擎·渲染·shader·tag·urp