Swift 制作Framework
记录一下自己的过程:---有些地方自己还是不懂
第一步:创建Framework工程
运行 XCode -> Cocoa Touch Framework -> 取个名, 语言选择 Swift -> 创建成功
第二步:基本设置
创建完不急着编写代码,先做一些设置:
1.修改最低的系统要求,建议当然低一些好,(示例 ios10)
2.Mach-O Type, Swift必须为Dyanmic Library
3.Build Active Architecture Only 选择NO,表示支持各种设备
4.Dead Code Stripping, 设置为 NO,我也不知道为什么
5.Build 环境,以下全部设置为release
第三步:放入代码文件
1.先删除 自带的跟工程同名的 .h文件
2.放入代码文件、或者开始写代码,如需外部调用,类名和方法属性,则需要Public,否则外界调用不到。
3.设置TAGETS-Build Phases-Headers
Public 为公开的文件,将左侧文件拖入即可。拖入则可看到相应的 Public方法和属性。
第四步:开始生成framework
1.选择真机,command+b
会 发现 Products文件里边的framework由红色变为白色,表示生成framework成功
2.选择模拟器,同上。
3.找到framework文件
右键,选择Show in Finder ,会看到两个文件夹,后缀为-iphoneos的为真机包,后缀为-iphonesimulator的为模拟器包
第四步:合成包
1.查看 真机版本和模拟器版本 架构信息 打开终端命令 lipo -info 。注意,是.framework文件夹下边的这个文件
真机版本
模拟器版本
这里发现模拟器里边居然也包含 arm64的信息,然后去合并真机和模拟器版本时,就出现了问题。合并指令 sudo lipo -create (真机路径(AppConfig)) (模拟器路径(AppConfig))-output (真机路径(Appconfig))
如下错误信息
解决无法合并的问题:Build Settiongs 搜索 Excluded Architectures, 在release下添加 Any iOS Simulator SDK 值为 arm64。如下图
然后 command+shift+k,清理一下缓存,分别选择真机、模拟器重新编译。再次查看模拟器的构建信息,发现这次模拟器包里边没有arm64啦。
现在,可以继续合并 真机和模拟器包了,此时没有报错了,包已合并成功。上述已经将包合成到真机的包里边
第五步:使用
1.将AppConfig.frame包导入到工程
2.运行,然后就闪退了。这里我也不知道为何会如此,经过我的一番折腾,终于解决了,但还是不明白为啥。
3.解决方案,如图
将该framework先删除
在点击+,重新导入。选择 Add Other....->Add Files
找到工程里边的 framework,点击open
在使用的地方 import 一下,就可以使用啦
完毕。!谢谢观看
参考: http://www.yoyo88.cn/study/swift/491.html
参考:https://www.jianshu.com/p/d1a0c627d34a