IOS 开发之静态库 动态库

一.静态库(.a)

1.选择New ->Project ->Cocoa Touch Static Library 创建

2.创建自己的类,并在TARGETS->Build Phases ->Copy Files 里将自己添加的类的.h文件添加进去~(可以在Subpath里去掉项目名文件,这样生成的静态库的.h文件夹里就不包含项目名这个文件了)


IOS 开发之静态库 动态库_第1张图片



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下~


IOS 开发之静态库 动态库_第2张图片


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添加进去

你可能感兴趣的:(IOS 开发之静态库 动态库)