绝地反击!Flutter跨平台开发Pod install出现Undefined symbol报错的终极解决方法
2023-10-04 21:36:14
在 M1 Mac 上解决 Pod 安装的 Undefined Symbol 报错
在 Flutter 混合开发项目中,使用 Pod 管理 iOS 依赖库是必不可少的。然而,在使用 Pod 时,您可能会遇到令人头疼的报错:Undefined symbol: _OBJC_CLASS_$_xxx
。
原因:找不到头文件或库文件
此错误通常是由于找不到相应的头文件或库文件引起的。在以前,解决此错误的方法通常是重新引用文件,然后再次运行 pod install
。但是,如果您使用的是 M1 Mac,您可能会发现所有的 Pod 引用文件都报错,无法找到相应的文件。这是因为 M1 Mac 的架构与 Intel Mac 不同,需要更改 Pod 的运行构建设置才能解决这个问题。
解决步骤
以下是解决 M1 Mac 上 Pod 安装时出现的 Undefined symbol 报错问题的详细步骤:
1. 修改 Compile Sources
在 Xcode 项目中,打开 Build Settings,找到 Compile Sources,将 Pod 的引用文件添加到其中。
$(inherited)
# Pods for PodsExample
- $(SRCROOT)/Pods/Headers/Public/Headers/Firebase.h
2. 修改 Header Search Paths
在 Build Settings 中,找到 Header Search Paths,将 Pod 的头文件路径添加到其中。
$(inherited)
# Pods for PodsExample
- $(SRCROOT)/Pods/Headers/Public
3. 修改 Linking
在 Build Settings 中,找到 Linking,将 Pod 的静态库添加到 Other Linker Flags 中。
$(inherited)
# Pods for PodsExample
- $(SRCROOT)/Pods/Firebase/Firebase.framework/Firebase
4. 修改 Static Libraries
在 Build Settings 中,找到 Static Libraries,将 Pod 的静态库添加到其中。
$(inherited)
# Pods for PodsExample
- $(SRCROOT)/Pods/Firebase/Firebase.framework
5. 修改 Framework Search Paths
在 Build Settings 中,找到 Framework Search Paths,将 Pod 的框架路径添加到其中。
$(inherited)
# Pods for PodsExample
- $(SRCROOT)/Pods/Firebase/Firebase.framework
6. 重新 Pod install
完成以上步骤后,重新运行 pod install
,此时错误应该已经消失了。
7. 清理项目
在重新运行 pod install
后,建议您清理一下项目,以确保一切正常。
通过以上步骤,您应该就可以解决 M1 Mac 电脑上 Pod 安装时出现的 Undefined symbol 报错问题了。希望对您有所帮助!
常见问题解答
1. 我已经按照步骤操作了,但仍然出现 Undefined symbol 错误怎么办?
请检查您是否正确更改了所有构建设置。确保您已将 Pod 的引用文件、头文件路径、静态库和框架路径添加到相应的字段中。
2. 为什么 M1 Mac 上的 Pod 构建设置与 Intel Mac 不同?
M1 Mac 使用的是 ARM 架构,而 Intel Mac 使用的是 x86_64 架构。这两种架构对库和头文件的处理方式不同,因此需要不同的构建设置。
3. 我可以用其他方法解决 Undefined symbol 错误吗?
另一种解决方法是手动将 Pod 的文件添加到您的项目中。但是,这需要更多的工作,并且在更新 Pod 时可能更难维护。
4. Undefined symbol 错误是否会影响我的应用程序?
是的,Undefined symbol 错误将阻止您的应用程序运行。
5. 如何避免 Undefined symbol 错误?
始终确保您使用最新版本的 Pod,并保持 Podfile 和 Podfile.lock 文件更新。此外,如果您使用的是 M1 Mac,请按照上述步骤配置您的构建设置。