知识普及:

什么是库?

库是程序代码的集合,是共享程序代码的一种方式

根据源代码的公开情况,库可以分为 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开发)相关推荐

  1. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  2. arduino温湿度计库文件_手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程...

    原标题:手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程 冬天人们经常关注家里的温湿度,南方没有暖气更关注温度,北方因为天气干燥,有暖气,所以更关注湿度.下边介绍一个非常简单,并且 ...

  3. 静态网页案例_手把手教你构建网页

    ​ 网页 网页是构成网站的基本元素,是承载各种网站应用的平台.通俗地说,您的网站就是由网页组成的,如果您只有域名和虚拟主机而没有制作任何网页的话,您的客户仍旧无法访问您的网站. 网页是一个包含HTML ...

  4. 配置库用户_手把手教新手安装Anaconda配置开发环境

    Anaconda是针对Python的集成环境,它已经成为全球数千万数据科学从业人员必备的开发工具,帮助人们有效地解决数据科学和机器学习相关地问题.如果你想从事数据科学和机器学习的工作,可以从本文开始, ...

  5. ipa文件反编译_手把手教你反编译别人的iOS App

    下载智可网手机app可以学习更多哦! 虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈.此文想以实际例子出发,告诉大家,如何去反编译一个app,并且 ...

  6. 动态添加跨行表格_手把手教你制作Excel动态统计表格,主管看了都会竖起大拇指!-Office教程...

    教程领到手,学习不用愁!领 ↑↑↑ 还有朋友不知道知识兔吗?知识兔就是下载考试资料|软件|教程|素材的网站,建议去搜索引擎搜索知识兔!知识兔是课程网站吗?知识兔有什么课程?知识兔可以兔费领取下载课程, ...

  7. npm收录了哪些包_手把手教你制作一个小而美丽的 npm 包并发布

    第1步:npm账户 你需要一个 npm 账户,如果米有,注册地址是:npmjs.com/signup 第2步:登录 进入你自己电脑的终端(cmd)并输入: npm adduser 也可以使用以下命令: ...

  8. python英文词云代码_手把手教你制作 中英文 词云 | python demo

     以前做词云的时候网上看的python做词云的坑都很多,耗了很多时间才高清楚wordcloud制作词云的精髓和脉络,整理如下. 相关文章 准备Mac环境下直接pip install wordclou ...

  9. python开发一个自己的技术网站_手把手教你写网站:Python WEB开发技术实战

    摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...

  10. dmg镜像如何写入u盘_手把手教你制作Linux系统安装U盘,小白都能轻松上手

    随着电脑更新换代,家里闲置或在用的电脑渐渐多了,总想折腾一下:有时电脑用久了,变得慢起来了,也时不时会想要重装一下系统,因为懒得去装所谓的垃圾清理或优化软件.于是决定制作一个操作系统的安装U盘,以备日 ...

最新文章

  1. usaco Shaping Regions
  2. 如何让AI机器人的对话更加自然?
  3. Kruskal重构树
  4. 如何提高自己的工作效率
  5. 如何将数字转换成口语中的文本串
  6. Python新手学习基础之数据结构-序列2
  7. C++ set简介及简单应用
  8. Atitit db deadlock prblm cause and solu 数据库死锁原因与解决   在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享
  9. mysql 存储过程 高并发_解决数据库高并发常见方案
  10. 什么是相位,为什么会有相位?
  11. 网线哪几根是发送数据,哪几根是接收数据的?
  12. 云商互惠商城源码/大型买返商城源码,返利商城源码
  13. shell sleep 睡眠命令
  14. 论文阅读——Towards Adversarial Retinal Image Synthesis
  15. 8.ring3-破坏knowndlls反劫持保护
  16. mapgis明码文件转为点线面文件_MAPGIS平台点线面符号数据导出与绘制
  17. 如何使用windebug追踪ASL CODE
  18. 智慧海关大屏可视化决策系统
  19. 7.4 期望值和方差
  20. Linux中搭建Redis集群及redis集群配置常见问题总结

热门文章

  1. SDUT —— 计算组合数
  2. 爬取小鸟高清美女壁纸
  3. Photoshop抠图笔记
  4. 字节跳动为什么选用Flutter:并非跨平台终极之选,但它可能是不一样的未来
  5. 性能优化,进无止境---内存篇(下)
  6. 根据手势拿到superview
  7. 2019年京东面试题-洗咖啡杯问题【贪心和动态规划】
  8. windows怎么设置始终以管理员身份运行
  9. ps去水印教程_PS去水印教程:运用色彩原理去除半透明水印
  10. python输出列表的子列表_python切片(获取一个子列表(数组))详解