在 Xcode 上构建 iOS 时 firebase 出错

Error with firebase while building on Xcode for iOS

我在 xcode 中构建应用程序时遇到了一些问题,但在 Unity 中构建到 android 工作正常。我搜索了所有内容,none 其他解决方案帮助我完成了构建。我没有使用任何 pods 只是将目标切换到 iOS,签名并尝试构建。 xcode 给我的错误是这样的:

仅显示最近的错误

使用配置 ReleaseForRunning 构建项目 Unity-iPhone 的目标 UnityFramework 警告:不推荐使用 OpenGLES。考虑迁移到 Metal。 (在项目 'Unity-iPhone' 的目标 'UnityFramework' 中)

Ld /Users/schrodingerlab/Library/Developer/Xcode/DerivedData/Unity-iPhone-cznkgmrdhbgorsbwisensbubkxok/Build/Products/ReleaseForRunning-iphoneos/UnityFramework.framework/UnityFramework 正常(在项目 'Unity-iPhone' 的目标 'UnityFramework' 中) CD /Users/schrodingerlab/Thermomix_40/buildenios6 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -target arm64-apple-ios12.0 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk -L/Users/schrodingerlab/Library/Developer/Xcode/DerivedData/Unity-iPhone-cznkgmrdhbgorsbwisensbubkxok/Build/Products/ReleaseForRunning-iphoneos -L/Users/schrodingerlab/Thermomix_40/buildenios6/Libraries -L/Users/schrodingerlab/Thermomix_40/buildenios6/Libraries/com.ptc.vuforia.engine/Vuforia/Plugins/iOS -L/Users/schrodingerlab/Thermomix_40/buildenios6/Libraries/Plugins/iOS/Firebase -F/Users/schrodingerlab/Library/Developer/Xcode/DerivedData/Unity-iPhone-cznkgmrdhbgorsbwisensbubkxok/Build/Products/ReleaseForRunning-iphoneos -F/Users/schrodingerlab/Thermomix_40/buildenios6/Frameworks/com.unity.ads/Plugins/iOS -F/Users/schrodingerlab/Thermomix_40/buildenios6/Frameworks /com.ptc.vuforia.engine/Vuforia/Plugins/iOS -filelist /Users/schrodingerlab/Library/Developer/Xcode/DerivedData/Unity-iPhone-cznkgmrdhbgorsbwisensbubkxok/Build/Intermediates.noindex/Unity-iPhone.build/ReleaseForRunning-iphoneos/UnityFramework.build/Objects-normal/arm64/UnityFramework.LinkFileList -install_name @rpath/UnityFramework .framework/UnityFramework -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -map -Xlinker /Users/schrodingerlab/Library/Developer/Xcode/DerivedData/Unity-iPhone-cznkgmrdhbgorsbwisensbubkxok/Build/Intermediates.noindex/Unity-iPhone.build/ReleaseForRunning-iphoneos/UnityFramework.build/UnityFramework-LinkMap-normal-arm64.txt -dead_strip -Xlinker -object_path_lto -Xlinker /Users/schrodingerlab/Library/Developer/Xcode/DerivedData/Unity-iPhone-cznkgmrdhbgorsbwisensbubkxok/Build/Intermediates.noindex/Unity-iPhone.build/ReleaseForRunning-iphoneos/UnityFramework.build/Objects-normal/arm64/UnityFramework_lto.o -fembed-bitcode-marker -stdlib=libc++ -fobjc-arc -fobjc-link- runtime -lc++ -weak_framework CoreMotion -weak-lSystem -liPhone-lib -framework Security -framework MediaToolbox -framework CoreText -framework AudioToolbox -weak_framework AVFoundation -framework AVKit -framework CFNetwork -framework CoreGraphics - framework CoreMedia -weak_framework CoreMotion -framework CoreVideo -framework Foundation -framework OpenAL -framework OpenGLES -framework QuartzCore -framework SystemConfiguration -f框架 UIKit -liconv.2 -lil2cpp -framework UnityAds -lVuforiaWrapper -framework Vuforia -lFirebaseCppMessaging -lFirebaseCppAnalytics -lFirebaseCppApp -framework AdSupport -framework CoreTelephony -framework StoreKit -framework CoreLocation -weak_framework Metal -weak_framework GameController -weak_framework UserNotifications -Xlinker -no_adhoc_codesign -Xlinker -dependency_info -Xlinker /Users/schrodingerlab/Library/Developer/Xcode/DerivedData/Unity-iPhone-cznkgmrdhbgorsbwisensbubkxok/Build/Intermediates.noindex/Unity-iPhone.build/ReleaseForRunning-iphoneos/UnityFramework.build/Objects-normal/arm64/UnityFramework_dependency_info.dat -o /Users/schrodingerlab/Library/Developer/Xcode/DerivedData/Unity-iPhone-cznkgmrdhbgorsbwisensbubkxok/Build/Products/ReleaseForRunning-iphoneos/UnityFramework.framework/UnityFramework

