美文网首页iOS Developer程序员没事就看看
<Xcode8.0/9.0>iOS创建可调试的Fra

<Xcode8.0/9.0>iOS创建可调试的Fra

作者: 九剑仙 | 来源:发表于2017-09-26 17:21 被阅读158次

开发背景

开发中我们会使用到第三方的SDK,有的时候也会将整个系统的公用功能抽象出来制作成FrameWork,以库的形式进行封装,只暴露出头文件。
库(FrameWork)是编译好的二进制文件,编译的时候只需要 Link 一下。
合理的使用库文件,能有效节约编译时间。
库分为静态库和动态库。

基础知识

静态库即静态链接库。
之所以叫做静态,是因为静态库在编译的时候会被直接拷贝一份,复制到目标程序里,这段代码在目标程序里就不会再改变了。
静态库的好处很明显,编译完成之后,库文件实际上就没有作用了。
目标程序没有外部依赖,直接就可以运行。
当然其缺点也很明显,就是会使用目标程序的体积增大。

动态库即动态链接库。
与静态库相反,动态库在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库的引用。
等到程序运行时,动态库才会被真正加载进来。
动态库的优点是,不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用,因此,也被称作共享库。
动态库带来的问题主要是,动态载入会带来一部分性能损失,使用动态库也会使得程序依赖于外部环境。
如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行。

苹果不允许开发者使用自己的动态库,否则审核无法通过!
系统的 Framework不需要拷贝到目标程序中,但是我们自己做出来的 Framework,最后必须要拷贝到目标程序中,因此苹果又把这种Framework称为Embedded FrameWork。

demo下载地址:
https://gitee.com/122589615/LLCommonSDK

一、创建库(Framework)文件

  1. 创建Cocoa Touch Framework工程文件
    //创建Framework工程文件
  2. Architectures下增加armv7s指令集
    //为了兼容老版本手机,不需要的可略过该步骤
  3. 将Build Active Architecture Only 设置为NO
    //若第2步未设置,该步骤可略过
  4. 添加目标文件,并将所需的.h文件拖入Public部分
    //如下图:
    Public.png
  5. add target添加Aggregate
    //如下图:
    Run Script.png
  6. 添加脚本:
    FMK_NAME=${PROJECT_NAME}
    INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
    WRK_DIR=build
    DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
    SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
    xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
    xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
    if [ -d "${INSTALL_DIR}" ]
    then
    rm -rf "${INSTALL_DIR}"
    fi
    mkdir -p "${INSTALL_DIR}"
    cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
    lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
    rm -r "${WRK_DIR}"
    open "${INSTALL_DIR}"
  7. 若只是单纯地制作一个Framework,到此处已经结束了,依次选中LLAggregate、Generic iOS Device,command + B编译即可。编译结束后,如果未报错,就会自动打开Framework所在的文件夹。
  8. 将Framework导入其他工程。首先将Framework拖入指定工程目录下,然后按下图导入即可: Framework.png

二、创建调试工程

如果你看到了这里,那么恭喜你,又将学习一项新技能,此时先忘掉标题一中的第8步操作。

  1. 创建一个新工程,比如说Single View App,然后关闭工程。
  2. 创建Workspace文件,如下图: Workspace.png
  3. 打开Workspace文件,将标题一中创建的库工程和Single View App工程添加进来,如下图: 右键点击空白处

    按照如下所示,依次将两个工程文件都添加进来


    添加工程文件
    添加完之后就会变成这个样子:
    添加完成.png

    如上图所示,上面那个工程是可运行的demo,下面的是framework库工程。

  4. 选中上面的demo工程,将生成的库文件导入到demo工程中,切记忘掉标题一中的第8步,不要把framework复制到demo工程中去,要在demo中如下图位置点击添加framework,然后找到framework在库工程中的路径,直接add进去。这样以来,如果我们修改了代码,重新生成了framework,那么demo中的frame也会自动关联成最新的,就可以直接在demo工程中去测试功能。可以把这两个工程文件放入同一个目录下,便于管理。 关联Framework.png

相关文章

网友评论

    本文标题:<Xcode8.0/9.0>iOS创建可调试的Fra

    本文链接:https://www.haomeiwen.com/subject/hdnsextx.html