iOS 静态库Framework

2017-11-06  本文已影响0人  淘代码者

最近维护一个旧项目,使用到openssl,但是从SVN更新下来代码,缺少openssl.framework,于是乎各种百度搜索,先是从阿里demo中找到openssl。这里有个小插曲,拿到阿里的demo打开,运行没发现openssl这个文件夹在哪啊,但是一个.m文件确实还用到了,但是为啥子不存在这个文件夹呢?一脸懵逼。于是乎在finder中查找openssl文件夹,原来在这里啊!


Snip20171106_1.png

终于找到了,问题这下可解决了吧,于是在项目中导入openssl这个文件夹,开始编译,然后问题从这里开始了,报了一堆错误,项目中导入文件的方式是图一这种导入方式:

图一

这也挺简单嘛,改成图二格式不就行了


图二

接着编译,又报错了,这次是openssl文件夹内部文件错误,如图三:

图三

于是乎有了这篇文章:

1.新建项目

选择cocoa Touch Framework

项目名openssl,这个名称和你最终要创建的XXX.framework中的XXX。

配置正确的项目名

2.导入相应的头文件

Snip20171106_8.png 在openssl.h文件中导入响应的头文件

3.配置工程

这就是公开的头文件

怎么公开头文件?


Snip20171106_12.png

默认好像是在project中一步操作让其移动到public中

Snip20171106_13.png Snip20171106_15.png Snip20171106_16.png Snip20171106_17.png

4.编译

选择Generic iOS Device 和任何一个模拟器 各自编译一次。

Snip20171106_20.png

5.查看和合并静态库

查看静态库

Snip20171106_22.png Snip20171106_23.png

查看支持的CPU框架

Snip20171106_24.png

使用的终端命令:

lipo -info openssl的文件路径

合并真机和模拟器静态库

Snip20171106_25.png

合并生成的是一个openssl.framework中的openssl文件,选择模拟器或者真机中任何一个openssl.framework替换掉其中openssl文件。至此这个你选择的openssl.framework 就是最终的openssl.framework。

6.导入到项目中使用

ps:

如果静态库中有Category类,就要在使用静态库项目的配置中添加-ObjC或者-all_load
如果创建的framework类中使用了.tbd,则项目中也要导入.tbd动态库

引自:iOS中,Framework和.a的打包及使用
合并静态库时遇到的问题参考
iOS 制作FrameWork 以及FrameWork通过包合并支持arm64 armv7 i386 架构
参考链接:
iOS Framework lipo报错 lipo: can't map input file
iOS开发--使用lipo命令制作模拟器与真机通用静态库
iOS 10 打包静态库支持armv7 静态库打包 .a armv7

上一篇下一篇

猜你喜欢

热点阅读