一、介绍

在开发中经常使用到第三方的静态框架,格式基本上就是.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. Cocos2d-x项目编译为Android应用——命令行方式

    配置: 相关工具:Cocos2d-x 3.2 + Ant 1.9.4 + Android NDK r9d + Android SDK 运行平台:OS X 10.9.4+ Xcode 6 前言:笔者使用 ...

  2. 54. Spiral Matrix && 59. Spiral Matrix II

    Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral ord ...

  3. windows和linux下查看java安装路径

    windows下查看版本:(默认安装路径安装就不需要去配环境变量了) java -version windows下查看安装路径: java -verbose Linux下安装版本查看方式和window ...

  4. Drawable.SetDither(Boolean) Method

    https://docs.microsoft.com/zh-cn/dotnet/api/android.graphics.drawables.drawable.setdither?view=xamar ...

  5. Java.awt.geom.AffineTransform 的使用

    https://docs.oracle.com/javase/8/docs/api/java/awt/geom/AffineTransform.html http://www.cjsdn.net/Do ...

  6. tensorflow和pytorch教程

    https://github.com/dragen1860/Deep-Learning-with-TensorFlow-book

  7. [考试反思]1113csp-s模拟测试114:一梦

    自闭.不废话.写一下低错. T1:觉得信心赛T1不会很恶心一遍过样例直接没对拍(其实是想写完T2之后回来对拍的) 状态也不好,基本全机房都开始码了我还没想出来(skyh已经开T2了).想了40多分钟. ...

  8. Centos7下Redis设置开机自启动服务

    有个同事说重启了服务器没有自启动redis,我看了一下,是以前手动编译安装的模式,没有配置开机启动的服务 这边做个笔记记录一下redis如何设置编译安装模式的开机自启动. 第一种方法: 1.编写red ...

  9. 软件文档写作-plantuml画用例图和时序图

    背景 当下的软件开发人员,不可避免的需要输出一些软件设计文档,作为一个软件工程专业毕业的工程师,最常用的设计工具就是UML,使用UML工具绘制一些软件相关的图,是必备技能,也是输出的技术文档中的重要组 ...

  10. Python之format()函数

    Python2.6开始,新增了一种格式化字符串的函数format(),它增强了字符串的格式化功能.(官方推荐) 基本语法是通过{}和:来代替以前的% format()函数可以接收不限个参数,位置可以不 ...