首页 > 解决方案 > 架构 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命令来显示您的静态库支持的架构。

标签: iosxcodeipadcocoapods

解决方案


您尝试链接的框架不包含 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 或更高版本)并重建。


推荐阅读