iOS11 Objective-C静态SDK无法在iOS14 Swift项目编译,iOS13正常,求设置方案
解决iOS 14+部署目标下静态.a库的链接对齐错误
试试这些不用修改SDK代码的设置调整方法:
关闭指针对齐检查
打开Xcode项目的Build Settings,找到Other Linker Flags,添加-Wl,-no_unaligned_access参数。这个参数会让链接器跳过arm64架构下的指针对齐检查,适配静态库中可能存在的非对齐指针实现。调整编译兼容选项
- 确认
Deployment Target已经设为iOS 14+; - 如果SDK包含Objective-C代码,在
Apple Clang - Language - Objective-C里把Weak References in Manual Retain Release设为YES; - 检查
Architectures设置为Standard Architectures (arm64, arm64e),避免架构不匹配引发的额外问题。
- 确认
修改库的链接依赖类型
进入Build Phases的Link Binary With Libraries,把静态.a库的依赖类型从Required改成Optional(前提是SDK不是App启动必需的)。注意这么改后,代码里调用SDK的地方要加容错判断,防止运行时崩溃。关闭Bitcode
如果项目开了Bitcode,在Build Settings里把Enable Bitcode设为NO。旧静态库大概率没编译Bitcode,iOS14+的Bitcode编译流程可能会触发这类对齐错误。
要是以上方法都不管用,可能就得找SDK提供商要适配iOS14+的版本了,但先把这些设置试一遍再说。
内容的提问来源于stack exchange,提问作者Avicii4ever
相关产品推荐
相关产品推荐

