使用纯swift代码文件制作framework
因为最近我们公司的一个客户要求我们使用swift编写程序并且将API封装成framework的形式提供给他们,所以我就开始了swift实践之路。
程序编写完之后,我就琢磨怎么封装成framework的形式,因为swift不像OC,分.h和.m的形式,那么只暴露.h出来即可,而swift是所有实现都在一个文件里,会不会把源码暴露啊?怀着这个疑问,今天上午查了资料自己实践了一下,搞定。
第一步:Xcode->File->New->Project,选择Cocoa Touch Framework,语言选择swift,然后Deployment Target我选择了最低8.0


可以看到默认生成了一个.h和plist文件,这个.h文件里你可以导入你使用的一些OC文件,因为framework里不支持桥接文件,而OC的文件必须得import,所以就有了这么一个.h文件啦,如果你没用到任何OC文件,那就什么都不用导入了。info.plist就是正常的配置文件啦。
第二步:把你之前写好的swift文件都拖进来,在这里我拖入了我之前已经写好的蓝牙模块文件,统一放在BleModule文件夹下

第三步:Edit Scheme->Run->Build Configuration->Debug/Release,分别对应测试环境和生产环境
然后Command+Build,编译即可生成我们要的framework了,右键Show in Finder,就找到生成的framework了。

接下来测试一下framework能否使用:
第一步:新建一个工程,我的工程命名为HeHaSwiftDemo,将刚才生成的framework拷贝到新工程路径下

第二步:点击工程->Target->General,然后在Embedded Binaries和Linked Frameworks and libiaries选项卡下将刚才路径下的framework导进来。

第三步:编译一下工程没有问题,然后就可以使用了,在需要使用framework的地方import一下,这个BleAPI就是我的framework的名称,然后就能使用啦。

点进去看一下会发现里面的文件都是你暴露出的带有public修饰符的函数,代理方法,属性变量以及一些宏定义等,而具体的实现是不可见的,哈哈,我的担心是白担心

最后,项目已经放到了我的github上,链接:https://github.com/krisouljz/LearningGit.git
使用纯swift代码文件制作framework的更多相关文章
- 纯 PHP 代码最好在文件末尾删除 PHP 结束标记
		
如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记.这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图. & ...
 - Swift完整项目打包Framework,嵌入OC项目使用
		
场景说明: -之前做的App,使用Swift框架语言,混合编程,内涵少部分OC代码. -需要App整体功能打包成静态库,完整移植到另一个App使用,该App使用OC. -所以涉及到一个语言互转的处理, ...
 - iOS 库文件制作
		
一.静态库和动态库的介绍 一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链 ...
 - iOS打包framework - Swift完整项目打包Framework,嵌入OC项目使用
		
场景说明: -之前做的App,使用Swift框架语言,混合编程,内含少部分OC代码. -需要App整体功能打包成静态库,完整移植到另一个App使用,该App使用OC. -所以涉及到一个语言互转的处理, ...
 - IOS7开发~Xcode5制作framework
		
一.Framework 简介(Introduction to Framework Programming Guide) Mac OS X 扩展了 framework 的功能,让我们能够利用它来共享代码 ...
 - 给swift程序猿留下深刻印象的10个Swift代码
		
通过使用单行代码完成同样的 10 个练习,我们来看看 Swift 和其他语言之间的较量. 将数组中每个元素的值乘以 2 使用map来实现 var arr = [1,2,3,4]; var newArr ...
 - iOS,Xcode7 制作Framework,含资源和界面
		
Xcode7 制作Framework 本文通过Demo方式介绍1)将含bundle和存代码编写界面打包进framework:2)将storyboard +assets.xcassets打包. (一) ...
 - IOS7 ~ Xcode5 制作 framework
		
一.Framework 简介(Introduction to Framework Programming Guide) Mac OS X 扩展了 framework 的功能,让我们能够利用它来共享代码 ...
 - 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置
		
经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...
 
随机推荐
- 前端如何低门槛开发iOS、Android、小程序多端应用
			
现如今跨平台开发技术已不是什么新鲜话题了,在市面上也有一些开源的框架可供选择,然而技术成熟.产品服务健全的平台并不多,其中也不乏推陈出新的框架值得关注. 比如最近使用的AVM,由APICloud迭代推 ...
 - ElasticSearch、Kibana 介绍&安装
			
目录 ElasticSearch 介绍 基于数据库查询的问题 倒排(反向)索引 ES 存储和查询的原理 ES 核心概念 ES 安装 Kibana ElasticSearch 介绍 基于数据库查询的问题 ...
 - 工厂模式(python)
			
以字符串作为传递参数 以类名作为传递参数 来自为知笔记(Wiz)
 - 前后端分离 导致的 静态页面 加载 <script type="module" > 报CORS 跨域错误,提示 blocked by CORS policy
			
1.前言 静态页面 加载 <script type="module" > 报CORS 跨域错误,提示Access to script at ftp:///xxx.js ...
 - RabbitMQ --- 直连交换机 【 有回调方法,获取消费结果 】
			
1.前言 上一随笔详细记录了直连交换机的方法,发送的消息是异步的,如果消息未被消费者消费,那么可以一直存在消息队列中. 那么有没有办法做一个回调,当消息被消费后,被通知消息成功被消费者消费啦? 答案是 ...
 - Linux上天之路(十三)之系统进程管理
			
主要内容 进程介绍 进程管理 进程优先级 1. 进程介绍 Linux系统中的几乎任何行动都会以进程的形式进行.如果你用网络浏览器查看网页,浏览器就作为进程运行.如果键入bash shell的命令行,这 ...
 - vant引入及配置
			
1. vant 官网 https://youzan.github.io/vant/#/zh-CN/quickstart 2. 通 npm 安装 npm i vant -S 3.安装 babel-plu ...
 - Qt之信号与槽
			
student.h: #ifndef STUDENT_H #define STUDENT_H #include <QObject> class Student:public QObject ...
 - golang中math常见数据数学运算
			
package main import ( "fmt" "math" ) func main() { fmt.Println(math.Abs(-19)) // ...
 - 《手把手教你》系列技巧篇(六十一)-java+ selenium自动化测试 - 截图三剑客 -下篇(详细教程)
			
1.简介 按照计划宏哥今天将介绍java+ selenium自动化测试截图操作实现的第三种截图方法,也就是截图的第三剑客 - 截取某个元素(或者目标区域)的图片.在测试的过程中,有时候不需要截取整个屏 ...