最近我创建了一个名为“MLKit Framework”的 iOS 框架,它使用 MLKit 人脸检测库。为了实现这一点,我刚刚在 Podfile 中导入了库 根据文档。
正如预期的那样,创建了一个名为 MLKit Framework 的 xcworkspace。为了测试这个新框架,我创建了一个名为 MLKitApp 的应用程序,并将该应用程序添加到同一工作区。然后我将框架 MLKitFramework 添加到该应用程序并尝试构建它,但我收到错误语句:“缺少所需的模块‘MLKit’” 如下图所示。
为什么我会收到该错误?我做错了什么?
可重现的示例
我在这里创建了一个可重现的示例。为了执行该示例,请执行以下命令:
瞧
您检查过 ML Kit Vision Quickstart 吗?请注意,它包含两个应用程序:一个用于 swift,另一个用于 Objective-c。您可以根据您的目的检查swift应用程序 - 它包含面部检测功能。 Vision Quickstart 与 MLKitApp 类似,向您展示了如何直接与 ML Kit cocoapods 集成的示例,而无需引入“MLKitFramework”或手动管理依赖项配置。相反,您应该让 CocoaPods 来管理它。您可以使用此快速入门作为实现您自己的应用程序的模板。
我现在不知道这是否有帮助,但为了将来的参考,这里是:
Google 隐藏了标头,因此您必须手动指定要添加的标头,以便您的测试可以找到它。
如果您转到:
Project> targets YourProjectTest > Build Settings > Search Paths > Header Search Paths
并添加:
"${PODS_ROOT}/Path-to-the-Header-in-your-Pods-Folder/Soucers"
就我而言,是:
"${PODS_ROOT}/GoogleMLKit/MLKitCore/Sources"
这对我来说非常有用。
我希望它有帮助:)
您遇到的问题是 Google 决定隐藏主模块的 MLKit 标头造成的。要解决此问题,您可以选择单独导入独立库,而不是整体导入主模块。
要纠正这种情况,请将当前的导入(如
import MLKitFramework
或 import MlKit
)替换为您打算使用的特定模块。以下是如何修改导入的示例:
import MLKitCommon
import MLKitFaceDetection
import MLKitVision
...
除了解决您的问题之外,通过导入这些单独的模块,您还可以更好地控制和透明地控制项目中包含的 MLKit 组件。通过这种方式,您可以微调依赖项并确保仅包含必要的组件,从而可能减少应用程序的总体占用空间并避免冲突或隐藏标头。
你不能这样做,因为你的“MLKitFramework”依赖于 MLKit。
您应该另外将 MLKit 框架添加到 MLKitApp 中。