首页 > 解决方案 > 将 XCFramework 添加到框架项目会出现错误:在框架模块中包含非模块化标头

问题描述

我们已经在我们的 iOS 应用程序中成功使用了ACRCloud iOS SDK。您只需下载它,将他们的 XCFramework 添加到您的项目中,然后将以下内容添加到您的桥接头中:

#import "ACRCloudConfig.h"
#import “ACRCloudRecognition.h"

我们现在需要将使用 ACRCloud 的代码移动到框架中。我收到一个错误。这就是我所做的:

  1. 在 Xcode 中选择 File > New > Project > iOS > Framework
  2. 将语言设置为 Swift 并创建它
  3. 将 ACRCloudSDK.xcframework 拖放到项目中
  4. 在 MyFramework.h 文件中,添加上面的导入语句 - 我知道框架不支持桥接头,所以这是应该添加它们的位置
  5. 在新的 Swift 文件中添加一个测试类 - 似乎这是必需的
class TestClass {
    var acrClient: ACRCloudRecognition?
}
  1. 使用命令 B 构建框架

结果:我收到以下错误:

/Users/Admin/Downloads/MyFramework/MyFramework/MyFramework.h:19:9:在框架模块“MyFramework”中包含非模块化标头:“/Users/Admin/Library/Developer/Xcode/DerivedData/MyFramework-gcmepfcyafmmyugjhujjgyybneuo/ Build/Products/Debug-iphonesimulator/include/ACRCloudRecognition.h'</p>

无法构建 Objective-C 模块“MyFramework”

我确认 MyFramework.h 文件位于 Build Phases > Headers > Public 中(项目中没有任何内容)。我还尝试将框架模块中的允许非模块化包含更改为是。完成这项工作需要什么?谢谢!

标签: iosxcodeframeworksxcframeworkacrcloud

解决方案


ACRCloud 的人得到了这个工作。这是我必须做的:

  1. 在 Xcode 中选择 File > New > Project > iOS > Framework
  2. 将语言设置为 Swift 并创建它
  3. 将 ACRCloudSDK.xcframework 拖放到项目中
  4. 在 Finder 中,打开 xcframework > ios-arm64_armv7 > Headers 并将这两个文件拖放到 xcframework 旁边的项目中
  5. 在 MyFramework.h 文件中,导入这两个头文件
#import "ACRCloudConfig.h"
#import “ACRCloudRecognition.h"
  1. 在您的框架目标的构建阶段,确保 ACRCloudSDK.xcframework 在 Link Binary With Libraries 中是必需的
  2. 展开 Build Phases 中的 Headers 部分并将头文件从 Private 移动到 Public

您现在应该能够毫无错误地构建框架并毫无问题地使用 ACRCloudRecognition。


推荐阅读