Framewrok真機(jī)模擬器合并的流程、原因就不說了。
為什么要寫這篇文章了,因?yàn)樽约阂渤赃^苦,一開始也是各種網(wǎng)上收,
可是好多腳本要嘛格式一塌糊涂,要嘛腳本堆在一起,要嘛編譯不了(很多都是worksapce用的是project的腳本,project用的是workspace的腳本),反正一開始新手問題超級(jí)多,并且修改路徑也麻煩!所以寫了這么個(gè)腳本(其實(shí)核心都是一樣的)。
該腳本有以下優(yōu)點(diǎn)
1、方法都封裝好,便于新手一個(gè)一個(gè)方法去看,不至于頭大
2、用戶可以很簡單的自定義輸出目錄
3、代碼更精簡、更簡單,應(yīng)該算是傻瓜式的啦
4、自定幫你清理緩存,打出的framework不會(huì)出現(xiàn) 咦,為啥代碼改過還是不變!
5、最重要,支持project和workspace的編譯,只需要把相應(yīng)的代碼打開注釋就行? 很多網(wǎng)上的教程都沒有哦
腳本在下面,拷貝過去直接可以用 (這個(gè)簡書沒有顯示代碼的格式嗎?代碼拷貝上來超級(jí)丑)
#打開這個(gè)注釋你就可以編譯workspace
#STYLE="0"
STYLE="1"
#用來存放合并的framework
if ["${STYLE}"=="0"];then
OUTPUTFOLDER=${BUILD_DIR}
else
OUTPUTFOLDER=build
fi
#合并后的文件夾名稱后綴
OUTPUTFOLDER_SUFFIX="universal"
#用戶自定義的目錄,可以幫你拷貝到你想要的目錄
LIB_OUTPUTFOLDER=../Libs
WORKSPACE_NAME=${PROJECT_NAME}.xcworkspace
TARGET_NAME="JDFramework"
YO_SCHEME=${PROJECT_NAME}
function build_static_library {
#編譯workspace
if ["${STYLE}"=="0"];then
xcodebuild -workspace ${WORKSPACE_NAME} \
-scheme ${YO_SCHEME} \
-sdk ${1} \
-configuration ${2}
else
#編譯工程
xcodebuild-target"${TARGET_NAME}"-sdk ${1} -configuration ${2} clean build
fi
}
function make_fat_library {
xcrun lipo -create \
"${OUTPUTFOLDER}/$1-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}"\
"${OUTPUTFOLDER}/$1-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"\
-output \
"${OUTPUTFOLDER}/$1-${OUTPUTFOLDER_SUFFIX}/${PROJECT_NAME}.framework/${PROJECT_NAME}"
}
#重新創(chuàng)建目錄
function rmkdir_library {
rm -rf"${OUTPUTFOLDER}/${1}-${OUTPUTFOLDER_SUFFIX}"
mkdir -p"${OUTPUTFOLDER}/${1}-${OUTPUTFOLDER_SUFFIX}"
}
#拷貝一份頭文件
function cp_library_header {
cp -R"${OUTPUTFOLDER}/${1}-iphonesimulator/${PROJECT_NAME}.framework""${OUTPUTFOLDER}/${1}-${OUTPUTFOLDER_SUFFIX}/${PROJECT_NAME}.framework"
}
#根據(jù)環(huán)境編譯
function build_platform {
#先清理老的
rm -rf"${OUTPUTFOLDER}"
rm -rf \
"${LIB_OUTPUTFOLDER}/${PROJECT_NAME}.framework"
#編譯模擬器
build_static_library iphonesimulator ${1}
#編譯真機(jī)
build_static_library iphoneos ${1}
#重新創(chuàng)建目錄
rmkdir_library ${1}
#因?yàn)閒ramework的合并,lipo只是合并了最后的二進(jìn)制可執(zhí)行文件,所以其它的需要我們自己復(fù)制過來
cp_library_header ${1}
#合并模擬器和真機(jī)的架構(gòu)
make_fat_library ${1}
#拷貝framewrok到用戶的目錄
ditto ${OUTPUTFOLDER}/$1-${OUTPUTFOLDER_SUFFIX}/${PROJECT_NAME}.framework \
"${LIB_OUTPUTFOLDER}/${PROJECT_NAME}.framework"
}
build_platform ${CONFIGURATION}
#open "${OUTPUTFOLDER}"