iOS - .a静态库的打包(包括打包的文件中用到了一些别人的三方库和分类的处理)
一、概念篇
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存
动态库,不能被上传到AppStore(逼格太高 大苹果可是不允许的哈 哈哈)
总结:个人觉得 .a静态库的 本身就是一个对代码或者一个功能的封装,只不过是不开源的。
二、制作流程(如下均是Xcode7展示的操作)
新建一个纯净的项目-> 选择 “Cocoa Touch Static Library”
输入想要打包的静态库的名称
把库需要包含的源代码拖入此项目中
此处有一些注意点见下图
这一步,如果看到.a文件由红变黑说明编译等都没有问题 已经完成一半了
右击“ShowInFinder”,查看制作好的.a文件
首先文件切换到 Products文件夹
然后输入
lipo -createDebug-iphoneos/libXXX.a Debug-iphonesimulator/libXXX.a -output libXXX.a
所合成.a== 真机用的.a+ 模拟器用的.a
使用.a 静态库
现在.a静态库和头文件都有了就可以把它们拖到项目中使用了
使用时直接#import"xxx.h"就可以直接导入调用使用了
至此,静态库算是制作完了,但是有以下几点需要说明
倘若自己所需要打包的静态库代码中用到了别人的三方框架比如“AFNetworking”等,此时只需要把用到的三方库文件的头文件在选择暴露头文件时都给暴露出去,然后导入的项目中如果也用到了相同的三方框架,此时此项目就不需要拖入这个三方库代码直接,需要使用时直接把你所提供的.a静态库和头文件导入 然后#import你所提供的相关头文件即可使用(注意:一定是以你的打包的为准)比如 直接#import"xxx.h"
若是自己的静态库原代码中使用了分类 比如NSString+xxxx,此时一定需要更改下项目的环境配置
添加一个“-ObjC”(注意"O""C"是大写的)
iOS - .a静态库的打包(包括打包的文件中用到了一些别人的三方库和分类的处理)的更多相关文章
- iOS中静态库-.a文件生成和使用
最近在使用使用一个网上的Demo的时候. 出现另一令人烦恼的问题 . 就是它里面有嵌套的工程. 如下图所示. 工程里面还嵌套有一个工程. 真的是让人煞费苦心 …其实这个问题看起来并不是很难, 如果是一 ...
- iOS 构建静态库
一..a 文件静态库打包 打开 Xcode 创建一个新的 Static Library 工程,取名 MyStaticLibrary. 创建工程完毕后,系统自动创建了一个同名类,添加一个方法用于测试. ...
- 手淘架构组最新实践 | iOS基于静态库插桩的⼆进制重排启动优化 抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15% 编译期插桩
抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15% 原创 Leo 字节跳动技术团队 2019-08-09 https://mp.weixin.qq.com/s/Drmmx5JtjG ...
- xcode6制作IOS .a静态库小记
xcode6制作IOS .a静态库小记 创建iOS静态库 简单写个打印的代码 编码完成之后,直接Run就能成功生成.a文件了,选择 xCode->Window->Organizer-> ...
- iOS基础 - 静态库
一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系 ...
- IOS .a静态库的和.framework制作
什么是库? 库是程序代码的集合,是共享程序代码的一种方式 根据源代码的公开情况,库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking 闭源库 不公 ...
- iOS之Xcode自动管理证书、打包adhoc和testFlight测试安装
引言:Xcode8 之后引用Automatic manage signing .对于开发者而言,在证书上栽的坑肯定不少. 准备:1.开发者账号是必须的吧. 2. Xcode设置account (不给 ...
- Java中基本的打包jar和war文件(包括eclipse打包操作)
前言: 为什么要打jar包? 1.举个例子,当编写一个工具类库,里面有十几个类,每个类对应一个class文件时,为了方便别人调用,是不是要装在一个文件中,方便传递和引用. 2.打jar包还有一个好处, ...
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上-b
用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 ...
随机推荐
- PHP 信号管理
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- Day6-python基础之模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- 修改github.com域名解析
http://ping.chinaz.com/ 首先在这个网站查询 github.com 然后选择ping速度最好的IP地址 将其填充到hosts文件中.win7路径:C:\Windows\Syst ...
- 微软unity 注入mvc
首先获取开源unity ,引用, 新建UnityDependencyResolver 继承IDependencyResolver,代码如下: public class UnityDependencyR ...
- webapi-test
- Java虚拟机及运行时数据区
1.Java虚拟机的定义 Java虚拟机(Java Virtual Machine),简称JVM.当我们说起Java虚拟机时,可能指的是如下三种不同的东西: 抽象的虚拟机规范 规范的具体实现 一个运行 ...
- Chrome Error Code:ERR_UNSAFE_PORT
最近在IIS上部署一些测试站点,发现87端口在使用Chrome浏览的时候打不开,但是使用IE却OK~ 点击更多信息,提示错误代码:ERR_UNSAFE_PORT 不安全的端口?这是什么情况? 度娘发现 ...
- Swift3.0P1 语法指南——继承
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- 使用ICSharpCode.SharpZipLib.Zip类库解压zip文件的方法
public static bool ZipExtractFile(string zipFilePath,string targetPath) { FastZip fastZip = new Fast ...
- s:if 判断
判断 ArrayList size 是否为0 <s:if test="list.size==0"> <s:if> <s:else> </s ...