为模拟器构建应用程序时排除 *.a 文件

Posted

技术标签:

【中文标题】为模拟器构建应用程序时排除 *.a 文件【英文标题】:Exclude *.a file when building the app for simulator 【发布时间】:2021-07-20 12:39:20 【问题描述】:

目前,我在项目中使用的其中一个库存在问题,它根本不允许我为 ios 模拟器进行构建。

收到以下错误消息: 为 iOS 模拟器构建,但链接库 '!@#$%^&.a' 是为 iOS 构建的。

在我的课堂上,我有以下代码:

#if (TARGET_IPHONE_SIMULATOR==0)
void !@#$%^&_init(void);
#endif

我尝试在为 iPhone 模拟器构建应用程序时排除该文件,方法是将其添加到 Build Settings > Build Options > Excluded Source File Names > Any iOS Simulator SDK

我还尝试排除以下架构:arm64、arm64e 和 armv7。

将 Build Active Architecture Only 设置为 YES,对我没有任何作用,也没有验证构建产品或验证工作空间。

实际上,上述解决方案都不适合我,所以我不得不在这里问这个问题。

【问题讨论】:

【参考方案1】:

作为一种解决方法,您应该能够在文件/项目设置下将构建系统更改为“旧版构建系统”。 正确的解决方案是将您的库打包为 XCFramework。

【讨论】:

这个对我也不起作用,我试过了 尝试“旧版构建系统”或创建 XCFramework 或两者兼而有之? 尝试遗留构建系统

以上是关于为模拟器构建应用程序时排除 *.a 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Eclipse 中构建可执行 jar 时如何排除属性?

为 iOS 构建,但在为 iOS 模拟器构建的目标文件中链接,用于架构 arm64

由于 CoreData 无法创建构建:应用程序中没有核心数据时 API 滥用,并且应用程序为所有模拟器构建

如何从代码覆盖率伊斯坦布尔记者中排除模拟文件

为android构建应用程序时用于cameraview的多个文件反应本机

iOS - 从发布版本中排除测试文件