ios 能编译动态库吗

 我来答
就烦条0o
2018-02-01 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部

一、创建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 脚本。


代码:

[objc] view plain copy

  • # 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=build  

  • DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework  

  • SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework  

  • # -configuration ${CONFIGURATION}  

  • # Clean and Building both architectures.  

  • xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build  

  • xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build  

  • # Cleaning the oldest.  

  • if [ -d "${INSTALL_DIR}" ]  

  • then  

  • rm -rf "${INSTALL_DIR}"  

  • fi  

  • mkdir -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 就会自动弹出来



  •                    
       
         
         
微测检测5.10
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇... 点击进入详情页
本回答由微测检测5.10提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式