美文网首页
iOS库的使用

iOS库的使用

作者: 我是小胡胡分胡 | 来源:发表于2018-07-27 10:41 被阅读59次

    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 这个地址配置

    相关文章

      网友评论

          本文标题:iOS库的使用

          本文链接:https://www.haomeiwen.com/subject/tyywmftx.html