- iOS的库分为
- .a 纯静态库只能包含代码
- .dylib 动态库
- .framework 包含动态库和静态库,可以包含图片资源Xib等
- 动态库和静态库
- 动态库在运行时实时部署,静态库必须在编译时连接到代码
- 动态库加载到内存后可以重复使用,静态库必须每次import都引入一次
- 自定义的动态库只能部署在iOS8以上系统
本篇文章介绍的是创建.framework
1.创建项目,选择cocoaTouch Framework

2.本次创建项目的demo使用的是swift语言

3.把工程里的MyFramework.h给删除掉,swift不需要
4.创建一个MyFramework的类继承于NSobject里面的方法改成静态的方法添加public ,demo地址:https://github.com/molufang/MyFramework

代码源码:
public class MyFramework: NSObject {
static let bundle = NSBundle(forClass: MyFramework.self)
static let MyFrameworkStr = "MyFramework"
public static func loadVCFromStoryboard() {
let vc = UIStoryboard(name: "MyFramework", bundle: bundle).instantiateViewControllerWithIdentifier("MyFrameworkViewController")
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(vc, animated: true, completion: nil
)
}
public static func openVCFromXib(){
let vc = MyFrameworkViewController(nibName:MyFrameworkStr,bundle:bundle)
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(vc, animated: true, completion: nil)
}
public static func loadImage() -> UIImage {
let image = UIImage(named: MyFrameworkStr + ".png",inBundle: bundle,compatibleWithTraitCollection:nil)
return image!
}
}
5.在真机和模拟器上分别运行一下
就分别生成啦真机和模拟器的framework文件
右侧复制路径,文件-前往文件夹就可以看到生成的真机和模拟器的framework,此处需要注意,真机的只能在真机上运行,模拟器的只能在模拟器上运行

6.查看生成的静态库里面包含什么

打开终端在终端输入
localhost:~ caxa$ lipo -info /Users/caxa/Library/Developer/Xcode/DerivedData/MyFreameWork-gtomirgjpyzhaifseycnwbmcampx/Build/Products/Debug-iphoneos/MyFreameWork.framework/MyFreameWork
可以查看到当前的架构信息输出如下信息:

7.把真机和模拟器的framework合成一个,可以在真机和模拟器上都可以使用framework
先拷贝一个framework出来

然后使用命令 lipo - create 第一个目录 第二个目录 -output 第三个目录 把两个合成一个
localhost:~ caxa$ lipo -crate /Users/caxa/Library/Developer/Xcode/DerivedData/MyFreameWork-gtomirgjpyzhaifseycnwbmcampx/Build/Products/Debug-iphoneos/MyFreameWork.framework/MyFreameWork /Users/caxa/Library/Developer/Xcode/DerivedData/MyFreameWork-gtomirgjpyzhaifseycnwbmcampx/Build/Products/Debug- iphonesimulator/MyFreameWork.framework/MyFreameWork -output /Users/caxa/Library/Developer/Xcode/DerivedData/MyFreameWork- gtomirgjpyzhaifseycnwbmcampx/Build/Products/MyFreameWork.framework
做过推送的应该对这步并不感到陌生
此时这两个动态库就合并到一个动态库里啦
8.此时在输入命令来查看最终的合并结果
localhost:~ caxa$ lipo -info /Users/caxa/Library/Developer/Xcode/DerivedData/MyFreameWork-gtomirgjpyzhaifseycnwbmcampx/Build/Products/MyFreameWork.framework/MyFreameWork
9.打开Models把真机和模拟器上的东西都拷贝过来

10.这样我们就完成啦framework的创建
下面开始使用创建的framework吧
创建一个新项目名为TestFrameWorks
把刚刚创建好的framework复制引入到项目中
添加到项目中,一定选择General-Embedded Binaries不然会报找不到图片的错误

然后运行一下看下结果吧,我们期望的效果就出来啦,framework中添加的内容就被引入进来啦

参考内容:
极客学院网站视频:http://www.jikexueyuan.com/course/2665_1.html?ss=1
欢迎大家关注我们的公众号,大家一起交流学习

网友评论