1, framework-动态库
YY的库 是 framework 库。
mach-o类型是 Dynamic Library
也就是动态库。
iOS的沙盒机制, 不可能像系统一样使用动态共享库, 其它APP不可能共同访问同一个自己实现的库。
正确的使用方法是:
1、 将framework库文件夹 拷贝到项目目录下
2、 拖拽到 General-》Embedded Binaries 下面;
改动做,自动完成几件事情:
1,Linked Frameworks and Libraries 下面也自动被引入了
2,Build Settings-> Search Paths-》Framework Search Paths 也自动引入了
$(PROJECT_DIR)/projectname 这个地址配置
项目中可以用尖括号导入头文件;
3, 我们完全可以像使用.a静态库一样, Build Settings-> Search Paths -》 User Header Search Paths , 配置为 xxx.framwork/Headers这个地址,则项目中就可以使用双引号导入头文件。
3、 编译运行后, APP安装包YYDynamicLibraryFrameworkUse.app中,YYKit.framework库已经被拷贝进去了, 在YYDynamicLibraryFrameworkUse.app-》Frameworks目录下面。
这实质上是 沙盒内的动态共享库。
以上操作要点是: Embed Frameworks 配置项, 将库拷贝到资源包目录下中, 便于app在运行中,找到动态链接库。
如果不拷贝,那么仍然能通过编译。 但是, 在启动APP过程中,就会报错:
dyld: Library not loaded: @rpath/YYKit.framework/YYKit
Reason: image not found
用file命 令 可以查看framework包中到底是动态库还是静态库
framework包--静态库:
Mach-O universal binary with 4 architectures:
[i386:current ar archive random library]
[arm64:current ar archive random library]
framework包---动态库
Mach-O 64-bit dynamically linked shared library x86_64
.a----静态库
Mach-O universal binary with 2 architectures:
[i386:current ar archive random library]
[x86_64:current ar archive random library]
2、 framework-静态库
1、 将framework库文件夹 拷贝到项目目录下
2、 拖拽到 General-》Linked Frameworks and Libraries 下面;
改动做,自动完成几件事情:
1,Build Settings-> Search Paths-》Framework Search Paths 也自动引入了
$(PROJECT_DIR)/projectname 这个地址配置
3、 Build Settings-> Search Paths -》 User Header Search Paths 需要手动拖拽,将framework包路径拖拽进来
"$(SRCROOT)/useframework/ffnetworkingFramework.framework"
否则编译报错;
Lexical or Preprocessor Issue Group
Include of non-modular header inside framework module 'ffnetworkingFramework.RACSignal_retryinterval'
Include of non-modular header inside framework module 'ffnetworkingFramework.FFNetwoking':
Could not build module 'ffnetworkingFramework'
同样, Build Settings-> Search Paths -》 User Header Search Paths , 配置为 xxx.framwork/Headers这个地址,则项目中就可以使用双引号导入头文件。
4、 编译运行后, APP安装包 .app中, 不存在Frameworks目录, 因为并没有embed 把库嵌入到资源包中。 因为是静态库, 库已经打包到可执行程序中了。
3、 .a-静态库
1、 将.a库 拷贝到项目目录下
2、 拖拽到 General-》Linked Frameworks and Libraries 下面;
改动做,自动完成几件事情:
1,Build Settings-> Search Paths-》Library Search Paths 也自动引入了
$(PROJECT_DIR)/projectname 这个地址配置
网友评论