架构 arm64 的未定义符号: “OBJC_CLASS$_FIRConfiguration”,引用自: libFirebaseCppApp.a(log_ios_dd26aec5b8537064a4c15d38b58b4640.o) 中的 objc-class-ref “OBJC_CLASS$_FIRMessaging”,引用自: libFirebaseCppMessaging.a(messaging_231c52c311096cfce13e67fa91eb9ac5.o) 中的 objc-class-ref “OBJC_CLASS$_FIRApp”,引用自: libFirebaseCppApp.a(app_ios_814e1620d4f88024cea4bade26623a67.o) 中的 objc-class-ref “OBJC_CLASS$_FIROptions”,引用自: libFirebaseCppApp.a(app_ios_814e1620d4f88024cea4bade26623a67.o) 中的 objc-class-ref “_MuskGetLocaleRegion”,引用自: _DeviceCountryProvider_Awake_mEE95CC492427159A08D423192B51472917D33011 在汇编中-CSharp2.o _DeviceCountryProvider_MuskGetLocaleRegion_mDEF69019B1CC4B23AAB2F05C013AAD759104CA9C 在汇编中-CSharp2.o (也许你的意思是:_DeviceCountryProvider_MuskGetLocaleRegion_mDEF69019B1CC4B23AAB2F05C013AAD759104CA9C) ld:未找到体系结构 arm64 的符号 clang:错误:linker 命令失败,退出代码为 1(使用 -v 查看调用)

构建失败 17/3/21,19:41 151.1 秒

我想我的 arm64 库有一个错误提示,我尝试手动包含它,但仍然得到 MuskGetLocaleRegion。

感谢您的宝贵时间!

看起来您确实跳过了 Unity 中的 CocoaPods 步骤,或者您禁用了 Firebase Unity SDK 的一些核心功能。也有可能您 运行 遇到了将 Firebase 与其他库混合使用的问题。我会给你一些快速调试技巧,以及如果问题更大,如何提交错误报告。

首先,由于这是一个新项目,请确保您的 Firebase Unity SDK 是 updated to the latest (currently 7.1.0)。

接下来,您需要确保 CocoaPods 安装正确。这应该会自动发生,但您不妨检查一下。如果您键入 pod,您应该会看到除“未找到命令”之外的一些输出。如果没有,您可以随时导航到“Assets>External Dependency Manager>iOS Resolver>Install Cocoapods”来执行此操作:

您也可以选择在 this guide 之后直接安装 CocoaPods。最后,我们确实发现有时 CocoaPods 需要 uninstalling/reinstalling 进行某些 OS 升级(特别是移动到 Catalina)。这可能不适用,但如果您 运行 继续遇到问题,您可以尝试卸载。

Firebase 将正确的 Pod 文件与构建的 Unity 游戏相关联的机制称为 "External Dependency Manager for Unity" (EDM4U)。可能值得打开“iOS Resolver Settings”(在您找到“Install Cocoapods”的同一菜单中)并重置为默认值。为方便起见,我附上了设置页面的屏幕截图:

由于您之前 运行 遇到过问题,现在是删除之前生成的项目的好时机。然后,您可以从“构建设置”window 中单击“构建并 运行”。 Unity 应该生成你的 xcodeproj,生成一个 Podfile,使用 Podfile 生成一个 xcworkspace,然后为你打开 xcworkspace。

从这里构建和 运行ning 应该可以。

有时人们仍然 运行 陷入困境。这里有一些移动部分:Unity 版本、Cocoapods 版本、Firebase 版本和依赖管理器版本,更不用说使用 EDM4U 或进行自己的自定义工作来集成的任何其他库(值得注意的是,我们已经看到几乎每个工具都可以“制作来自 Windows 的 iOS 构建失败。

因此,除了确保您的 Podfile 看起来与您从错误日志中 the iOS getting started guide, updating Cocoapods, and updating Firebase (do not follow the iOS guide, Unity is different enough that you should follow the Unity guide), you may want to follow up on the public issue tracker. When you do so, the first thing to do would be to verify that your setup works with the quickstart for the Firebase products you use (it looks like Messaging 所期望的大致相同之外?)。

  1. 打开终端window

  2. 转到项目文件夹并运行这个:

“广告连播更新”

  1. 然后关闭 re-open Xcode 工作区文件并构建它