iOS静态库打包

iOS 开发打包静态库.a文件,本人一步步教你用脚本打包

准本工作

  • 创建一个AntKeyBoard的静态工程(AntKeyBoard 替换你项目的名字)

D51B8026DE03C0B4E121CF0DA29CEBBE

  • 然后添加一个新Target 选择Cross-platform,新建一个Aggregate,命名为AntKeyBoardShell

    F635760DF63B28BA2BA7E8301F443D51

  • 添加一个 Run Script

    5C81B64F2B19BE7C49F9B71A6BDF464E

  • 新建一个shell 文件 命名为build_AntKeyBoard_script.sh

    F39247846890AF9A29EDA447021C4406

  • 目录如下在新建的Run Script写下新建shell文件的路径目录

67DB4EC3EECE6C46B9600CB5B4BC1E20

  • 编码完成设置需要暴漏出来的头文件

    D6BEA3660941DCAAE0E3BD7EBD2C876F

  • 添加头文件 并将头文件移动到Public里面

AD994E9F81531DC6721A97FFBAB678F7

*最后写入打包脚本(可以粘贴到你的shell文件修改相关配置)运行AntkeyBoardShell 项目3647E933D8A781432751493E513474EC

需要注意的事项

  • 需要支持所有位数的设备,arm64 armv7 armv7s(配置Build Active Architecture Only)这个配置的作用是开发者可以设置Xcode,仅编译生成满足当前插入的设备的处理器二进制文件。当前插入设备就是你正在用于调试的机器。在日常开发中为了提高编译的速度,我们可以把Debug模式下的设置为YES,但是Release模式下必须设置为NO,否则打包上线的文件可能就会出问题了。

    在开发SDK的时候,我们把所有的都设置为NO,这样打包出来的文件就不会出问题了。

    为了让脚本可以适配Debug和Relaese模式。我们使用Xcode自带的配置变量${CONFIGURATION}。在打包的时候,使用该变量即可。

    37A4CF148422C47CFD2F388FE96C141E

  • 需要可以配置Debug和Release版本(打包修改这里决定打什么版本)

    BDC355D9224F628DDD985B11FA6D39EB

  • 需要支持模拟器和真机

脚本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/bin/sh
# build_AntKeyBoard_script.sh
# AntKeyBoard
#
# Created by 寇广超 on 2018/5/28.
# Copyright © 2018年 寇广超. All rights reserved.
PROJ=${PROJECT_NAME}.xcodeproj
LIB_STATIC_NAME=AntKeyBoard #把项目名改为自己的即可使用
TEMP_DIR=~/Desktop/XcodeTestTempBuild#打包出来的文件的目录,可以自己定义
IPHONE_OS_DIR=${TEMP_DIR}/${CONFIGURATION}-iphoneos
IPHONE_SIMULATOR_DIR=${TEMP_DIR}/${CONFIGURATION}-iphonesimulator
#创建真机库文件目录
if [[ ! -d ${IPHONE_OS_DIR} ]]; then
mkdir -p ${IPHONE_OS_DIR}
fi
#创建模拟器库文件目录
if [[ ! -d ${IPHONE_SIMULATOR_DIR} ]]; then
mkdir -p ${IPHONE_SIMULATOR_DIR}
fi
#编译真机库文件
xcodebuild -project ${PROJ} \
-scheme ${LIB_STATIC_NAME} \
-configuration ${CONFIGURATION} \
-sdk iphoneos \
clean \
build \
CONFIGURATION_BUILD_DIR=${IPHONE_OS_DIR}
# -archivePath ${IPHONE_OS_DIR}
#编译模拟器库文件
xcodebuild build -project ${PROJ} \
-scheme ${LIB_STATIC_NAME} \
-configuration ${CONFIGURATION} \
-sdk iphonesimulator \
clean \
build \
CONFIGURATION_BUILD_DIR=${IPHONE_SIMULATOR_DIR}
# -archivePath ${IPHONE_SIMULATOR_DIR}
# 静态库文件
LIB_NAME=lib${LIB_STATIC_NAME}.a
#合并模拟器文件和真机文件
lipo -create ${IPHONE_OS_DIR}/${LIB_NAME} ${IPHONE_SIMULATOR_DIR}/${LIB_NAME} -output ${TEMP_DIR}/${LIB_NAME}
lipo -info ${LIB_NAME}
#拷贝头文件和.a文件到同一目录下
##建立SDK目录
pushd ${TEMP_DIR}
if [[ -d ${LIB_STATIC_NAME} ]]; then
rm -fR ${LIB_STATIC_NAME}
fi
mkdir -p ${LIB_STATIC_NAME}
##拷贝.a和头文件
cp -fR ${LIB_NAME} ${LIB_STATIC_NAME}
rm -fR ${LIB_NAME}
cp -f ${IPHONE_SIMULATOR_DIR}/include/${LIB_STATIC_NAME}/* ${LIB_STATIC_NAME}
#打包为zip文件
PACKAGE_DATE=`date '+%Y%m%d%H'`
GIT_VERSION=`git log --abbrev-commit|head -1|cut -d' ' -f 2`
SDK_ZIP_NAME=iOS_${LIB_STATIC_NAME}_${PACKAGE_DATE}_${GIT_VERSION}_${CONFIGURATION}.zip
zip -qr ${SDK_ZIP_NAME} ${LIB_STATIC_NAME}

3647E933D8A781432751493E513474EC

ps 这里可能存在的问题就是脚本没有运行的权限,在终端cd到build_AntKeyBoard_script.sh 目录 输入命令

1
sudo chmod +x build_AntKeyBoard_script.sh

对shell文件进行授权,再次运行即可。运行成功后,即可看到包打好了。文件的命名包括静态库名字,日期,Debug/Release版本。

5A154547DCF6929A089DD353EB586DAA

本文标题:iOS静态库打包

文章作者:cuijian

发布时间:2018年05月28日 - 17:05

最后更新:2018年05月29日 - 09:05

原始链接:http://www.cuijiajun.xin/iOS静态库打包.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

支持原创,你想给多少就多少!