构建Framework静态库

2016-08-12  本文已影响31人  yangjiayu

iOS创建静态库

纯笔记。
类似于各类SDK,只暴露bundle文件,和Framework文件。
可以将本地文件(高内聚,低耦合之类)文件放到pod中。HERE
也可以放在Framework中,实现模块化,功能化,不过这样看不到源文件,只有.h文件,自己用的时候好装B的说。

xcode: 7.3.1

bundle文件

bundle是只是包含资源文件。

新建bundle

  1. 新建一个工程。选择


    Paste_Image.png
  2. 将文件拖到工程中,然后点击Run一下,bundle文件就生成了。右键showinFinder就可以找到文件,加入到所需项目中即可使用。


    Paste_Image.png
  3. 如图
Paste_Image.png

Framework是静态文件

Framework在ios中可以是静态库也可以是动态库。但是只有Apple官方可以创建。
看下说明:

静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。

动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。

说白了,就是静态库只有你写的app可以用,动态库是可以即使app在挂起的时候,各个app也可以公用的文件。

创建Framework文件

  1. 新建工程


    Paste_Image.png
  2. 设置状态为


    Paste_Image.png
  3. 如何不暴露出来文件


    Paste_Image.png
  4. 会有一个问题,做出来的Framework可能没法兼容真机和模拟器,然后做兼容。 Paste_Image.png
  5. 然后 Paste_Image.png
    Paste_Image.png

# 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}"

  1. Run一下这个test schema。成功之后会open当前的文件,Framework库就完成了。拖到工程中即可使用。


    Paste_Image.png
上一篇 下一篇

猜你喜欢

热点阅读