iOS: 创建静态库,实现自己的API私有使用
一、介绍
在开发中经常使用到第三方的静态框架,格式基本上就是.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私有使用的更多相关文章
- iOS 创建静态库文件时去掉当中的Symbols
在project中创建静态库文件时.默认会将一些Symbols加到静态库文件里.这样做有两个缺点: 1.假设引用静态库文件的project中发生了bug.就会直接跳转到静态库的源代码. 也许有人问:静 ...
- 在iOS中创建静态库
如果您有不错的原创或译文,欢迎提交给我们,更欢迎其他朋友加入我们的翻译小组(联系qq:2408167315). =========================================== ...
- iOS xcode创建静态库封装自己的SDK及使用
https://www.cnblogs.com/JustForHappy/p/5773039.html 一,静态库和动态库的区别在这里就不说了,个人感觉如果是自己封装提供别人下载的话应该是静态库比较方 ...
- iOS:创建静态库及其使用
本篇来自转载,原创链接为:http://my.oschina.net/leejan97/blog/284193 摘要: 静态库文件可以有效的将功能封装和细节隐藏 ios 静态库 static lib ...
- ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)
创建静态库可能出于以下几个理由: 1.你想将工具类代码或者第三方插件快捷的分享给其他人而无需拷贝大量文件.2.你想让一些通用代码处于自己的掌控之下,以便于修复和升级.3.你想将库共享给其他人,但不想让 ...
- iOS 元件组件-创建静态库static library
概述 在项目开发的过程中,经常使用静态库文件.例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节. 库是一些没有mai ...
- iOS framework静态库中使用xib和图片资源详解
一.新建bundle 前2篇文章介绍了iOS 最新framework和.a静态库制作及使用全解 iOS 工程套子工程,主工程和framework工程或.a library静态库工程联调 我现在是在 ...
- Xcode 创建静态库和动态库
1.linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 静态库:这类库的名字一般是libxxx.a:利用静态函数库编译成的文件 ...
- xcode6制作IOS .a静态库小记
xcode6制作IOS .a静态库小记 创建iOS静态库 简单写个打印的代码 编码完成之后,直接Run就能成功生成.a文件了,选择 xCode->Window->Organizer-> ...
随机推荐
- JS高级教程
JS高级教程 JS高级教程
- Oracle - SPM固定执行计划
1. 通过dbms_xplan.display_cursor查看指定sql都有哪些执行计划 SQL> select * from table(dbms_xplan.display_cursor( ...
- centos7设置静态ip-修改配置文件方式
修改IP地址为静态地址需要修改配置文件,首先打开配置文件,在控制台输入cd /etc/sysconfig/network-scripts 输入ifconfig,这样就可以看到你的ip地址等信息了. v ...
- CentOS 7怎么删除mariadb
参考链接:https://www.cnblogs.com/ytkah/p/10876824.html
- 使用python - selenium模拟登陆b站
思路 输入用户名密码点击登陆 获取验证码的原始图片与有缺口的图片 找出两张图片的缺口起始处 拖动碎片 功能代码段 # 使用到的库 from selenium import webdriver from ...
- 如何给女朋友讲明白:Java 中 Stack(栈) 与 Heap(堆)
背景 Java 中 Stack(栈) 与 Heap(堆) 是面试中被经常问到的一个话题. 有没有对 Java 中 Stack(栈) 与 Heap(堆) 烂熟于心的童鞋,请举手!!!(怎么没人举手-) ...
- 移动端触发touchend后阻止click事件
// vue里面简单的处理方式,可以同时兼容PC和移动端 <div @touchend.stop.prevent="doSomething" @click.stop.prev ...
- 为什么老外不愿意用MyBatis?
作者:陈龙 www.zhihu.com/question/309662829 Spring 团队的Josh Long自己在Twitter上做了一个调查.1625次投票,样本量不算大,但也能说明问题.和 ...
- Redis实战(一)Redis简介及环境安装(Windows)
提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗? 什么是Redis? R ...
- docker容器的学习笔记
目录 Docker入门学习笔记(一) 1. 什么是Docker? 2. Docke的目标 3. Docker通常应用场景 4. Docker的基本组成 补:Docker容器相关技术简介 安装Docke ...