Xcode 7 製作 framework
建立工程
建立工程
新增原始碼
-
新增OC原始檔
在 swift 製作 framework 新增 OC檔案時,不能設定橋接檔案,而是將 OC標頭檔案放到框架的標頭檔案中,如下圖:同時將該OC標頭檔案設定為 public(預設新增到Private,可拖動到Public):
-
新增框架原始碼
新增指令碼
新增生成模擬器與真機都可使用的 framework 的執行指令碼。
- 給框架工程新增Target:File/New/Target指令碼內容
指令碼內容如下(指令碼內容是從網上搜尋到的,但在工程中一直出現問題,無法用於模擬器,後來發現是缺少了cp -R "${SIMULATOR_DIR}/" "${INSTALL_DIR}/"
):
# Sets the target folders and the final framework product.
# 如果工程名稱和Framework的Target名稱不一樣的話,要自定義FMKNAME
# 例如: FMK_NAME = "MyFramework"
FMK_NAME=${PROJECT_NAME}
# Install dir will be the final output to the framework.
# The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# -configuration ${CONFIGURATION}
# Clean and Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
cp -R "${SIMULATOR_DIR}/" "${INSTALL_DIR}/"
# Uses the Lipo Tool to merge both binary files (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 "${INSTALL_DIR}"
-
編譯指令碼:Product/Build For/Profiling
編譯完指令碼會自動彈出生成的framework的資料夾。
新增framework到工程
-
將目標 framework 和其所用到的資原始檔拖到目標工程中
-
新增目標框架到複製檔案中去
�打包提交到 App Store
在使用自制的 Framework 的應用程式打包提交到 App Store 的時候,可能會遇到以下問題“Unsupported architectures. Your executable contains unsupported architectures '[x86_64, i386]'”
,此時在你要打包提交的目標程式的Build Phases
下新增Run Script
,並將以下內容複製進去:
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
![808722-66eccd423305ba62.png](https://i.iter01.com/images/d3d50c5d9bf33a93659e10c26056c920ebf68f6f5e82a65553e9ad8ebfbb12a1.png)
到此就結束了
參考
相關文章
- framework7Framework
- Centos 7 製作MySQL 5.7 RPM包CentOSMySql
- cnetos7 ISO 映象自定義製作
- iOS12-Xcode12-Buildtime錯誤:framework not found Pods 或 No such module 'XXX'iOSXCodeUIFramework
- 《最終幻想7:重製版》遊戲音訊製作分享遊戲音訊
- Django REST framework API 指南(7):解析DjangoRESTFrameworkAPI
- 實戰!教你如何使用KVM製作centos7映象!CentOS
- framework7-vue ^2.x pushStateFrameworkVue
- centos7製作U盤啟動盤-九五小龐CentOS
- Blender 效果製作:製作起伏不平的路面
- 作業7
- XCODE6中使用iOS7 SDK的方法XCodeiOS
- iOS開發筆記之Xcode9.2下SDK開發-生成Framework的圖解流程iOS筆記XCodeFramework圖解
- 價目表製作報價單製作軟體
- GIF動圖怎麼製作?GIF圖片製作
- Xcode 7 Bitcode的工作流程及安全性評估XCode
- Learun.framework v7━ net快速開發框架Framework框架
- proxmox映象製作
- 製作KubeVirt映象
- 製作Docker映象Docker
- 製作 Cocoapods 庫
- 7天銷量破百萬,《破曉傳說》製作團隊專訪
- Xcode 10.2XCode
- svg製作及使用SVG
- EDM郵件製作
- Dockerfile映象的製作Docker
- YashanDB Docker映象製作Docker
- oracle製作docker映象OracleDocker
- Landing Page 製作指南
- Docker 映象製作方法Docker
- 影片製作大師
- Docker製作jdk映象DockerJDK
- MYSQL主從複製製作配置方案MySql
- 自己怎麼製作GIF表情包 QQ動態圖如何製作
- 有什麼製作軟體可以製作QQ鬥圖表情包
- 如何製作動態圖,GIF怎麼在電腦上製作
- 線上製作logo!手把手教你線上快速製作logoGo
- OpenSSH9.6p1的EL7版本rpm安裝包製作
- Dreamweaver製作虛線邊框教程,Dreamweaver怎麼製作虛線表格?