美文网首页Swift 相关程序员
iOS的Framework静态库

iOS的Framework静态库

作者: Jimmy木 | 来源:发表于2018-05-31 08:37 被阅读5次

    静态库VS动态库

    • 静态库不需要签名,动态库需要签名。
    你们的老婆叫你们点赞

    制作混编静态库

    • 库内部Swift调用OC的头文件
      Swift调用OC时,库里面不能使用bride桥接文件,需要将OC头文件加入到工程头文件中XFramework.h

    • 库内部OC调用Swift的头文件
      所有库内部编译的Swift头文件都在<XFramework/XFramework-Swift.h>里面,OC调用时导入头文件<XFramework/XFramework-Swift.h>

      #import <XFramework/XFramework-Swift.h>
      

      ⚠️Swift文件类的权限可以使用openpublic,扩展的权限使用public

      ⚠️Swift4.0的方法如果要在OC使用,必须手动添加@objc才能编译到<XFramework/XFramework-Swift.h>头文件中。最好对所有的Swift接口都加上@objc public

    • 对外提供访问文件:

      在库工程的Build PhasesHeaders里面管理头文件。

      供外部访问的OC文件加入到Public中。

      Swift文件建议都加入到Private中。Swift文件加入到Public后会对外开放源码。

    添加库:

    库可以直接使用.framework或者子工程添加。

    • 使用.framework

    • 使用子工程

    调用库文件:

    • 调用库的OC文件:

      OC头文件一般都在XFramework.h中:

      #import <XFramework/XFramework.h>
      

      Swift头文件一般都在<XFramework/XFramework-Swift.h>中:

      #import <XFramework/XFramework-Swift.h>
      
    • 调用库的Swift文件:

      有两种方式都可以。

      1. 一种是在本地bridge中添加头文件,另一种方式是。

        #import <XFramework/XFramework.h>
        #import <XFramework/XFramework-Swift.h>
        
      2. 在Swift中导入Framework

        import XFramework
        

    扩展问题

    需要在Targets的build setting选项下有Other linker flags的设置加上-Objc或者-all_load或者-force_load

    -all_load表示对所有库加上链接库。

    -force_load只对指定库加。

    -force_load $(SRCROOT)/XFramework.framework/XFramework
    

    Demo地址

    上传中...

    相关文章

      网友评论

        本文标题:iOS的Framework静态库

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