ios 静态库合成_手把手教你制作.a静态库(iOS开发)
知识普及:
什么是库?
库是程序代码的集合,是共享程序代码的一种方式
根据源代码的公开情况,库可以分为 2 种类型
开源库
公开源代码,能看到具体实现
比如 SDWebImage 、 AFNetworking
闭源库
不公开源代码,是经过编译后的二进制文件,看不到具体实现
主要分为:静态库、动态库
静态库和动态库
静态库和动态库的存在形式
静态库: .a 和 .framework
动态库: .dylib 和 .framework
静态库和动态库在使用上的区别
静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 (左图所示)
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存 (右图所示)
需要注意的是:项目中如果使用了自制的动态库,不能被上传到 AppStore!
制作 .a
1、新建项目-> 选择 “Cocoa Touch Static Library”
2、添加库需要包含的源代码,将你工程里的代码添加到打静态库工程里:
3、配置一下工程:
4、选择需要暴露出来的 .h 文件, .m 文件会自动编译到 .a 文件中:
需要暴漏出的文件类在这里设置:
引入的网络框架设置:(有些会自动引入,有些需要手动引入,根据编译报错,可以检查。)
5、编译前检查一下是debug模式还是release模式,选择release模式:
分debug和release模式:
Debug-iphoneos 文件夹里面的东西是用在真机上的
Debug-iphonesimulator 文件夹里面的东西是用在模拟器上的
如果 Scheme 是 Release 模式,生成的文件夹就以 Release 开头
6、选择真机设备,然后 Command+B 编译, libSPCustomerServerse.a 文件从红色变为黑色
(注意建议先选择真机,这样才会变色,如果先选择模拟器,那么编译通过了,但是不会由红变黑,实际上是已经编译了模拟器的,只是给人一种假象,好像没编译一样,还是红色的)
7、选择模拟器,建议选择iPhone6以上的(选择高级点的,低级的也可用,若选了低级的,高级的有可能就不适配了)然后依然 Command+B 编译,模拟器和真机环境下用的 .a 文件是分开的。
8、合并模拟器(release-iphonesimulator)和真机(release-iphoneos)下的.a,以便支持真机和模拟器,合并后的.a大小大约是不合并的2倍左右。
show in finder
合并步骤:
举例:1、新建文件夹:"dabao";
2、将上述的release-iphonesimulator和release-iphoneos两个文件拷贝进"dabao"文件夹。
3、打开终端,执行以下操作:
一、在终端输入:lipo -create
二、将release-iphonesimulator下的.a拖进终端,输入一个空格;
三、继续将release-iphoneos 下.a 拖进终端,输入空格;
四、继续输入:-output ,打个空格;
五、输入合并后的.a所要放的文件路径(这里举例依然放在“dabao”这个文件夹下,则我的电脑的路径为:/Users/ntalker-zhou/Desktop/dabao/libSPCustomerServerseSDK.a),回车,在相应的文件下即可生成一个.a,该.a即是合并后的.a
4、检查合并后的.a是不是满足所有要求,依然在终端进行以下操作:
一、在终端输入:lipo -info ;
二、将合并后的.a拖进终端 ,回车;
(注意:终端每一步记得要用空格隔开,否则会出错哦!)
这样.a 就成功制作出了,只需要将暴漏的头文件以及制作的.a放入工程,别人就可以使用你的程序了,再也不用担心源码暴漏或别人随意修改你的代码了,不过如果有图片资源,图片资源是不能打进.a的,需要在外面添加的哦。
(有时候为了编译通过,根据需要,需要设置一下工程配置比如我需要配置xml等…
文/哇哇卡(简书作者)
原文链接:http://www.jianshu.com/p/a1dc024a8a15#
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
ios 静态库合成_手把手教你制作.a静态库(iOS开发)相关推荐
- python k线合成_手把手教你写一个Python版的K线合成函数
手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...
- arduino温湿度计库文件_手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程...
原标题:手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程 冬天人们经常关注家里的温湿度,南方没有暖气更关注温度,北方因为天气干燥,有暖气,所以更关注湿度.下边介绍一个非常简单,并且 ...
- 静态网页案例_手把手教你构建网页
网页 网页是构成网站的基本元素,是承载各种网站应用的平台.通俗地说,您的网站就是由网页组成的,如果您只有域名和虚拟主机而没有制作任何网页的话,您的客户仍旧无法访问您的网站. 网页是一个包含HTML ...
- 配置库用户_手把手教新手安装Anaconda配置开发环境
Anaconda是针对Python的集成环境,它已经成为全球数千万数据科学从业人员必备的开发工具,帮助人们有效地解决数据科学和机器学习相关地问题.如果你想从事数据科学和机器学习的工作,可以从本文开始, ...
- ipa文件反编译_手把手教你反编译别人的iOS App
下载智可网手机app可以学习更多哦! 虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈.此文想以实际例子出发,告诉大家,如何去反编译一个app,并且 ...
- 动态添加跨行表格_手把手教你制作Excel动态统计表格,主管看了都会竖起大拇指!-Office教程...
教程领到手,学习不用愁!领 ↑↑↑ 还有朋友不知道知识兔吗?知识兔就是下载考试资料|软件|教程|素材的网站,建议去搜索引擎搜索知识兔!知识兔是课程网站吗?知识兔有什么课程?知识兔可以兔费领取下载课程, ...
- npm收录了哪些包_手把手教你制作一个小而美丽的 npm 包并发布
第1步:npm账户 你需要一个 npm 账户,如果米有,注册地址是:npmjs.com/signup 第2步:登录 进入你自己电脑的终端(cmd)并输入: npm adduser 也可以使用以下命令: ...
- python英文词云代码_手把手教你制作 中英文 词云 | python demo
以前做词云的时候网上看的python做词云的坑都很多,耗了很多时间才高清楚wordcloud制作词云的精髓和脉络,整理如下. 相关文章 准备Mac环境下直接pip install wordclou ...
- python开发一个自己的技术网站_手把手教你写网站:Python WEB开发技术实战
摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...
- dmg镜像如何写入u盘_手把手教你制作Linux系统安装U盘,小白都能轻松上手
随着电脑更新换代,家里闲置或在用的电脑渐渐多了,总想折腾一下:有时电脑用久了,变得慢起来了,也时不时会想要重装一下系统,因为懒得去装所谓的垃圾清理或优化软件.于是决定制作一个操作系统的安装U盘,以备日 ...
最新文章
- usaco Shaping Regions
- 如何让AI机器人的对话更加自然?
- Kruskal重构树
- 如何提高自己的工作效率
- 如何将数字转换成口语中的文本串
- Python新手学习基础之数据结构-序列2
- C++ set简介及简单应用
- Atitit db deadlock prblm cause and solu 数据库死锁原因与解决 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享
- mysql 存储过程 高并发_解决数据库高并发常见方案
- 什么是相位,为什么会有相位?
- 网线哪几根是发送数据,哪几根是接收数据的?
- 云商互惠商城源码/大型买返商城源码,返利商城源码
- shell sleep 睡眠命令
- 论文阅读——Towards Adversarial Retinal Image Synthesis
- 8.ring3-破坏knowndlls反劫持保护
- mapgis明码文件转为点线面文件_MAPGIS平台点线面符号数据导出与绘制
- 如何使用windebug追踪ASL CODE
- 智慧海关大屏可视化决策系统
- 7.4 期望值和方差
- Linux中搭建Redis集群及redis集群配置常见问题总结