美文网首页
IOS中,制作.a 和 .framework详细流程和讲解

IOS中,制作.a 和 .framework详细流程和讲解

作者: Flame_Dream | 来源:发表于2019-01-09 19:51 被阅读0次

    摘要

    在开发过程中,经常会遇到很多相同的控件、方法等内容;项目中的隐私核心算法、架构等;采用模块化封装等需求。我们采用Framework或.a库进行封装这些内容,可以尽可能减少在开发过程中存在的重复操作和保密的功能。

    一、制作.framework和.a 库

    在制作.framework和.a 库过程并不复杂,只要根据步骤操作一遍.framework和.a 库的制作你就很轻松的学会了,不要被这些步骤吓到,尝试一下就可以了。

    1.选择制作静态库的类型

    首先打开Xcode创建项目,选择需要制作的静态库类型,制作.framework和.a 库的方法和步骤大致相同,就一起把.framework和.a 库结合在一起来讲解


    选择制作静态库的类型
    2.创建库文件

    当我们创建好一个库的项目之后,需要创建封装的类文件。封装的的控件,封装隐私算法等内容,需要分装的内容全部搞定之后,配置库的


    841547026855_.pic_hd.jpg
    3.打包库的配置

    配置当前支持架构(处理器)的类型:armv7,armv7s和arm64,i386,x86_64。


    打包库处理器支持配置
    4.静态库支持的版本

    App有系统的最低版本配置,而分装的库同样也有版本的配置,默认情况下是当前Xcode的最支持的最高版本,所以在制作过程中一定要选择库的版本配置。


    库支持的最低版本
    5.选择库的类型(静态库/动态库)

    根据具体需要选择封装库的类型(静态、动态等)


    静态库/动态库 选择
    6.库的头文件

    .framework和.a 库的头文件的选择是不一样的,下边分别对.framework和.a 库的两种情况都有说明

    .a库的头文件配置

    a库的头文件配置

    .framework 库的头文件配置

    .framework 库的头文件配置
    7. .framework和.a库编译选择debug和release版本

    第一步编辑debug和release

    1 第二步选择debug和release 2
    8.查看生成的库文件

    1.选择当前的设备,build或者运行当前库。

    如果选择任意模拟器运行(或者build),生成的库文件支持当前所有模拟器的处理器类型。
    如果选择真机运行(或者build),生成的库文件支持当前所有真机的处理器类型

    查看库文件

    分别执行模拟器和真机,查看库所在文件目录,可以真机和模拟器两种库文件。但是我们在执行项目过程中,运行真机使用真机的库,模拟器使用模拟器的库,替换过程中很是麻烦,所以需要制作出一个支持所有设备的库文件。第二部分会详细讲解如何制作一个支持模拟器和真机的库


    库文件所在目录

    二、制作的支持的所有设备处理器的.framework和.a 库

    1.通过终端查看当前.framework和.a 支持处理器

    通过终端命令行的方式查看当前库支持的处理器。

    查看方法:打开终端输入如下:(AAA代表库)
    # 1. .framework库
    lipo -info  /path/AAA.framework/AAA
    # 2. .a库
    lipo -info  /path/AAA.a
    
    查看库支持处理器类型
    2.合并支持模拟器和真机两种处理器的库文件

    第一种方法:
    采用最基本的命令行的方法:

    #在终端运行
    [xxxx$]: lipo - create PATH1 PATH2 -output PATH3
    
    # .framework (输出目录选择任意地址或者真机、模拟器库文件的地址都可以)
     lipo - create /PATH1/AAA.framework/AAA  /PATH2/AAA.framework/AAA  -output /PATH3/AAA.framework/AAA
    
    # .a (同上)
     lipo - create /PATH1/AAA.a  /PATH2/AAA.a  -output /PATH3/AAA.a
    

    在终端运行 lipo - create PATH1 PATH2 -output PATH3

    第二种方法:

    1、配置和书写脚本
    采用脚本的方式:创建脚本的方法如下:
    7,8,9分别代表1,2,3步骤(7=>1,8=>2,9=>3)

    添加脚本合并支持模拟器和真机处理器

    .framework 架构合并方法的代码

    # Type a script or drag a script file from your workspace to insert its path.
    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 "${DEVICE_DIR}" ] || [ ! -d "${SIMULATOR_DIR}" ]
    then
    exit 0
    fi
    
    # 如果合并包已经存在,则替换
    if [ -d "${INSTALL_DIR}" ]
    then
    rm -rf "${INSTALL_DIR}"
    fi
    
    mkdir -p "${INSTALL_DIR}"
    
    cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
    
    # 使用lipo命令将其合并成一个通用framework  
    # 最后将生成的通用framework放置在工程根目录下新建的Products目录下  
    lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
    
    #合并完成后打开目录
    open "${SRCROOT}/Products"
    
    fi
    
    

    .a库的脚本合成

    # Type a script or drag a script file from your workspace to insert its path.
    if [ "${ACTION}" = "build" ]
    then
    INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.a
    
    DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.a
    
    SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.a
    
    # 如果真机包或模拟包不存在,则退出合并
    if [ ! -d "${DEVICE_DIR}" ] || [ ! -d "${SIMULATOR_DIR}" ]
    then
    exit 0
    fi
    
    # 如果合并包已经存在,则替换
    if [ -d "${INSTALL_DIR}" ]
    then
    rm -rf "${INSTALL_DIR}"
    fi
    
    mkdir -p "${INSTALL_DIR}"
    
    cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
    
    # 使用lipo命令将其合并成一个通用framework  
    # 最后将生成的通用framework放置在工程根目录下新建的Products目录下  
    lipo -create "${DEVICE_DIR" "${SIMULATOR_DIR}" -output "${INSTALL_DIR}"
    
    #合并完成后打开目录
    open "${SRCROOT}/Products"
    
    fi
    
    

    2、分别运行真机和模拟器

    分别运行一次真机和模拟器,脚本会自动把合并成的库文件目录打开。

    相关文章

      网友评论

          本文标题:IOS中,制作.a 和 .framework详细流程和讲解

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