iOS创建静态库
纯笔记。
类似于各类SDK,只暴露bundle文件,和Framework文件。
可以将本地文件(高内聚,低耦合之类)文件放到pod中。HERE
也可以放在Framework中,实现模块化,功能化,不过这样看不到源文件,只有.h文件,自己用的时候好装B的说。
xcode: 7.3.1
bundle文件
bundle是只是包含资源文件。
新建bundle
-
新建一个工程。选择
-
将文件拖到工程中,然后点击Run一下,bundle文件就生成了。右键showinFinder就可以找到文件,加入到所需项目中即可使用。
- 如图
Framework是静态文件
Framework在ios中可以是静态库也可以是动态库。但是只有Apple官方可以创建。
看下说明:
静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。
说白了,就是静态库只有你写的app可以用,动态库是可以即使app在挂起的时候,各个app也可以公用的文件。
创建Framework文件
-
新建工程
-
设置状态为
-
如何不暴露出来文件
-
会有一个问题,做出来的Framework可能没法兼容真机和模拟器,然后做兼容。
-
然后
# 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}"
-
Run一下这个test schema。成功之后会open当前的文件,Framework库就完成了。拖到工程中即可使用。