在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. 使用Java-UrlConnection调用webService接口

    URL wsUrl = new URL("http://192.168.1.1:8080/webservice"); HttpURLConnection conn = (HttpU ...

  2. 使用rsync和scp远程同步文件

    rsync1. rsync可以通过ssh隧道的方式传输文件夹: rsync -arv --progress clone user@host:remotedir loaldir . rsync通过ssh ...

  3. GUI 下

    11.6 Swing组件 JButton JLabel JTextField JTextArea JTable JTree publicclass JTableDemo extends JFrame ...

  4. 没人能阻止你,除了你自己——Keep up the good work!

    今天在网上搜索一些关于计算机专业的论坛或者博客,于是发现了博客园,就进来了.我想把我的一些关于计算机科学与技术领域的学习经历纪录在此,以便于能和大家一起分享,一起努力,一起进步.说实话我是临床医学专业 ...

  5. Digital Roots

    Background The digital root of a positive integer is found by summing the digits of the integer. If ...

  6. javascript字符转直接量和转义字符

    直接量: 你可以用单引号或者双引号来表示字符串的直接量.但是js的字符串必须是Unicode 字符序列. 转义字符: 主要用在字符串中,包涵控制字符,以及当前操作系统余元所不允许直接输入的字符. 转义 ...

  7. jsp发布:tomcat+花生壳

    1.tomcat/conf/server.xml <Host name="localhost" appBase="webapps" unpackWARs= ...

  8. java中myeclipse连接mysql问题(java.lang.ClassNotFoundException: com.mysql.jdbc.Driver)

    java中myeclipse连接mysql问题(java.lang.ClassNotFoundException: com.mysql.jdbc.Driver) 1.往项目中添加mysql-conne ...

  9. hadoop启动是常见小问题

    1.先su进入root账户,然后 service iptables stop //关闭防火墙 start-all.sh //启动 2.启动是会显示,如果出错日志保存路径!!!基本所有问题都要去这些日志 ...

  10. 线性表-双向链表(LinkedList)

    双向链表:如图1-3 所示,会把当前header拆分开,重新插入一个Entry<E>. LinkedList源码 0.首先这个类中的两个变量 private transient Entry ...