face++靜態庫轉爲動態庫之二 face++靜態庫轉爲動態庫

上一篇的時候,已經介紹瞭如何將carthage轉爲動態庫。這一篇,咱們是單純的建一個動態庫。仍是以face++爲例html

查看上一篇: face++靜態庫轉爲動態庫iphone

製做動態庫

一、建立一個工程MGLiveDetect

建立成功後以下圖,並刪除多出來的MGLiveDetect.hpost

二、將Face++下面的三個文件,拉進工程

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

並將MGFaceIDLiveDetect.framework下面的幾個頭文件拉出來ui

保證拉出來的文件路徑是同樣的,都是指向 MGFaceIDLiveDetect.framework --> Headers裏面url

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

四、配置你的framework

  1. 工程 -> 選擇framework所在的Target -> 選擇Build Phases
  2. 點擊Header左下角的+號把你要暴露的頭文件添加到Public裏面(默認添加到Project裏面,用鼠標把它拽過去)
  3. 在Compile source裏面添加實現的.m文件。因爲沒有.m文件,能夠直接忽略掉
  4. 在Link Binary With Libraries 中,將libs的文件所有增長進去,同時,還須要將demo裏全部依賴的系統framework也增長進去。

五、配置類別和支持的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_loadspa

六、face++特殊配置(其它能夠忽略)

face++的靜態庫是採用Objective-C++的方式來實現,還須要再指定編譯方式。3d

所以,咱們須要改一下以下配置code

七、配置支持真機和模擬器

第一步:新建一個腳本htm

第二步,填入腳本blog

相關的腳本

# 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

八、編譯

選擇真機編譯模式,按 command + shift + B 快捷鍵編譯,就會直接生成動態庫 MGLiveDetect.framework

相關文章
相關標籤/搜索