ios - 架构 i386 的未定义符号,仅在 iPad 模拟器上
问题描述
在我的项目中有一个通过CocoaPods导入的名为JPush的框架。
iPhone 设备和 iPhone 模拟器上的一切都很好。但是当我切换到 iPad 模拟器时,编译器一直在抱怨以下内容(我没有在 iPad 设备上尝试,因为我没有任何 iPad)。
我收集了所有 iOS 设备架构
arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Air| iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4
32-bits processor:
simulator: i386
real device: armv7 or armv7s
64-bits processor:
simulator: x86_64
real device: arm64
因此,当您遇到相同的错误时,请尝试使用file FILENAME
命令来显示您的静态库支持的架构。
解决方案
您尝试链接的框架不包含 i386 切片:
libjpush-ios-3.0.9.a: Mach-O universal binary with 4 architectures: [arm_v7:current ar archive] [arm64]
libjpush-ios-3.0.9.a (for architecture armv7): current ar archive
libjpush-ios-3.0.9.a (for architecture armv7s): current ar archive
libjpush-ios-3.0.9.a (for architecture x86_64): current ar archive random library
libjpush-ios-3.0.9.a (for architecture arm64): current ar archive
不过,它确实包含一个 x86_64 切片。选择 64 位 iOS 设备进行模拟(iPhone 5S 或更高版本)并重建。
推荐阅读
- docker - Docker容器中的Docker golang客户端
- c++ - 基本 C++ / 阈值化和过滤图像
- github - GitHub页面自定义域我按要求做了:(
- python - 如何在为现有 df 创建新列时摆脱 settingWithCopyWarning
- macos - 在 Automator 中使用“运行 Shell 脚本”时无法定义变量
- java - 如何在java中单独忽略JSON字段
- sql - SQL 与 groupby 函数的混淆
- excel - 使用 excel 2010 VBA,子程序没有在行后运行:Sheets("Sheet1").Range("A4:AL60").Clear。这可以解决吗?
- excel - 允许用户选择“打印 PDF”的保存文件路径
- sql - 逗号分隔的行值列表