一.静态库(.a)
1.选择New ->Project ->Cocoa Touch Static Library 创建
2.创建自己的类,并在TARGETS->Build Phases ->Copy Files 里将自己添加的类的.h文件添加进去~(可以在Subpath里去掉项目名文件,这样生成的静态库的.h文件夹里就不包含项目名这个文件了)
3.选择模拟器和真机运行,我们就生成了两个静态库
4.合并两个静态库
lipo -create lib1.a lib2.a -output test.a
注意:如果静态库里有分类,直接调用,会在运行时报错(找不到该方法),这是由于分类不是一个新的连接符,所以,我们要在工程TARGETS->Build Setting ->Other linker Flags 里添加进去,可以用-ObjC(表示链接所有的OC文件) -all_load(表示链接所有文件) -force_load(表示链接指定文件,后面跟文件路径)
二.动态库(.framework)
1.选择New ->Project ->Cocoa Touch Framework 创建
2.创建自己的类,并在TARGETS->Build Phases ->Headers 里将自己添加的类的.h文件添加到Public下~
3.选择模拟器和真机运行,我们就生成了两个动态库
4.合并两个动态库
先分别运行 模拟器 和 真机
再在TARGETS->Build Phases ->Run Script 运行脚本
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
#open "${DEVICE_DIR}"
#open "${SRCROOT}/Products"
fi
生成的framework 就支持真机和模拟器了~
导入工程后 需要在在TARGETS->Build Phases ->Copy Files 中将framework添加进去