
.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里边的代码而已。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)