gpt4 book ai didi

objective-c - 创建一个具有 objective c 框架依赖性的胖框架

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:12 26 4
gpt4 key购买 nike

我正在使用 Swift 4.2 和 Xcode 10.1。我正在尝试在 Swift 中构建一个框架,该框架依赖于用 Objective C 编写的 Alamofire。我手动添加了 Alamofire.xcodeproj,如 Alamofire 的 README 中给出的那样。个人目标构建良好。我的框架目标构建良好。

当我尝试使用使用以下命令的脚本创建胖框架时出现问题

xcodebuild -project "${FRAMEWORK_NAME}.xcodeproj" -scheme "${FRAMEWORK_NAME}" -configuration "${CONFIGURATION}" -arch arm64 -arch armv7 -arch armv7s only_active_arch=no BITCODE_GENERATION_MODE=bitcode defines_module=yes -sdk "iphoneos" -derivedDataPath "${OUTPUT_DIR}"

我收到以下错误:

umbrella header 'Alamofire.h' not found

could not build Objective-C module 'Alamofire'

错误的第二行来自依赖于 Alamofire 的另一个依赖项“Moya”(参见图片)
enter image description here

令人费解的是,正常的 Cmd+B 对于通常的目标工作正常,但 xcodebuild 失败。

我尝试过的事情:

  1. 删除派生文件夹,清理构建。
  2. 首先构建单独的依赖项,然后构建通用聚合目标。
  3. Creating a custom module map
  4. 将所有依赖项的配置更改为相同的,例如调试
  5. 将 Alamofire.xcodeproj 的 Swift 语言版本更改为 Swift 4.2

我认为 xcodebuild 命令需要更多输入。我错过了什么?

更新:

我进一步挖掘。 Headers 文件夹 Debug-iphoneos/Alamofire.framework/里面是空的,它应该包含伞头 Alamofire.h。

最佳答案

你试过这些吗:

1.在 Build Settings -> Linking -> Other Linker Flags 添加 -ObjC。

2.将 Objective C 框架所依赖的所有框架导入到您的项目中,即在 Build Phases --> Link Binary With Libraries 中。

3. 为那些添加#import 到前缀头文件,必须在 Prefix Header 字段的build设置中将其添加到您的项目。

更新:阐述第 3 点:

要在您的 Swift 项目中使用 Objective C Framework,您必须在该项目中创建一个 Swift Bridging Header 文件。最好的方法是手动创建 .h 文件。

首先,将头文件添加到项目中,名称为:MyProjectName-Bridging-Header.h。这将是单个头文件,您可以在其中导入任何需要 Swift 代码访问的 Objective C 代码。

在您的项目build设置中找到 Swift Compiler - Code Generation 部分。将路径添加到项目根文件夹中的 Objective C Bridging Header 旁边的桥接头文件。应该是MyProject/MyProject-Bridging-Header.h

它只需要一个桥接头。在该文件中输入 #import 语句,您的类将在您的 Swift 项目代码中可用,而无需任何额外的 #import 语句。

build settings

你也可以看看这个教程: Integrating objective c in swift

关于objective-c - 创建一个具有 objective c 框架依赖性的胖框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54303225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com