我最近开始使用配备 M1 芯片的 MacBook Pro,该芯片来自旧款 MacBook Pro,运行此应用程序没有任何问题。现在,当我尝试构建并运行我的应用程序时,我遇到以下问题:
'FirebaseCore/FirebaseCore.h' file not found
和
Could not build Objective-C module 'Firebase'
我尝试过的:
pod install --repo-update
这是我的 pod 文件:
# Uncomment the next line to define a global platform for your project
platform :ios, '14.0'
post_install do |pi|
pi.pods_project.targets.each do |t|
t.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '14.0'
end
end
end
target 'Pikit' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for Firebase
pod 'Firebase'
pod 'Firebase/Storage'
pod 'Firebase/Auth'
pod 'Firebase/Firestore'
pod 'Firebase/Functions'
pod 'Firebase/Analytics'
pod 'Firebase/Messaging'
pod 'Firebase/DynamicLinks'
pod 'FirebaseUI/Auth'
pod 'FirebaseUI/Email'
pod 'FirebaseUI/Google'
pod 'FirebaseUI/Facebook'
pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc
pod 'FirebaseUI/Phone'
# Other Podfiles
pod 'OnboardKit'
pod 'SDWebImage'
pod 'PureLayout'
pod 'IQKeyboardManagerSwift'
pod 'Google-Mobile-Ads-SDK'
end
如果有人仍然面临这个问题, 如果您已经清理了构建文件夹、删除派生数据、删除 pod.lock 和 pods 文件夹,我建议打开终端并
插入: pod 分解 && pod 安装
差异是由 deintegrate 调用引起的,它将删除构建阶段以及框架文件夹。
还要考虑: 使用 M1 芯片 MacBook,在为模拟器而非真实设备/MacBook 构建项目时,我也遇到了上述错误。
所有 Firebase 依赖项都应该在 M1 模拟器上运行。
如果某些依赖项在 M1 Macbook、arm64 模拟器上失败,请找到所需依赖项的 'libName'.xcframework,并确保它包含 'ios-arm64_x86_64-simulator' 文件夹,然后将其拖放到您的项目根目录(根据您的喜好复制或引用)。
如果构建时找不到依赖:
打开您的项目 在项目导航器中 => 找到您的目标 在“目标”列中 => 通用加密狗 => 滚动到 框架、库和嵌入内容并嵌入位于“请勿嵌入”中的库状态。
最好的方法是通过迦太基。
很高兴知道:如果想要的依赖项不包含所需的文件夹,仍然可以直接在 Github 上询问开发人员。
在我的例子中,我正在运行
.xcodeproj
文件,因此我的 Pod 没有同时运行。使用 .xcworkspace
文件加载项目和 Pod。
作为旁注,如果上述方法不起作用并且您是使用 Cordova 和 FirebaseX 的人,我用来解决问题的版本是 FirebaseX 8.0.1 和 Cordova IOS 5.0.1*
* (暂时即将弃用)
“仅构建活动架构”在其中发挥了作用。尝试更改此设置,看看是否有帮助。
将此添加到 podfile 的末尾。
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
end
使用 pod update 更新 Pod 使用 Cmd+sht+k 清理项目并开始构建
请执行以下操作。
rm -rf ~/Library/Developer/Xcode/DerivedData/
pod deintegrate
pod install
您刚刚在新下载的 macOS、Xcode 等上运行旧项目吗?此时,由于 Google Firebase 中的更改(与 Xcode、macOS 和 iOS 中的“更新”相比),可能会出现此问题。
快速回答:现代 Firebase 软件包不需要您在 Podfile 中导入 FirebaseCore,它只是附带的。然而,与其费尽心思地注释掉 import 语句并试图弄清楚它是如何工作的,还有更好的方法。
摆脱此问题的最简单、最好的方法是从使用 CocoaPods 依赖管理器切换到使用 Swift 包管理器 (SPM)。对于学习了整个行话的 CocoaPods 长期用户(像我一样)来说,这听起来可能没有吸引力,但 SPM 实际上对于 Google 的 Firebase 等常用依赖项来说相当简单。
首先,使用“pod deintegrate”命令从项目中卸载 CocoaPods。现在,无需重新安装它,而是转到 Google 的 Firebase 设置 Firebase 页面,然后转到使用 SPM 而不是 CocoaPods 的部分。 它非常简单,只需在 Xcode 中打开一个菜单并从 Firebase 中选择您想要的包即可。以下是说明:https://firebase.google.com/docs/ios/installation-methods#swift-package-manager
打开 Xcode 上的“文件”菜单 -> 选择“添加包”
然后将 Firebase 文档中提供的 URL/网站链接插入右上角的搜索栏中:
按“添加包”后,您将获得 Firebase 中可添加到项目中的包列表。要么添加文件中导入语句中显示的内容,要么使用终端从项目文件夹中打开 Podfile(“打开 Podfile”),然后阅读您之前编写的内容并找到它们。
您唯一找不到的是“FirebaseCore”(旧的书写方式是 Firebase/Core),这是因为它是任何 Firebase 包的一部分。事实上,如果您查看项目的 Pod,您会发现 FirebaseCore 就是其中一个文件。
您可能会遇到比这更多的问题,但大多数情况下,它只会检查您的项目错误并通过 Xcode 插入给定的解决方案。