在包執行檔(ipa)或包SDK(.a)時, 可以使用xcodebuild 去build專案, 這邊是以SDK當作範例說明,
1. 在專案內建立兩個Cocoa Touch Static Library
2. 在Build Settings裡面的Deployment內,將Installation Directiry設為/
並將Skip install 設為NO
3. 撰寫shell code,跟Project檔放在同一目錄
4. 用command line 執行shell檔
下面是shell code及說明

#!/bin/sh
set -ex

INSTALL_PATH=$WORKSPACE/outputFile
[ -z $INSTALL_PATH ] || INSTALL_PATH=$PWD/outputFile

rm -rf $INSTALL_PATH
mkdir -p $INSTALL_PATH
mkdir -p $INSTALL_PATH/simulator
mkdir -p $INSTALL_PATH/device

OUTPUT_NAME="testFile"
PROJ=yourProjectName.xcodeproj
SIMULATOR_TARGET=simulatorTarget
DEVICE_TARGET=deviceTarget

#==================================
# build file
#==================================
xcodebuild -target $SIMULATOR_TARGET clean
xcodebuild -project $PROJ -target $SIMULATOR_TARGET -sdk iphonesimulator ARCHS="arm64 i386 x86_64" VALID_ARCHS="arm64 i386 x86_64" INSTALL_ROOT=$INSTALL_PATH/simulator install
xcodebuild -target $DEVICE_TARGET clean
xcodebuild -project $PROJ -target $DEVICE_TARGET -sdk iphoneos ARCHS="armv7 arm64" VALID_ARCHS="armv7 arm64" INSTALL_ROOT=$INSTALL_PATH/device install

lipo -create $INSTALL_PATH/device/lib$DEVICE_TARGET.a $INSTALL_PATH/simulator/lib$SIMULATOR_TARGET.a -output $INSTALL_PATH/$OUTPUT_NAME.a
rm -rf $INSTALL_PATH/device $INSTALL_PATH/simulator

#==================================

上列參數需要置換成實際的參數, 下面則為說明
simulatorTarget 置換成在專案裡面的simulator target名稱
deviceTarget 置換成在專案裡面的實機 target名稱
yourProjectName 置換成在專案裡面的Project 名稱
outputFileName 置換成最後檔案的名稱

xcodebuild -target XXXXX clean 這一行主要是先做clean的動作, 個人習慣先clean再做任何build的動作
-project 指定要build哪個project
-target 指定要用哪個target
-sdk 指定要用哪個sdk, simulator用iphonesimulator 實機則用iphoneos
ARCHS 指定Architectures, 64bit的部分實機填入armv7 arm64, simulator則會填入arm64 i386 x86_64,
如果是32bit實機則填入armv7 armv7s, simulator則會填入i386 x86_64即可
VALID_ARCHS 跟ARCHS相同
INSTALL_ROOT 指定安裝路徑

查看原文 >>
相關文章