iOS 之.a静态库创建、打包以及静态库之间的引用

iOS 之.a静态库创建、打包以及静态库之间的引用,第1张

实际开发中离不开静态库的使用,记录一下

.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。

.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。

.a + .h + sourceFile = .framework。

创建

配置如下

加到主工程

配置路径

导入头文件 使用

targets->Build Phases->Copy Files->"+"你需要公开的头文件

所有流程都跟上面的一样,只是我们运行打包时要选择真机运行,你可以选择自己插上去的真机,也可以选择Generic ios Devices。当然不要忘记了设置支持所有真机机型架构: Build Active Architecture Only 设为NO。

分别使用真机或者Generic iOS Device 和 随便一个模拟器运行静态库 得到模拟器静态库和真机静态库 然后在Finder 中打开

Show in Finder

通过命令行合并 (注意 库的名称要一致)

lipo -create 第一个.a文件的绝对路径 第二个.a文件的绝对路径 -output 最终的.a文件路径

然后在工程中将这个.a 替换就支持真机和模拟器了

workspace里 Argos是主工程 LJNetwork是一个静态库工程 AGFramework.framework是打包好并导入到主工程的静态库

现在LJNetwork要引用AGFramework.framework库

只需要在LJNetwork的Build Setting —>User Header Search Paths 中 拉入AGFramework.framework中的Headers文件夹的路径

静态库LJNetwork引用 静态库LJFoundation的文件

配置如下

静态库LJNetwork要引用pods中的AFNetworking 如下设置

个人博客地址: https://youyou0909.github.io

iOS开发中支持静态库与动态库,不过使用动态库,上架会有麻烦。这里讲到如果创建静态库.a文件,其实很早之前公司要求做wifi的SDK的时候就开始涉及这个东西了,但一直没写出来。

首先新建一个静态库的项目

注意这里选择的不是模拟器运行,继续

这时候就得到了两个.a文件。

把Release-iphoneo和Debug-iphonesimulator复制到桌面新建的文件夹

最后使用命令lipo -create xxx.a xxx2.a -output xxx3.a

新建项目或者随便找个已创建测试项目,可直接拖进来放在Frameworks目录下

再把暴露的.h文件引进来

接下来,我把静态库和暴露的.h文件放入cocopods中使用,将静态库和暴露的.h上传至github上的仓库。并更新一个release版本。

更改cyhCheckphoneNum.podspec版本号,与spec.source_files和spec.vendored_libraries

更新github上的release版本

验证是否通过,通过上传至github

上传至cocopods

最后使用cocopods安装使用

ios中后缀名为a的文件是编译好的二进制文件,一般是第三方为了保密代码而使用的。a文件里边的内容是没法看懂的,只有配合.h头文件,知道它有哪些暴露出来的属性或者函数才能调用。调用方法和平时使用 .h .m 文件一样,只是你看不见.m里边的代码而已。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7900651.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存