shell打包


##!/bin/bash -ilex
#set -u
set +v
set +xe
#set +x


#注意:腳本目錄和xxxx.xcodeproj要在同一個目錄受啥,如果放到其他目錄均牢,請自行修改腳本毅桃。
#要build的target名
TARGET_NAME=CCPiPhoneSDK


#################################

PROJECT_NAME=$TARGET_NAME
### 打包模式 Debug/Release 默認是Release
DEVELOPMENT_MODE=Release
SCRIPT_DIR=$(pwd)
PROJECT_DIR=$SCRIPT_DIR
BUILD_DIR=$SCRIPT_DIR/Build
#真機build生成的頭文件的文件夾路徑
DEVICE_DIR_INCLUDE=./${PROJECT_NAME}/Device
#真機build生成的.a文件路徑
DEVICE_DIR_A=${BUILD_DIR}/${DEVELOPMENT_MODE}-iphoneos/lib${PROJECT_NAME}.a
#模擬器build生成的.a文件路徑
SIMULATOR_DIR_A=${BUILD_DIR}/${DEVELOPMENT_MODE}-iphonesimulator/lib${PROJECT_NAME}.a
#目標文件夾路徑(也就SDK的文件:.a文件 和 頭文件)
INSTALL_DIR=${BUILD_DIR}/Products/${PROJECT_NAME}
#目標頭文件的文件夾路徑
INSTALL_DIR_Headers=${BUILD_DIR}/Products/${PROJECT_NAME}/Headers
#目標.a路徑
INSTALL_DIR_A=${BUILD_DIR}/Products/${PROJECT_NAME}/lib${PROJECT_NAME}.a

printlog () {
TIME=$(date +%F_%T)
if [ $1 == "info" ];then
echo -e "\n[$TIME][INFO]  $2 \n"
elif [ $1 == "error" ];then
echo -e "\n[$TIME][ERROR] ****** $2 ******\n"
elif [ $1 == "warn" ];then
echo -e "\n[$TIME][WARN] $2 \n"
else
echo -e "\nprintlog parameter error.\n"
fi
}

check_result() {
if [ $? -eq 0 ];then
printlog info "$* 成功"
else
printlog error "$* 失敗"
exit 250
fi
}

###################################################################
info () {
printlog info "Current TarGet_Name: $TARGET_NAME"
printlog info "打包模式: $DEVELOPMENT_MODE"
printlog info "工程名稱: $PROJECT_NAME"
printlog info "腳本路徑:  $SCRIPT_DIR"
printlog info "工程路徑: $PROJECT_DIR"
printlog info "Build路徑: $BUILD_DIR"
printlog info "真機build生成的頭文件的文件夾路徑: $DEVICE_DIR_INCLUDE"
printlog info "真機.a路徑: ${DEVICE_DIR_A}"
printlog info "模擬器build生成的.a文件路徑: $SIMULATOR_DIR_A"
printlog info "SDK的文件夾路徑: ${INSTALL_DIR}"
printlog info "頭文件的文件夾路徑: ${INSTALL_DIR_Headers}"
printlog info "目標.a路徑: ${INSTALL_DIR_A}"
}

###################################################################
ready() {
printlog info "編譯前準備..."
sleep 3
printlog info "判斷${BUILD_DIR}是否存在,存在即刪除."
if [ -d "${BUILD_DIR}" ]
then
rm -rf "${BUILD_DIR}"
fi
printlog info "判斷${INSTALL_DIR} 是否存在零远,存在即刪除.并重新創(chuàng)建目錄${INSTALL_DIR}"
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
printlog info "準備完成."
}

compile () {
###################################################################

printlog info "編譯開始..."
#echo "======盒子已經(jīng)準備好了,開始生產(chǎn).a 并合成裝到盒子里吧======"
#build之前clean一下
xcodebuild -target ${target_Name} -configuration ${development_mode} -sdk iphonesimulator clean
xcodebuild -target ${target_Name} -configuration ${development_mode} -sdk iphoneos clean
printlog info "模擬器build"
xcodebuild -target ${TARGET_NAME} -configuration ${DEVELOPMENT_MODE} -sdk iphonesimulator #1>/dev/null
check_result "模擬器build"
printlog info "真機build"
xcodebuild -target ${TARGET_NAME} -configuration ${DEVELOPMENT_MODE} -sdk iphoneos #1>/dev/null
check_result "真機build"
printlog info "編譯完成."
sleep 3

###################################################################

printlog info "編譯后操作"
printlog info "復制頭文件到目標文件夾"
cp -R "${DEVICE_DIR_INCLUDE}" "${INSTALL_DIR_Headers}"
printlog info "合成模擬器和真機.a包"
if [ -f "${SIMULATOR_DIR_A}" ];then
lipo -create "${DEVICE_DIR_A}" "${SIMULATOR_DIR_A}" -output "${INSTALL_DIR_A}" 1>/dev/null
check_result "合成"
else
printlog info "將真機包導入目標文件"
cp -R "${DEVICE_DIR_A}" "${INSTALL_DIR}"
fi
# -f 判斷文件是否存在
if [ -f "${INSTALL_DIR_A}" ];then
printlog info "驗證合成包是否成功"
lipo -info "${INSTALL_DIR_A}"
check_result "驗證"
fi

printlog info "本次任務完成"
printlog info "打印最終文件路徑: ${INSTALL_DIR}"
printlog info "列出目錄下所有文件"
ls "${INSTALL_DIR}"
}
info
ready
compile

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末壳贪,一起剝皮案震驚了整個濱河市直撤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琼蚯,老刑警劉巖酬凳,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遭庶,居然都是意外死亡宁仔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門峦睡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翎苫,“玉大人权埠,你說我怎么就攤上這事〖宓” “怎么了弊知?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長粱快。 經(jīng)常有香客問我秩彤,道長,這世上最難降的妖魔是什么事哭? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任漫雷,我火速辦了婚禮,結果婚禮上鳍咱,老公的妹妹穿的比我還像新娘降盹。我一直安慰自己,他們只是感情好谤辜,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布蓄坏。 她就那樣靜靜地躺著,像睡著了一般丑念。 火紅的嫁衣襯著肌膚如雪涡戳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天脯倚,我揣著相機與錄音渔彰,去河邊找鬼。 笑死推正,一個胖子當著我的面吹牛恍涂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播植榕,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼再沧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尊残?” 一聲冷哼從身側響起炒瘸,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夜郁,沒想到半個月后什燕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粘勒,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡竞端,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了庙睡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片事富。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡技俐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出统台,到底是詐尸還是另有隱情雕擂,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布贱勃,位于F島的核電站井赌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贵扰。R本人自食惡果不足惜仇穗,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戚绕。 院中可真熱鬧纹坐,春花似錦、人聲如沸舞丛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽球切。三九已至谷誓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吨凑,已是汗流浹背片林。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留怀骤,地道東北人费封。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像蒋伦,于是被迫代替她去往敵國和親弓摘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容