生成 iOS 动态库与静态库方法

来源:互联网 发布:手机注册淘宝小号 编辑:程序博客网 时间:2024/05/01 15:55

支持原创,更多内容欢迎访问博客:

http://www.china10s.com/blog/?p=342


在程序开发过程中,免不了需要对程序进行封装:比如给第三方使用者来调用的SDK,或者给其他开发人员来使用,同时他们又无需或者无权了解其中细节的时候,就需要用到动态库封装。

一、创建FrameWork工程
新建工程,选择创建FrameWork工程或者静态库(Static Library)。


二、选择导出的头文件和资源文件
将需要封装的代码直接拖进。这时,Xcode便会自动将需要导出的头文件和资源文件方放好,你自己也可以根据需要来进行调整。


三、生成FrameWork
直接Run该工程,便可创建FrameWork动态库。
但是,需要注意的是,如果你是运行在模拟器上,则产生的动态库的编译版本只能是支持 i386 和 x86_64 版本。

如果是运行在真机上,则只能产生 arm64 armv7 armv7s 三种架构。


这两者需要分别单独提供给其他开发人员来使用,如果需要生成一个通用版的动态库,则需要进行合并。
lipo -create libCryptSecurity.framework/libCryptSecurity libCryptSecurity1.framework/libCryptSecurity -output ~/Desktop/libt

但是需要注意,如果你要控制安装包的大小的话,合并之后的库文件大于合并之前两者的总和。


四、简化合并操作
如果每次库文件有改动,都需要重新打包并合并,想来是一件非常繁琐的工作,这时候可以用一个 Aggregate 的Target 来进行合并:
打开 File->New->Target,选择 Aggregate 。


在生成的代码里面粘贴如下的 script 脚本。



代码:
# 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=buildDEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.frameworkSIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework# -configuration ${CONFIGURATION}# Clean and Building both architectures.xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean buildxcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build# Cleaning the oldest.if [ -d "${INSTALL_DIR}" ]thenrm -rf "${INSTALL_DIR}"fimkdir -p "${INSTALL_DIR}"cp -R "${DEVICE_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}"


选中新建的Target->Run。这时候 Build 的FrameWork 就会自动弹出来



0 0
原创粉丝点击