繁体   English   中英

将 XCFramework 添加到框架项目会出现错误:在框架模块中包含非模块化 header

[英]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 文件中,添加上面的导入语句——我知道框架不支持桥接标头,所以这是应该添加的位置
  5. 在新的 Swift 文件中添加测试 class - 似乎这是必需的
class TestClass {
    var acrClient: ACRCloudRecognition?
}
  1. 使用命令 B 构建框架

结果:我收到以下错误:

/Users/Admin/Downloads/MyFramework/MyFramework/MyFramework.h:19:9: 在框架模块 'MyFramework' 中包含非模块化 header: '/Users/Admin/Library/Developer/Xcode/DerivedData/MyFramework-gcmepfcyafmmyugjhujjgyybneuo/构建/产品/调试-iphonesimulator/include/ACRCloudRecognition.h'

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM