一、介绍

在开发中经常使用到第三方的静态框架,格式基本上就是.framework和.a格式的。使用时,会发现我们只能使用无法修改,这就是静态框架的一个好处,私有性。内部实现的代码只有公开者本人知晓,对外界是隔离的,从劳动成果上讲,这也是对作者本人或者公司的一个代码保护。那么,我们如何创建属于自己的静态库呢,下面我就简单地将步骤再次描述一下,在我之前的博客中有过详细的介绍,可以去瞅瞅:https://www.cnblogs.com/XYQ-208910/p/5157673.html

二、比较

注意:

(1)开发者的都是静态包: .framework 、.a

(2)苹果官方都是动态包: .framework 、.dylib

(3)开发者创建的动态包.dylib是不允许被上架的

作用:

(1)方便共享代码,便于合理使用

(2)实现程序模块化,对业务解耦

(3)开发sdk,保护具体实现代码

区别:

(1).a是一个纯二进制文件,不能直接使用,至少需要配合.h文件一起使用

(2).framework除了包含二进制文件,还可以包含资源文件。

(3).framework = .a + .h + sourceFile

(4)建议使用.framework

三、步骤

3-1:创建.framework步骤

(1)创建.framework工程项目

(2)配置buildSetting属性字段 (有的配置会增加包体积,有的会减少包体积)

(3)拖入需要的类文件和资源包  (此处我没有引入资源包,可以自己创建并引入一个.bundle资源包)

(4)在BuildPhases中公开.h文件

(5)在静态包中引入引用的.h文件

(6)使用模拟器和真机分别在debug和release模式下编译

(7)show Finder静态包,查找编译成功的二进制文件

(8)使用lipo  -create  -output 命令行合并二进制文件

(9)选取模拟器和真机的任意一个静态包,使用合并的二进制文件替换选取的静态包的二进制文件

(10)将拷贝后的静态包拖入到测试项目中测试

3-2:创建.a步骤

(1)创建.a工程项目

(2)配置buildSetting属性字段,同上面创建.framework步骤2

(3)拖入需要的类文件和资源包  (此处我没有引入资源包,可以自己创建并引入一个.bundle资源包)

(4)在BuildPhases中新建New Headers并公开.h文件

(5)使用模拟器和真机分别在debug和release模式下编译,同上面创建.framework步骤6

(6)show Finder静态包,查找编译成功的二进制文件

(7)使用lipo -create -output命令行合并二进制文件生成一个新的.a包

(8)将这个新的.a静态包拷贝出来,同时将项目中的所有暴露的.h文件拷贝出来(如果有资源文件也要拷贝),放到一个文件夹下。此时,将该文件夹拖入到测试项目中测试

iOS: 创建静态库,实现自己的API私有使用的更多相关文章

  1. iOS 创建静态库文件时去掉当中的Symbols

    在project中创建静态库文件时.默认会将一些Symbols加到静态库文件里.这样做有两个缺点: 1.假设引用静态库文件的project中发生了bug.就会直接跳转到静态库的源代码. 也许有人问:静 ...

  2. 在iOS中创建静态库

    如果您有不错的原创或译文,欢迎提交给我们,更欢迎其他朋友加入我们的翻译小组(联系qq:2408167315).  =========================================== ...

  3. iOS xcode创建静态库封装自己的SDK及使用

    https://www.cnblogs.com/JustForHappy/p/5773039.html 一,静态库和动态库的区别在这里就不说了,个人感觉如果是自己封装提供别人下载的话应该是静态库比较方 ...

  4. iOS:创建静态库及其使用

    本篇来自转载,原创链接为:http://my.oschina.net/leejan97/blog/284193 摘要: 静态库文件可以有效的将功能封装和细节隐藏  ios 静态库 static lib ...

  5. ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)

    创建静态库可能出于以下几个理由: 1.你想将工具类代码或者第三方插件快捷的分享给其他人而无需拷贝大量文件.2.你想让一些通用代码处于自己的掌控之下,以便于修复和升级.3.你想将库共享给其他人,但不想让 ...

  6. iOS 元件组件-创建静态库static library

    概述 在项目开发的过程中,经常使用静态库文件.例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节. 库是一些没有mai ...

  7. iOS framework静态库中使用xib和图片资源详解

    一.新建bundle 前2篇文章介绍了iOS 最新framework和.a静态库制作及使用全解   iOS 工程套子工程,主工程和framework工程或.a library静态库工程联调 我现在是在 ...

  8. Xcode 创建静态库和动态库

    1.linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 静态库:这类库的名字一般是libxxx.a:利用静态函数库编译成的文件 ...

  9. xcode6制作IOS .a静态库小记

    xcode6制作IOS .a静态库小记 创建iOS静态库 简单写个打印的代码 编码完成之后,直接Run就能成功生成.a文件了,选择 xCode->Window->Organizer-> ...

随机推荐

  1. Docker 底层技术与端口映射

    容器底层实现技术  1.cgroup 实现了资源的限额:CPU,内存,硬盘 cgroup使用  docker run -d -m 100M httpd 2.namespace 实现了资源隔离 name ...

  2. 增加sudo用户访问oracle

    增加zgy用户可以访问数据库[root@DBDATA ~]# useradd zgy--设置密码[root@DBDATA ~]# passwd zgy--设置组[root@DBDATA ~]# use ...

  3. TP打印输出SQL语句

    模型 -> getLastSql(); //TP打印SQL语句 $data = $this->field($field)->where($condition)->select( ...

  4. select同时获取value和label的值

    Element ui 框架型 <el-select v-model="sketchID" autocomplete="off" @@change=&quo ...

  5. Python生成requirements.txt方法

    在查看别人的Python项目时,经常会看到一个requirements.txt文件,里面记录了当前程序的所有依赖包及版本号,其作用是用来在另一个环境上重新构建项目所需要的运行环境依赖. require ...

  6. java之方法的重载(overload)

    什么是重载? 在任何一个类中,允许存在一个以上的同名的方法,只要它们的参数个数或者参数类型不同即可: 重载的特点? 与返回值无关,只看参数列表.且参数列表必须不同(参数个数或参数类型).调用时,根据方 ...

  7. Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  8. Oracle数据库的sql语句性能优化

    在应用系统开发初期,由于开发数据库数据比较少,对于查询sql语句,复杂试图的编写等体会不出sql语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目 ...

  9. ETCD:系统限制

    原文地址:System limits 请求大小限制 etcd被设计用来处理小键值对典型的如元数据.较大的请求数据也起作用,但可能会增加其他请求的延迟.默认情况下,任意的请求最大的空间为1.5MiB,这 ...

  10. 在Asp.Net或.Net Core中配置使用MarkDown富文本编辑器有开源模板代码(代码是.net core3.0版本)

    研究如何使用Markdown你们可能要花好几天才能搞定,但是看我的文章或者下载了源码,你搞定一般在10分钟之内.我先给各位介绍下它: Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯 ...