iOS 打包静态库.a文件(真机版 + 虚拟机)

时间:2021-09-17 22:49:02

我们以打包IOS开发中封装的高地地图基础功能包 GDMap为例。

iOS  打包静态库.a文件(真机版 + 虚拟机)

1>我们需要准备好需要打包的GDMap

 
iOS  打包静态库.a文件(真机版 + 虚拟机) 

2>接下来我们开始新建一个工程文件取名GDMap

iOS  打包静态库.a文件(真机版 + 虚拟机)
 
iOS  打包静态库.a文件(真机版 + 虚拟机)
 

3>删掉无用自动生成的.h 和.m 文件,把准备好的GDMap拖入工程中,注意文件放在一级目录下。

iOS  打包静态库.a文件(真机版 + 虚拟机)
 

4>接下来我们选择出来需要暴露出来的头文件.h

iOS  打包静态库.a文件(真机版 + 虚拟机)
 

我选择暴露出所有的头文件如下图

iOS  打包静态库.a文件(真机版 + 虚拟机)

5>接下来我们配置下工程文件,修改

Product->Scheme-> Edit Scheme下 为 Release

iOS  打包静态库.a文件(真机版 + 虚拟机)iOS  打包静态库.a文件(真机版 + 虚拟机)

6>配置完之后我们就可以选择真机进行运行在运行后,再虚拟机运行一次,我们找到生成的.a文件右键选择show in finder就可以了。

iOS  打包静态库.a文件(真机版 + 虚拟机)iOS  打包静态库.a文件(真机版 + 虚拟机)

7>合并两个.a 文件,使其能够同时在模拟器及真机上使用

lipo -create 要合的两个文件1路径 要合的两个文件2路径 -output .../Desktop/GDMap.a(生成路径)

iOS  打包静态库.a文件(真机版 + 虚拟机)

注意:

选择 编译的设备,iOS Device 编译出来的是真机的,选择  模拟器 编译出来的是模拟器版本

如果使用别人的,不知道他是通过什么方式编译来的。可以通过 终端命令行来查看

lipo -info  要查看的文件的路径(直接拖过来)

armv7 arm64 真机

i386 模拟器

使用的时候:

添加静态库.a文件到工程中去,同时添加.h文件

通过查看.h文件来使用这个静态库

出现如下静态库错误:使用的静态库的架构不对

Undefined symbols for architecture i386:

"_OBJC_CLASS_$_StaticLibrary", referenced from:

objc-class-ref in ViewController.o

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

错误:

xcrun: error: active developer path ("/Users/XJW/Desktop/Xcode.app/Contents/Developer") does not exist, use `xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools (or see `man xcode-select`)

解决方法:

sudo xcode-select --switch /Applications/Xcode.app