1.新建.a静态库工程
需要选择Static Library
静态库工程模板新建工程,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/a4a1edf1729e49e07762014392a766f2.webp?x-image-process=image/format,png)
实现需要打包的类,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/9c5ca7f281aa963cad6ed80c2cf39602.webp?x-image-process=image/format,png)
2.设置需要暴露的头文件
添加Headers
, 步骤为:TARGET
->Build Phases
->点+
号->New Headers Phase
,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/07cefb3ee32428f91cefbf46f2785f34.webp?x-image-process=image/format,png)
然后找到Heaers(0 items)
一栏, 点+
号添加头文件, 如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/b78fac6c81e2a7d2e6f6e8c6c1ae4162.webp?x-image-process=image/format,png)
接着添加需要公开的头文件Encryption.h
, 如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/1855874e0a1be11bb44cfec5a267b9fb.webp?x-image-process=image/format,png)
添加完成后, Encryption.h
会出现在Project
一栏中, 需要手动拖入Public
一栏中进行公开, 如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/fb086a5ae6ae7c45e2253117ef2736c5.webp?x-image-process=image/format,png)
拖入后, Public
中的头文件就是公开的头文件了, 如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/c6f14aa8925a2c61782f27ff60edcc85.webp?x-image-process=image/format,png)
3.设置Scheme
选择Edit Scheme
,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/26af431bf7b215ef16353c080e0ed51f.webp?x-image-process=image/format,png)
选择Debug
模式,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/0753e3be8f6f769173318ffab1c20e33.webp?x-image-process=image/format,png)
4.编译模拟器版本的.a静态库
选择模拟器,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/4232b17c005aad10ea1b8b8b00cc3622.webp?x-image-process=image/format,png)
选择模拟器后开始编译,编译成功后,Products
中的libEncryption.a
会由红色变为黑色,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/fe45731cb55740e86303a786762e3411.webp?x-image-process=image/format,png)
5.编译真机版本的.a静态库
选择真机,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/22f3104c429965974a16eeb9f50a9b67.webp?x-image-process=image/format,png)
选择真机后开始编译,编译成功后,Products
中的libEncryption.a
也会由红色变为黑色.
6.合并模拟版本和真机版本的静态库
选择libEncryption.a
,右键选择Show in Finder
,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/3e6a0c51b637c465b5fafa66e6bafd04.webp?x-image-process=image/format,png)
进入Finder后,可以看到编译后的模拟器和真机版本的.a静态库,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/7490d257f6c0ed4e619c83050aa9c51f.webp?x-image-process=image/format,png)
打开终端,使用命令行进行版本合并,具体格式为:
lipo -create "真机版本.a静态库路径" "模拟器版本.a静态库路径" -output "合并后的.a静态库路径"
注意中间要有空格.
在终端中输入命令行,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/cff6dc592727ef7e2f5a16a146b21eed.webp?x-image-process=image/format,png)
终端执行成功后会生成一个合并版本的.a静态库,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/991b063bd4b3ae72eddef4af767ac027.webp?x-image-process=image/format,png)
7.测试静态库
新建工程,将libEncryption.a
和Encryption.h
文件拖入工程(注意,此处libEncryption.a
是上图合并生成后的,不可将Product文件夹下面的libEncryption.a
直接拖过来,否则因为路径问题模拟器编译会报错),如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/7a400d68587ededb504ed7a078336c89.webp?x-image-process=image/format,png)
在ViewController.m
引入Encryption.h
头文件,调用Encryption.h
暴露出来的加密方法,ViewController.m
中代码如下:
#import "ViewController.h"
#import "Encryption.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//调用Encryption中的加密方法
NSLog(@"-----%@", [Encryption md5EncryptWithString:@"hello"]);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
调试窗口成功输出打印信息,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/ad202367c09bf37e424766377f92b45e.webp?x-image-process=image/format,png)
至此,.a静态库制作完毕!