Adding XCFramework to framework project gives error: Include of non-modular header inside framework module

Adding XCFramework to framework project gives error: Include of non-modular header inside framework module

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

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

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

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

结果:我收到以下错误:

/Users/Admin/Downloads/MyFramework/MyFramework/MyFramework.h:19:9: Include of non-modular header inside framework module 'MyFramework': '/Users/Admin/Library/Developer/Xcode/DerivedData/MyFramework-gcmepfcyafmmyugjhujjgyybneuo/Build/Products/Debug-iphonesimulator/include/ACRCloudRecognition.h’

Could not build Objective-C module ‘MyFramework'

我确认 MyFramework.h 文件在构建阶段 > Headers > Public(项目中没有任何内容)。我还尝试将 Allow Non-modular Includes In Framework Modules 更改为 Yes。使这项工作需要什么?谢谢!

ACRCloud 的工作人员完成了这项工作。这是我必须做的:

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

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