Board logo

标题: Xcode 7 制作 framework (1) [打印本页]

作者: look_w    时间: 2019-3-4 19:03     标题: Xcode 7 制作 framework (1)

创建工程

创建工程

添加源代码

    添加OC源文件 在 swift 制作 framework 添加 OC文件时,不能设置桥接文件,而是将 OC头文件放到框架的头文件中,如下图:
    同时将该OC头文件设置为 public(默认添加到Private,可拖动到Public):

    添加框架源代码

添加脚本

添加生成模拟器与真机都可使用的 framework 的运行脚本。

    给框架工程添加Target:File/New/Target
    脚本内容
    脚本内容如下(脚本内容是从网上搜索到的,但在工程中一直出现问题,无法用于模拟器,后来发现是缺少了cp -R "${SIMULATOR_DIR}/" "${INSTALL_DIR}/"):

    # 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}/"
    cp -R "${SIMULATOR_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}"
    复制代码

    编译脚本:Product/Build For/Profiling
    编译完脚本会自动弹出生成的framework的文件夹。

添加framework到工程

    将目标 framework 和其所用到的资源文件拖到目标工程中

    添加目标框架到复制文件中去




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0