iOS开发 .a转成.framework 编译openssl

一、方法

方法一

假设有静态库.a: liblibA


image.png

想转成libA.framework


image.png

第一步

把liblibA和头文件放到目录Test中
创建文件夹并命名为:libA.framework

cd ~/Desktop/Test
mkdir libA.framework

第二步

把liblibA去掉.a后缀,并改名为libA,放到libA.framework目录下

mv liblibA.a libA.framework/libA

第三步

在libA.framework文件夹中创建Headers目录,并把liblibA的头文件放进去。

mkdir -p libA.framework/Headers
cp include/* libA.framework/Headers

第四步

如存在libA.h,则在里面直接添加:

#import <libA/libA.h>
#import <libA/LeoTest.h>
#import <libA/Test.h>

如不存在,则创建libA.h文件,在里面添加上面的引用。

第五步

如果想把不同架构合并,可以使用lipo -create
参考:lipo命令使用
如果还有个库:other.a,想把他也放到libA.framework中,可以先把他解包成.o,然后进行合并,
参考:iOS开发 静态库.a/.framework合并及加载

调用对比:

image.png

image.png

方法二

第一步

把liblibA和头文件放到目录Test中
创建文件夹并命名为:libA.framework,创建Headers和Resources

mkdir -p libA.framework/Versions/A/Headers
mkdir -p libA.framework/Versions/A/Resources
第二步

创建软链接

ln -s A libA.framework/Versions/Current
ln -s Versions/Current/Headers libA.framework/Headers
ln -s Versions/Current/Resources libA.framework/Resources
ln -s Versions/Current/libA libA.framework/libA
第三步

复制.a到Versions/A目录,改为libA

cp liblibA.a libA.framework/Versions/A/libA
第四步

复制头文件到Versions/A/Headers

cp -r include/* libA.framework/Versions/A/Headers
第五步

如存在libA.h,则在里面直接添加:

#import <libA/libA.h>
#import <libA/LeoTest.h>
#import <libA/Test.h>

如不存在,则创建libA.h文件,在里面添加上面的引用。

二、编译openssl静态库.a

官方编译教程

1、下载openssl

源代码
github源代码

2、查看当前xcode命令行路径

xcode-select -print-path
把真实路径替换到下面命令中

3、配置环境变量

cd到openssl目录

cd /Users/leo/Desktop/openssl-1.1.1w

执行下面指令:

export CC=clang;
export CROSS_TOP=/Applications/Xcode_15.2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
export CROSS_SDK=iPhoneOS.sdk
export PATH="/Applications/Xcode_15.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:$PATH"

4、编译配置

./Configure ios64-cross no-shared no-dso no-hw no-engine --prefix=/Users/leo/Desktop/openssl_sdk

./Configure配置说明:

arm64架构:ios64-cross
armv7架构:ios-cross
x86_64模拟器架构:ios64-sim-cross

如果出现下图则代表配置成功:


image.png

执行该命令后,会生成Makefile文件,可以修改里面的配置,以修改最终的编译结果。


image.png

也可以修改15-ios.conf里面的配置
image.png

image.png

5、编译

编译openssl:

make

把编译后的openssl放到--prefix指定的路径:/Users/leo/Desktop/openssl_sdk:

make install

清理编译:

make clean

在openssl_sdk目录如下:

image.png

如果想要使用国密:2/3/4,还需要到如下文件:
image.png

其他编译OpenSSL文章
OpenSSL-for-iPhone
GRKOpenSSLFramework
编译好的OpenSSL

三、openssl .a转成.framework

可以转成.framework静态库,也可以转成.framework动态库。
新建OpenSSL.Framework,把libcrypto.a和libssl.a以及头文件放到OpenSSL.Framework中,暴露所有的头文件,并新建在OpenSSL.h中把所有文件import:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容