摘要:本文将带你了解IOS开发入门iOS学习笔记-封装含静态库的动态库,希望本文对大家学IOS有所帮助。
本文将带你了解IOS开发入门iOS学习笔记-封装含静态库的动态库,希望本文对大家学IOS有所帮助。
动态库创建
1.首先,动态库上架是可以的(本人亲试),大胆的去做吧;
拷入相关静态库SDK,注意不能直接饮用静态库中文件,需要我们创建.h.m文件中转一下(至少我是这样做的)
以环信SDK为例(由于项目中其他SDK与环信SDK冲突)
同样需要导入此SDK静态库所依赖的动态库
2.由于我是要将整个UI封装到SDK,在对应的UI文件中已经进行了一次SDK调用,故我再使用自定义.h.m文件调用UI文件也符合逻辑。
由于要在appdelegate中响应方法,我们设置一个helper
在.m文件中写相关的处理逻辑即可,之后在appdelegate中调用此动态库文件;
pch文件在这里同样适用,配置好就行
值得注意:动态库所有的资源文件 如 图片,xib ,bundle文件,需要全部拷贝出动态库工程,放在一起,作为一个额外的动态库资源文件存在,不能再动态库中一起编译;因为图片路径要设置为相对动态库路径,修改繁琐,xib文件会转换成nib文件,需要重写加载xib方法等原因;
这是最终弄好后样子
Resource放置的为资源文件,这样加载就没问题;
3.注意的是 你在动态库中公开的头文件(.h)所#import的相关文件必须也是公开否则会报错,显示找不到该文件;(.m文件中#import不会有问题)
在Build Phases中设置即可;
文件可直接从左侧拖入,会自动从区域内转换过去;
公开所有SDK头文件(因为关系比较复杂,所以全部设public可以避免问题),然后自己创建的helper等文件也设置为public(建议#import放在.m中,这样就可以不必要全部导入)。
4.SDK不支持bitcode的需要设置
5.完成所有操作后编译就好
如出现下列类似问题
设置Build Settting ->Other linker flag 为 -read_only_relocs suppress
使用
导入动态库,在General - >Embedded Binaries 加入动态库
合并动态库
选择工程
拷入脚本
# 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}"
编译即可
上架
上架时动态库需要编译真机版本,不能使用合并的版本(即通用版本),我想就是为啥我用一些SDK(使用动态库的 ),他们只支持真机。合并版本会报 x86_64 i386错误
静态库可以提供通用版本,编译之后即成为所需要版本;(一般静态库很大,编译后就很小了)
如何编译真机和模拟器版本?
真机
模拟器
编译后
即可找到
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号