iOS开发 xcode6制作framework静态库
相信大家应该有要将一些工具类做成framework或者从事SDK制作的经历,在功能实现过后,我们希望方便大家使用从而做成framework,那么如何制作framework就是比较重要的一个点了,下面本文会详细介绍在Xcode 6下如何制作framework。
首先,我们先创建一个framework的工程,选择Cocoa Touch Framework,如下图:
我这里将工程名创建为TestFramework:
由于我们做的是静态库,所以这里我们需要将TestFramework的Build Setting里面Linking下的Mach-O Type修改为静态库(Static Library):
由于没有支持armv7s,所以我们要自己加上,否则iPhone5C是不能支持的哦~所以我们把armv7s添加到Architectures里面,如下图:
现在我们就支持armv7s啦。
然后你应该是有已经写好的工具类或者是SDK需要的功能代码,将你写好的类导入到工程里面,这里我简单写了一个工具类:
再将头文件放到Build Phases的Header里面,因为不需要对使用者公开方法的实现,所以只用将头文件放到public里面就可以了:
这样准备工作就已经做完了,下面是不是可以编译了呢?可能还有一个小问题,就是我们要制作模拟器和真机都通用的静态库,所以我们还要新建Aggregate Target:
选择添加
选择Aggregate:
起个名字为TestAggregate:
在TestAggregate里面的Target Dependencies添加Run Script:
然后在里面写一下代码:
# 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}/"
# 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}"
选中新建的Target,Build, 如果没有异常的话,会自动弹出生成的Framework文件:
这样就是真机和模拟器通用的静态库啦~
下面就可以像用其他framework静态库一样的去使用自己制作的framework静态库啦~!