手把手教你制作.a静态库(iOS开发)

简介:

知识普及:

什么是库?

库是程序代码的集合,是共享程序代码的一种方式

根据源代码的公开情况,库可以分为 2 种类型

开源库

公开源代码,能看到具体实现

比如 SDWebImage 、 AFNetworking

闭源库

不公开源代码,是经过编译后的二进制文件,看不到具体实现

主要分为:静态库、动态库

静态库和动态库

静态库和动态库的存在形式

静态库: .a 和 .framework

动态库: .dylib 和 .framework

静态库和动态库在使用上的区别

静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 (左图所示)

动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存 (右图所示)

1240

1240

需要注意的是:项目中如果使用了自制的动态库,不能被上传到 AppStore!

制作 .a

1、新建项目-> 选择 “Cocoa Touch Static Library”

1240

2、添加库需要包含的源代码,将你工程里的代码添加到打静态库工程里:

1240

1240

3、配置一下工程:

1240

4、选择需要暴露出来的 .h 文件, .m 文件会自动编译到 .a 文件中:

1240



1240

需要暴漏出的文件类在这里设置:

1240

引入的网络框架设置:(有些会自动引入,有些需要手动引入,根据编译报错,可以检查。)

1240

5、编译前检查一下是debug模式还是release模式,选择release模式:

分debug和release模式:

Debug-iphoneos 文件夹里面的东西是用在真机上的

Debug-iphonesimulator 文件夹里面的东西是用在模拟器上的

如果 Scheme 是 Release 模式,生成的文件夹就以 Release 开头


1240


1240



6、选择真机设备,然后 Command+B 编译, libSPCustomerServerse.a 文件从红色变为黑色

(注意建议先选择真机,这样才会变色,如果先选择模拟器,那么编译通过了,但是不会由红变黑,实际上是已经编译了模拟器的,只是给人一种假象,好像没编译一样,还是红色的)

1240

1240

7、选择模拟器,建议选择iPhone6以上的(选择高级点的,低级的也可用,若选了低级的,高级的有可能就不适配了)然后依然 Command+B 编译,模拟器和真机环境下用的 .a 文件是分开的。


1240


8、合并模拟器(release-iphonesimulator)和真机(release-iphoneos)下的.a,以便支持真机和模拟器,合并后的.a大小大约是不合并的2倍左右。

show in finder

1240

合并步骤:

举例:1、新建文件夹:"dabao";

2、将上述的release-iphonesimulator和release-iphoneos两个文件拷贝进"dabao"文件夹。

1240

3、打开终端,执行以下操作:

一、在终端输入:lipo  -create 

二、将release-iphonesimulator下的.a拖进终端,输入一个空格;

三、继续将release-iphoneos 下.a 拖进终端,输入空格;

四、继续输入:-output ,打个空格;

五、输入合并后的.a所要放的文件路径(这里举例依然放在“dabao”这个文件夹下,则我的电脑的路径为:/Users/ntalker-zhou/Desktop/dabao/libSPCustomerServerseSDK.a),回车,在相应的文件下即可生成一个.a,该.a即是合并后的.a


1240

4、检查合并后的.a是不是满足所有要求,依然在终端进行以下操作:

一、在终端输入:lipo  -info   ;

二、将合并后的.a拖进终端 ,回车;


1240


(注意:终端每一步记得要用空格隔开,否则会出错哦!)

这样.a 就成功制作出了,只需要将暴漏的头文件以及制作的.a放入工程,别人就可以使用你的程序了,再也不用担心源码暴漏或别人随意修改你的代码了,不过如果有图片资源,图片资源是不能打进.a的,需要在外面添加的哦。


(有时候为了编译通过,根据需要,需要设置一下工程配置比如我需要配置xml等…




文/哇哇卡(简书作者)
原文链接:http://www.jianshu.com/p/a1dc024a8a15#
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。










本文转自ljianbing51CTO博客,原文链接:http://blog.51cto.com/ljianbing/1887229 ,如需转载请自行联系原作者






相关文章
|
11天前
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
104 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
|
2月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
1月前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
127 66
|
22天前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
|
1月前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
150 3
|
1月前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
2月前
|
存储 前端开发 Swift
探索iOS开发:从新手到专家的旅程
本文将带您领略iOS开发的奇妙之旅,从基础概念的理解到高级技巧的掌握,逐步深入iOS的世界。文章不仅分享技术知识,还鼓励读者在编程之路上保持好奇心和创新精神,实现个人成长与技术突破。
|
2月前
|
安全 IDE Swift
探索iOS开发之旅:从初学者到专家
在这篇文章中,我们将一起踏上iOS开发的旅程,从基础概念的理解到深入掌握核心技术。无论你是编程新手还是希望提升技能的开发者,这里都有你需要的指南和启示。我们将通过实际案例和代码示例,展示如何构建一个功能齐全的iOS应用。准备好了吗?让我们一起开始吧!
|
2月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
48 2
|
2月前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
63 9

热门文章

最新文章