在iOS的开发过程中,我们常常用到第三方的库。比如支付、地图、广告等。
那么,如何制作自己的库文件呢?
如何将自己写的功能类编译成库文件,分发给其他人来使用呢并做成通用库里?
iOS开发一年多来没有制作过,刚换了公司入职两天就叫打包自己的库给别的公司用,搞的我是无下手,特此笔记一下!
一)先讲讲编译静态库

编译静态库的好处也还是有的!
1.让自己的源码不被直接暴漏。
2.需要使用时,仅仅拷贝相应的.h文件和.a文件就好,不用在将源码一一拷贝。方便。
3.显得也比源码拷贝高端、大气一些。
 
哪就别bb了直接上开发步骤
1.新建静态库工程,选择Framework & Library  -->NEXT-->(命名为)MyFirstStaticLibrary
 
 

2.删除自动生成的MyFirstStaticLibrary.h和MyFirstStaticLibrary.m(因为是打包别人的类,不需要这两个文件,如果是自己制作就没必要删除了),在 自己需要打包下载工程,将XXXX.h和XXX.m拷贝到这个工程之中;

3注意,因为iOS模拟器是基于Mac OS平台X86架构,iOS设备都是给予ARM架构,所以给他们提供的静态库也必须对于他们的架构,幸运的是Xcode可以同时编译这两个架构的库;

编译的时候调到iOS Device ,  Product  --> Build;  如果调到其他则不能编译出来静态库

我这是制作自己的库久不删除了

选择如下模式变色

编译成功后就会出来

选择.a文件Show in Finder出来如下

这就是Debug下的真机调试静态库我们可以通过终端看下他的信息

打开终端进入他的目录:输入cd 空格吧.a文件网里图删掉libMyFirstStaticLibray.a(你自己的库名)如下图

然后输入ls  lipo -info ibMyFirstStaticLibray.a

调整运行设备为模拟器如下图:

运行编译后多出了模拟器的的包(模拟器下运行)

我们看下他的信息 在终端输入cd Users/ilink/Library/Developer/Xcode/DerivedData/MyFirstStaticLibrary-ezlqqdeuksbkiseqmiefxzbefdah/Build/Products/Debug-iphonesimulator
(Debug-iphonesimulator文件往终端拖就能得到)输入lipo -info libMyFirstStaticLibrary.a

我们一般都要想模拟器和真机都能用也就是说要并包

并包通过终端来做cd ..回到上级目录然后ls

再输入lipo -create Debug-iphonesimulator/libMyFirstStaticLibrary.a Debug-iphoneos/libMyFirstStaticLibrary.a -output libMyFirstStaticLibrary.a进行并包

然后可以看到

和debug-iphone同级的目录出来.a文件改文件就是目标文件

我们在终端下看下他的信息lipo -info libMyFirstStaticLibrary.a

可以看出他上两者的结合方法好虽好,但会牺牲空间,文件会变大

下面测试一下可以用不新建工程倒入.a和include文件

使用一下

控制台打印如下

到此完成

 

iOS生成静态库方法的更多相关文章

  1. IOS 生成静态库文件(.framework)

    http://blog.csdn.net/zwl492454828/article/details/55095422

  2. IOS 生成静态库文件(.a文件)

    http://www.cnblogs.com/lyy-5518/p/5459643.html

  3. 手淘架构组最新实践 | iOS基于静态库插桩的⼆进制重排启动优化 抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15% 编译期插桩

    抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15% 原创 Leo 字节跳动技术团队 2019-08-09 https://mp.weixin.qq.com/s/Drmmx5JtjG ...

  4. Xcode 生成静态库相关设置:

    Xcode 生成静态库相关设置: #Build Setting1. Architectures ------- Architectures -----> $(ARCHS_STANDARD) -- ...

  5. 在Linux下如何使用GCC编译程序、简单生成 静态库及动态库

      最近在编写的一个Apache  kafka 的C/C++客户端,,在看他写的 example中,他的编译是用librdkafka++.a和librdkafka.a    静态库编译的,,,而我们这 ...

  6. [转]Linux下用gcc/g++生成静态库和动态库(Z)

    Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10|  分类: linux |  标签:链接库  linux  g++  gcc  |举报|字号 订阅     ...

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

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

  8. iOS基础 - 静态库

    一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系 ...

  9. Ubuntu下通过makefile生成静态库和动态库简单实例

    本文转自http://blog.csdn.net/fengbingchun/article/details/17994489 Ubuntu环境:14.04 首先创建一个test_makefile_gc ...

随机推荐

  1. 【前端】CommonJS的模块加载机制

    CommonJS的模块加载机制 CommonJS模块的加载机制是,输入的是被输出的值的拷贝.也就是说,一旦输出一个值,模块内部的变化就影响不到这个值. 例如: // lib.js var counte ...

  2. JavaScript的chapterI

    JavaScript是一种由web浏览器进行解析和执行脚本语言,包括ECMAScript,DOM,BOM. JavaScript的最大作用是赋予页面动作,让页面动起来,已经动态的处理页面的数据. 应用 ...

  3. GOLANG 注释

    注释可提高代码可读性 编译器编译时自动忽略注释段内容 单行注释 //单行注释 块注释 /* 块注释 */

  4. 微信小程序-基础内容组件

    icon 图标 示例: <view class="group"> <block wx:for="{{iconSize}}"> <i ...

  5. Exception in thread "main" java.lang.ExceptionInInitializerError

    Exception in thread "main" java.lang.ExceptionInInitializerErrorCaused by: java.util.Missi ...

  6. (转载)MongoingDB常用操作

    mongo –path db.AddUser(username,password)  添加用户 db.auth(usrename,password)     设置数据库连接验证 db.cloneDat ...

  7. 【所见即所得】textarea 精确限制字数、行数,中、英、全半角混检 。源码带注释

    主要解决难点: 1 中文 全角2字符深深的恶意 2 多行输入textarea 手动,自动换行问题 3 获得每行内容 原创,转载请注明出处! <!DOCTYPE html PUBLIC " ...

  8. SignalR

    https://msdn.microsoft.com/zh-cn/magazine/dn802609.aspx http://www.asp.net/signalr/overview/getting- ...

  9. 关于json-p

    关于json-p 目录 关于json-p json-p是什么 json-p原理分析 json-p的缺点 json-p是什么 json-p实际上是一种跨域ajax发送http请求的方法,它不是什么全新的 ...

  10. JS实现继承的几种方式

    前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一.那么如何在JS中实现继承呢?让我们拭目以待. JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个 ...