为iOS应用中的Xcode子项目或主项目添加第三方框架



我的Xcode项目"MyMainApp"有一个静态库类型的Xcode子项目"MyLib"。现在我需要在我的iOS应用程序中使用一些第三方iOS框架。我想添加/链接它们只针对MyLib,而不是针对MyMainApp,这样我就可以使MyLib可重用和自包含在我的其他iOS应用程序中使用它了。MyMainApp中的一些视图控制器使用MyLib的一部分视图控制器之一。MyLib中的视图控制器使用第三方框架中的类的功能。现在我面临的问题是,如果我将第三方框架添加到MyLib,而不将它们添加到MyMainApp,我会得到一个链接错误"词法或预处理问题"。XXX.h文件未找到"。如果我将框架添加到MyMainApp和MyLib,一切都很好,但这不是我想要的。我已经确保框架搜索路径和头搜索路径是正确的。在这种情况下,我找不到苹果的任何参考。我想知道添加/链接第三方框架和库到静态库类型的Xcode子项目的最佳实践。也有解决方案来克服链接器错误,并添加框架,只有静态库项目?

  1. 进入'Build Phases' for 'MyLib'
  2. 在"Copy Bundle resources"下添加"第三方iOS框架"
  3. 编译"MyLib"
  4. 从"MyMainApp"中删除"第三方iOS框架"
  5. 运行"MyMainApp"

您的库必须链接到它们,而使用您的库的应用程序必须链接到它们将它们包含在应用程序包中。应用程序负责满足依赖关系。

框架可以包含资源(比如给你带来问题的头文件),这是它们与库的主要区别之一。因此,库不能真正包含框架,即使它可以包含框架的二进制对象(代码)。

如果你的库被转换成一个框架,它可以包含其他框架,这可能满足你的需要。

我的Xcode项目"MyMainApp"有一个静态库类型Xcode子项目名为"MyLib"。现在我需要使用一些第三方iOS框架在我的iOS应用程序。我想添加/链接他们只针对MyLib而不是反对MyMainApp,所以我可以使MyLib可重用和在我的其他iOS应用中也可以使用它。

库不会将自己链接到其他库,它们只是单独构建到未链接的*.a二进制文件中。之后,应用程序(仅在那时)将把所有这些*.a文件和它自己的二进制文件链接在一起。

你是对的,虽然库应该保持模块化,不包括其他库代码或资源,以避免版本和兼容性问题。

现在我面临的问题是,如果我添加第三方框架只是MyLib,不把它们添加到MyMainApp,我得到一个链接错误"词法或预处理器问题。XXX.h文件未找到"。一切如果我将框架添加到MyMainApp和MyLib,则效果良好这不是我想要的。

您的应用程序正在间接尝试导入第三方标头之一。虽然您不需要引用第三方库代码,但您仍然需要访问其头文件进行编译。换句话说,你不需要添加第三方库到你的应用程序中,但你必须添加头文件或设置头搜索路径。

我想知道添加/链接第三方的最佳实践框架和库到一个静态类型的Xcode子项目图书馆。也有一个解决方案,以克服链接错误和添加框架只静态库项目?

没有简单的"原生"方式来处理库,它们的资源和对iOS的依赖,所以你应该看看CocoaPods。

相关内容

  • 没有找到相关文章

最新更新