IOS开发入门之iOS 封装含有静态库的动态库Framework
白羽 2018-11-23 来源 :网络 阅读 2473 评论 0

摘要:本文将带你了解IOS开发入门iOS 封装含有静态库的动态库Framework,希望本文对大家学IOS有所帮助。

    本文将带你了解IOS开发入门iOS 封装含有静态库的动态库Framework,希望本文对大家学IOS有所帮助。


        

项目中静态库出现了冲突,所以我采用动态库方式封装静态库解决这个问题;

以环信SDK为例:

建立动态库:

CMD+Shift+N

导入SDK

使用:你需要自己声明一个类调用这些头文件中方法,即我们自己转接实现一下。值得注意的是,如果你引用了动态库中文件,那么该文件所Import的文件也应该为public,如此类推。<喎?"https://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxpbWcgYWx0PQ=="这里写图片描述" src="https://www.2cto.com/uploadfile/Collfiles/20160916/201609160942311619.png" title="\" />

然后我们将这个文件的.h文件设为public,即可在外部引用包含在动态库中的该文件。

此外静态库所需要的依赖库,你在你的framework工程中也必须导入

此外导入UI文件(xib,view,VC等),其实就是一个项目的文件,放在动态库中封装

注意图片和xib资源最好不要放入动态库中,因为动态库中导入图片需要设置为动态库的路径,最好合成一个bundle,或者文件夹,与动态库一起放入所需工程中。

最好是图片和xib与动态库分开,作为资源文件。即将用到的xib全部打包,和动态库一起给用户

静态库bitcode不支持,设置动态库项目bitcode为NO

然后选择项目编译

1.如果出现Undefine symbol to arm7s 类似问题,检查下你的依赖库全部导入没有;

2.见图

出现这个问题,修改下other linker flag 为 -read_only_relocs suppress

然后可以编译模拟器真机版本,然后来合并各CPU类型版本

选中项目:

Other - >Aggregate

拷贝下面脚本:


   

# 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}/"

cp -R "${SIMULATOR_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}"

   

然后选择运行

然后会弹出合并后的framework 即最终版本;

使用

将framework与资源文件导入所需工程中

提示:

选择工程 -> build phases -> embed frameworks

(没有的话 ,去general里面有)

添加你的framework,然后再运行即可;

然后你就可以开始调用动态库的代码了;

          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程