打包靜態(tài)庫

!/bin/sh

Script.sh

VideoPlayerLib

Created by lzz on 2019/4/10.

Copyright ? 2019 lzz. All rights reserved.

注意:腳本目錄和xxxx.xcodeproj要在同一個目錄,如果放到其他目錄,請自行修改腳本。

要build的target名

target_Name=XCReporter

echo "target_Name=${target_Name}"

工程名

project_name=target_Name echo "project_name={project_name}"

打包模式 Debug/Release 默認(rèn)是Release

development_mode=Release

當(dāng)前腳本文件所在的路徑 $(pwd)

SCRIPT_DIR=(pwd) echo "======腳本路徑={SCRIPT_DIR}======"

工程路徑

PROJECT_DIR=${SCRIPT_DIR} 和下面寫法也樣

PROJECT_DIR=SCRIPT_DIR echo "======工程路徑={PROJECT_DIR}======"

build之后的文件夾路徑

build_DIR=SCRIPT_DIR/Build echo "======Build路徑={build_DIR}======"

真機build生成的.framework 文件路徑

DEVICE_DIR={build_DIR}/{development_mode}-iphoneos/${project_name}.framework

真機build生成的sdk文件路徑

DEVICE_DIR_A={build_DIR}/{development_mode}-iphoneos/{project_name}.framework/{project_name}
echo "======真機.framework路徑=${DEVICE_DIR_A}======"

模擬器build生成的sdk文件路徑

SIMULATOR_DIR_A={build_DIR}/{development_mode}-iphonesimulator/{project_name}.framework/{project_name}
echo "======模擬器.framework路徑=${SIMULATOR_DIR_A}======"

目標(biāo)文件夾路徑(也就SDK的文件:.framework文件 和 bundle文件)

INSTALL_DIR={build_DIR}/Products/{project_name}
echo "======SDK的文件夾路徑=${INSTALL_DIR}======"

目標(biāo) sdk 路徑

INSTALL_DIR_A={build_DIR}/Products/{project_name}/{project_name}.framework/{project_name}
echo "======目標(biāo)sdk路徑=${INSTALL_DIR}======"

判斷build文件夾是否存在,存在則刪除

rm -rf 命令的功能:刪除一個目錄中的一個或多個文件或目錄

if [ -d "{build_DIR}" ] then rm -rf "{build_DIR}"
fi

判斷目標(biāo)文件夾是否存在,存在則刪除該文件夾

if [ -d "{INSTALL_DIR}" ] then rm -rf "{INSTALL_DIR}"
fi

創(chuàng)建目標(biāo)文件夾

mkdir -p "${INSTALL_DIR}"

echo "======盒子已經(jīng)準(zhǔn)備好了,開始生產(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

模擬器build

xcodebuild -target {target_Name} -configuration{development_mode} -sdk iphonesimulator

真機build

xcodebuild -target {target_Name} -configuration{development_mode} -sdk iphoneos

1.復(fù)制真機的${project_name}.framework到目標(biāo)文件夾

使用-R參數(shù)可實現(xiàn)遞歸功能,即所有子目錄中的文件與目錄均拷貝

cp -R "{DEVICE_DIR}" "{INSTALL_DIR}"

2.刪除真機 INSTALL_DIR 中原來的XCReporter 文件

判斷目標(biāo)文件夾是否存在,存在則刪除該文件夾

if [ -f "{INSTALL_DIR_A}" ] then rm -f "{INSTALL_DIR_A}"
fi

XCode12編譯的模擬器靜態(tài)庫也支持了arm64,導(dǎo)致出現(xiàn)真機庫和模擬器庫不能合并的問題。移除模擬器編譯中的arm64 架構(gòu)

lipo "{SIMULATOR_DIR_A}" -remove arm64 -output "{SIMULATOR_DIR_A}"

合成模擬器和真機 XCReporter 文件替換目標(biāo)文件夾中${project_name}.framework 下的 真機 XCReporter 文件

lipo -create "{DEVICE_DIR_A}" "{SIMULATOR_DIR_A}" -output "${INSTALL_DIR_A}"

echo "======合成結(jié)束======"

-f 判斷文件是否存在

if [ -f "{INSTALL_DIR_A}" ] then echo "======驗證合成包是否成功======" lipo -info "{INSTALL_DIR_A}"
fi

打開目標(biāo)文件夾

open "${INSTALL_DIR}"

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容