iOS的Framework静态库
静态库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文件类的权限可以使用
open
和public
,扩展的权限使用public
。⚠️Swift4.0的方法如果要在OC使用,必须手动添加
@objc
才能编译到<XFramework/XFramework-Swift.h>
头文件中。最好对所有的Swift接口都加上@objc public
。 -
对外提供访问文件:
在库工程的Build Phases中
Headers
里面管理头文件。供外部访问的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文件:
有两种方式都可以。
-
一种是在本地
bridge
中添加头文件,另一种方式是。#import <XFramework/XFramework.h> #import <XFramework/XFramework-Swift.h>
-
在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地址
上传中...