假定工程名为test 静态库target名为 testLib
在Xcode菜单中选择File/New/Target,选择iOS/Other并点击Aggregate 命名为merge
在工程导航视图中选中test,然后选择刚刚建立的merge target。切换到Build Phases标签;
点击 "加号按钮",在弹出的菜单中选择New Run Script Phases
填入
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
|
# define static library target name
LIB_NAME
=
"testLib"
# define output folder environment variable
UNIVERSAL_OUTPUTFOLDER
=
$
{
BUILD_DIR
}
/
$
{
CONFIGURATION
}
-
universal
DEVICE_DIR
=
$
{
BUILD_DIR
}
/
$
{
CONFIGURATION
}
-
iphoneos
SIMULATOR_DIR
=
$
{
BUILD_DIR
}
/
$
{
CONFIGURATION
}
-
iphonesimulator
# Step 1. Build Device and Simulator versions
# insert such -arch i386 before BUILD_DIR assign arch
xcodebuild
-
target
"${LIB_NAME}"
ONLY_ACTIVE_ARCH
=
NO
-
configuration
$
{
CONFIGURATION
}
-
sdk
iphoneos
BUILD_DIR
=
"${BUILD_DIR}"
BUILD_ROOT
=
"${BUILD_ROOT}"
xcodebuild
-
target
"${LIB_NAME}"
-
configuration
$
{
CONFIGURATION
}
-
sdk
iphonesimulator
BUILD_DIR
=
"${BUILD_DIR}"
BUILD_ROOT
=
"${BUILD_ROOT}"
# Cleaning the oldest and make sure the output directory exists
if
[
-
d
"${UNIVERSAL_OUTPUTFOLDER}"
]
then
rm
-
rf
"${UNIVERSAL_OUTPUTFOLDER}"
fi
mkdir
-
p
"${UNIVERSAL_OUTPUTFOLDER}"
# Step 2. Create universal binary file using lipo
lipo
-
create
"${DEVICE_DIR}/lib${LIB_NAME}.a"
"${SIMULATOR_DIR}/lib${LIB_NAME}.a"
-
output
"${UNIVERSAL_OUTPUTFOLDER}/lib${LIB_NAME}.a"
# Last touch. copy the header files. Just for convenience
cp
-
R
"${DEVICE_DIR}/include"
"${UNIVERSAL_OUTPUTFOLDER}/"
#open the universal dir
open
"${UNIVERSAL_OUTPUTFOLDER}/"
#delete DEVICE and SIMULATOR build file
#rm -rf "${DEVICE_DIR}"
#rm -rf "${SIMULATOR_DIR}"
|
注意:其中LIB_NAME="testLib" 为对应要合并的静态库target名称
本脚本根据merge target的debug 或者 release 来决定打出的.a为debug 或者 release
run merge target 即可弹出合并后的静态库路径
转载请注明:天狐博客 » iOS开发之xcode6中合并通用静态库脚本