我正在重构我在XCode中生成的代码,以便拥有一定数量的静态库,我可以将这些代码分发给我的合作伙伴。
我在使用Apple教程中建议的静态库时没有任何问题,它们展示了如何使用库将静态库用作项目的子项目。
但是,在新项目中使用生成的目标文件(.a)和相应的头文件(.h)时遇到问题。
假设我有一个带有标题lib.a
的库f1.h
。我要做的是在新项目中创建一个新文件夹F
并将F
lib.a
文件和包含include
的文件夹f1.h
复制到其中:
- PROJECT
storyboard.storyboard
/project
/images.xcassets
/Supporfing Files
...
/libs
lib.a
/include
/lib
f1.h
我有这些问题:
标题文件位于#import f1.h
而不是#import lib/f1.h
如果我在故事板中直接使用静态库中实现的视图控制器,则应用程序失败,但是如果我创建一个新的ViewController扩展lib中的一个并在故事板中使用后者,那么一切正常细
在应用程序中使用静态库不应该这么困难,所以我显然做错了。您有任何建议的工作流程和设置吗?
谢谢。
答案 0 :(得分:0)
如果您没有相应的Xcode静态库项目和源,则可以使用标头和二进制静态存档,如下所示:
您的文件夹结构应如下所示:
$(LIBRARIES)/release-iphoneos
libA.a
libF.a
/include
/A
a1.h
/F
f1.h
发布配置(或所有其他)的标头搜索路径应包含以下路径:
$(LIBRARIES)/release-iphoneos/include
iOS(非模拟器)的图书馆搜索路径应包含
$(LIBRARIES)/release-iphoneos
其中libA.a
和libF.a
是包含armv7,armv7s和arm64的通用二进制文件。
您还可以为模拟器设置库:只需获取Simulator的二进制文件(i386或可能是通用的i386 + x86_64)并相应地设置库和标题搜索路径。 (注意,您可以在Build Settings编辑器中明确设置每个配置和体系结构的头和库搜索路径。)
您可以按如下方式导入标题:
#import <F/f1.h>
如果您拥有 Xcode静态库项目(和源代码),只需按照官方文档中的说明使用并构建静态库。