iOS SDK 開發 - 使用自動化打包腳本快速產出 SDK

開發 sdk 時常常遇到須要打包的狀況,若是是多人開發的 sdk 天然是搭建自動化打包平臺,利用自動化打包平臺比較方便快捷,但單人開發的 sdk 仍是配置打包腳本比較方便快捷,本文介紹兩種常見的 sdk 開發方式下的打包方式。shell

1.使用 cocoapods 建立的庫

  1. 使用 pod lib create MyLibrary 建立庫xcode

  2. 在本機安裝 gem install cocoapods-packagerbash

  3. 運行 pod package MyLibrary.podspec 輸出 sdk架構

    異常處理:iphone

    1.若是隻是本地開發,未向 repo 提交該庫,則須要將 MyLibrary.podspec 中的 s.source 指向本地庫路徑ui

    2.須要打動態庫,靜態庫, framework 運行 pod package —help 查看相關命令spa

2. 通用方式,包含有 sdk target 的 Xcode 項目

腳本的原理及使用說明在 shell 腳本的註釋中有詳細說明命令行

使用方式:code

  1. 第一種:直接運行 shell 腳本cdn

    腳本文件與工程文件處在同一路徑下,命令行打開腳本所在目錄執行 sh shellName.sh

  2. 第二種:在當前工程下建立一個新的 Aggregate target, 在該 target 的 Build Phases 裏添加一個 new Run Script Phase,單獨運行該 target 就會成產好 sdk

create_aggregate

  1. 第三種:在 target 的 Build Phases 裏添加一個 new Run Script Phase, 運行該 tartget 時會運行該腳本,生成 sdk

    在新添加的 run script 中添加咱們建立的腳本的路徑 "${SRCROOT}/path/shellName.sh"

#!/bin/sh
 # workspace 工程名,若是是單 target 項目則不須要
PROJECT_NAME='XXX_project'
# target 名
TARGET_NAME="XXX_target"
# 工程文件所在的根目錄
SRCROOT='.'
 # Sets the target folders and the final framework product.
FMK_NAME='sdk_name'
 # 最終 sdk 輸出的文件路徑
# 在工程文件所在的根目錄建立 sdk 輸出路徑,若是是 framework 形式則爲 .framework
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# 在工程文件所在的根目錄建立 sdk 輸出路徑,若是是 static lib 形式則爲 .a
# INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.a
 # sdk 編譯過程的輸出文件路徑
WRK_DIR=./build
# framework 形式真機架構輸出文件路徑
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}/${FMK_NAME}.framework
# static lib 形式真機架構輸出文件路徑
# DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.a
# framework 形式模擬器架構輸出文件路徑
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}/${FMK_NAME}.framework
# static lib 形式模擬器架構輸出文件路徑
# SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.a
 # -configuration ${CONFIGURATION}
# 清理編譯生成真機和模擬器架構的 sdk
 # 單 target 項目
# xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
# xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
 # 包含 workspace 的項目
xcodebuild -configuration Release -workspace "${PROJECT_NAME}.xcworkspace" -scheme "${TARGET_NAME}" -sdk iphoneos clean  build SYMROOT="../${WRK_DIR}"
xcodebuild -configuration Release -workspace "${PROJECT_NAME}.xcworkspace" -scheme "${TARGET_NAME}" -sdk iphonesimulator build SYMROOT="../${WRK_DIR}"
 # 清理以前生成的 sdk
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi

mkdir -p ${SRCROOT}/Products

cp -LR "${DEVICE_DIR}" "${INSTALL_DIR}"

echo "DEVICE_DIR: ${DEVICE_DIR}"
echo "INSTALL_DIR: ${INSTALL_DIR}"
 # Uses the Lipo Tool to merge both binary files (i386/x86_64 + armv7/armv64) into one Universal final product.
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"

rm -r "${WRK_DIR}"

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

if [ -f "${INSTALL_DIR}/Info.plist" ]
then
rm "${INSTALL_DIR}/Info.plist"
fi

複製代碼
相關文章
相關標籤/搜索