iOS Aggregate生成.framework

創(chuàng)建Aggregate

選中TARGETS的工程 —> 點(diǎn)擊Editor —> 選擇Add Target —> 創(chuàng)建Aggregate —> 點(diǎn)擊Next創(chuàng)建

image

嵌入腳本

選擇剛剛創(chuàng)建的Aggregate —> 選中Build Phases —> 點(diǎn)擊左側(cè)+ —> 選擇 New Run Script Phase

image

復(fù)制腳本到剛剛新建的New Run Script Phase

# Sets the target folders and the finalframework product.
# 如果工程名稱和Framework的Target名稱不一樣的話,要自定義FMKNAME
# 例如: FMK_NAME = "MyFramework"
FMK_NAME="FraSDK"
# Install dir will be the final output tothe framework.
# The following line create it in the rootfolder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# Working dir will be deleted after theframework creation.  
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# Clean and Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator build
# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
# Uses the Lipo Tool to merge both binaryfiles (i386 + armv6/armv7) into one Universal final product. 
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
rm -r "${WRK_DIR}"
open "${SRCROOT}/Products"

復(fù)制完成如下圖所示

image

編譯

選擇剛剛創(chuàng)建的Aggreate —> 設(shè)備選擇Generic iOS Device(iOS通用設(shè)備) —> command + B 編譯

image

編譯成功,會(huì)自動(dòng)跳出一個(gè)finder,即生成的.framework,支持真機(jī)和模擬器

image

問(wèn)題集錦

1. 不支持i386和x86_64

問(wèn)題描述:執(zhí)行上述命令在部分項(xiàng)目會(huì)出現(xiàn)如下問(wèn)題

image

解決方案:

xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
改為
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO VALID_ARCHS="i386 x86_64" clean build

常用命令行

查看靜態(tài)庫(kù)支持的系統(tǒng)

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

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

  • 前言 如果你想將你開(kāi)發(fā)的控件與別人分享,一種方法是直接提供源代碼文件。然而,這種方法并不是很優(yōu)雅。它會(huì)暴露所有的實(shí)...
    大沖哥閱讀 1,436評(píng)論 0 4
  • (原文:How to Create a Framework for iOS 作者:Sam Davies 譯者:Mr...
    王憲嶺閱讀 5,068評(píng)論 3 23
  • 前言 如果你想將你開(kāi)發(fā)的控件與別人分享,一種方法是直接提供源代碼文件。然而,這種方法并不是很優(yōu)雅。它會(huì)暴露所有的實(shí)...
    球哥閱讀 413評(píng)論 0 2
  • 前言 如果你想將你開(kāi)發(fā)的控件與別人分享,一種方法是直接提供源代碼文件。然而,這種方法并不是很優(yōu)雅。它會(huì)暴露所...
    和玨貓閱讀 49,122評(píng)論 53 145
  • 前言 你需要一種簡(jiǎn)單的方法來(lái)編譯你的代碼,這種方法應(yīng)該使得你的代碼易分享,并且在多個(gè)工程中易復(fù)用。你需要的是一種方...
    代碼移動(dòng)工程師閱讀 840評(píng)論 0 0

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