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,以及打包过程中遇到的问题和解决办法 ...
随机推荐
- CentOS 7 防火墙 firewall 的使用
1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disabl ...
- AnjularJS系列4 —— 单个页面加载多个ng-App
第四篇,插播, 单个页面加载多个ng-App 在写范例的时候发现的问题 一个页面有多个ng-app,angular只会处理第一个ng-app 需要加载两个ng-app,需要进行手动加载: angula ...
- [转载]El Capitan 中 SIP 介绍
这两天大家纷纷将 OS X 系统升级到了 El Capitan,然后发现,一些注入的工具无法使用了,某些系统目录无法使用了,第三方未签名的 kext 无法加载了,问题一堆堆的.这是因为,Mac OS ...
- 了解一下C++输入和输出的概念
我们经常用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上.从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件.除了以终端为对象进行输入和输出外,还经常 ...
- Django基础,Day4 - views 详解
在Django中,网页和其他内容是通过视图传递的.每个视图由一个简单的Python函数表示,Django将通过检查请求的URL(准确地说,是域名后面的部分URL)来选择一个视图. 例如,用户在浏览器中 ...
- 兼容好的JS图片上传预览代码
转 : http://www.codefans.net/articles/1395.shtml 兼容好的JS图片上传预览代码 (谷歌,IE11) <html xmlns="http:/ ...
- python模块简介
模块:用代码实现了某个功能的代码集合,功能模块化,节省时间,提高效率 一.模块的导入 导入模块,其实就是告诉python解释器去解释相应的.py文件 • 导入.py文件,解释器解释该.py文件 • 倒 ...
- jQuery学习过程问题笔记
1. jQuery中,$('selector').click(function(){})和用bind绑定:$('selector').bind('click',function(){})有什么区别? ...
- Yii2 assets注册的css样式文件没有加载
准备引入layui.css文件的,在LayuiAssets类中已经配置了资源属性 <?php namespace frontend\assets; use yii\web\AssetBundle ...
- Yii2 ActiveRecord save失败
当给AR写beforeSave方法时,注意返回true还是false.如果没有返回值,或者返回false,那么就不会存入数据库.如下 晚上写代码的时候beforeSave忘了返回true,导致无法存入 ...