zoukankan      html  css  js  c++  java
  • face++静态库转为动态库之二

    上一篇的时候,已经介绍了如何将carthage转为动态库。这一篇,我们是单纯的建一个动态库。还是以face++为例

    查看上一篇: face++静态库转为动态库

    制作动态库

    1、创建一个工程MGLiveDetect

    创建成功后如下图,并删除多出来的MGLiveDetect.h

    2、将Face++下面的三个文件,拉进工程

    • MGFaceIDBaseKit.framework
    • MGFaceIDLiveDetect.framework
    • MGFaceIDLiveCustomDetect.bundle

    并将MGFaceIDLiveDetect.framework下面的几个头文件拉出来

    保证拉出来的文件路径是一样的,都是指向 MGFaceIDLiveDetect.framework --> Headers里面

    3、修改framework的Deployment Target支持8.0以上

    4、配置你的framework

    1. 工程 -> 选择framework所在的Target -> 选择Build Phases
    2. 点击Header左下角的+号把你要暴露的头文件添加到Public里面(默认添加到Project里面,用鼠标把它拽过去)
    3. 在Compile source里面添加实现的.m文件。由于没有.m文件,可以直接忽略掉
    4. 在Link Binary With Libraries 中,将libs的文件全部增加进去,同时,还需要将demo里所有依赖的系统framework也增加进去。

    5、配置类别和支持的Bitcode

    • Mach-O Type要选择Dynamic Library
    • Buld Setting中Build Active Architecture Only 选Release为 No (默认就是NO)
    • 在Build Settings的Linking的Other Linker Flags里加上 -all_load
    • 工程需要支持bitcode,需要在Other C Flags 里加上 -fembed-bitcode

    说明:如果你使用了类别,那么你需要在Build Settings的Linking的Other Linker Flags里加上。为了避免麻烦,直接改为 -all_load

    6、face++特殊配置(其它可以忽略)

    face++的静态库是采用Objective-C++的方式来实现,还需要再指定编译方式。

    因此,我们需要改一下如下配置

    7、配置支持真机和模拟器

    第一步:新建一个脚本

    第二步,填入脚本

    相关的脚本

    # 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 "${INSTALL_DIR}" ]
    then
    rm -rf "${INSTALL_DIR}"
    fi
    mkdir -p "${INSTALL_DIR}"
    cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
    #ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
    lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
    open "${DEVICE_DIR}"
    open "${SRCROOT}/Products"
    fi

    8、编译

    选择真机编译模式,按 command + shift + B 快捷键编译,就会直接生成动态库 MGLiveDetect.framework

  • 相关阅读:
    会话追踪技术
    request session application
    Java CAS同步机制 原理详解(为什么并发环境下的COUNT自增操作不安全): Atomic原子类底层用的不是传统意义的锁机制,而是无锁化的CAS机制,通过CAS机制保证多线程修改一个数值的安全性。
    mysql连接拍错总结
    git 从分支上创建一个分支
    linux ---> taskkill pid 8080 /f
    阿里java开发规范 强制约束
    for break
    Mybatis Update操作返回值问题
    springboot 缓存架构
  • 原文地址:https://www.cnblogs.com/jys509/p/10749255.html
Copyright © 2011-2022 走看看