ios-SDK开发

知识补充:
工程中Build settings中几个设置含义:
1.Build Active Architecture Only:
设置为yes表示它只编译当前的architecture版本
设置为no表示会编译所有的版本
为了提高编译速度:
一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。
2.Excluded Architectures
该编译选项指定了工程将不被编译成支持哪些指令集
3.Architectures
该编译选项指定了工程将被编译成支持哪些指令集
4.Valid Architectures
该编译项指定可能支持的指令集,该列表和Architectures列表的交集,将是Xcode最终生成二进制包所支持的指令集
5.X86_64 和 arm64 切换
使用模拟器运行,制作的SDK是X86_64
使用真机运行,制作的SDK是arm64

查看一个framework所支持的指令集:
1.cd 至framework的路径下:cd /…/X.framework
2.查看:lipo -info X

SDK开发流程

1.创建一个文件夹SDKDemo,把涉及到的工程都放在里面,便于管理。
2.新建一个TestWorkSpace,路径放在SDKDemo中,我们取名交TestWorkSpace
在这里插入图片描述
3.创建测试工程TestDemo,路径也放在SDKDemo中
4.创建一个SDK工程,取名LaoGaoSDK
在这里插入图片描述
5.创建一个AggreGate文件关联SDK,这样每次只要编译demo,就能自动生成framework文件并直接跳到文件目录
在这里插入图片描述在这里插入图片描述添加自动生成framework的脚本文件
在这里插入图片描述

脚本内容如下,可直接复制,什么都不用改

#!/bin/sh
#要build的target名
TARGET_NAME=${PROJECT_NAME}
if [[ $1 ]]
then
TARGET_NAME=$1
fi
UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/${PROJECT_NAME}/"

#创建输出目录,并删除之前的framework文件
mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework"

#分别编译模拟器和真机的Framework
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build

#拷贝framework到univer目录
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}"

lipo "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" -remove arm64 -output "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}"


#合并framework,输出最终的framework到build目录
lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}"

#删除编译之后生成的无关的配置文件
dir_path="${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/"
for file in ls $dir_path
do
if [[ ${file} =~ ".xcconfig" ]]
then
rm -f "${dir_path}/${file}"
fi
done
#判断build文件夹是否存在,存在则删除
if [ -d "${SRCROOT}/build" ]
then
rm -rf "${SRCROOT}/build"
fi
rm -rf "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator" "${BUILD_DIR}/${CONFIGURATION}-iphoneos"
#打开合并后的文件夹
open "${UNIVERSAL_OUTPUT_FOLDER}"


6.配置项目基础设置及暴露头文件给外部调用
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在主头文件中导入需要暴露给外部的文件
在这里插入图片描述7.为SDK添加图片资源
主要有两种方法:
方法一:直接创建一个文件夹,后缀改为.bundle
方法二:选中sdk工程,点加号添加bundle工程
在这里插入图片描述在这里插入图片描述设置bundle文件
1.Base SDK 为 iOS
在这里插入图片描述2.COMBINE_HIDPI_IMAGES 为NO,否则bundle中的图片就是tiff格式
3.Build Options的Enable Bitcode 为NO

4.将资源文件拖进bundle(resource)文件中
5.构建bundle文件
6.将构建好的bundle文件添加到framework中

SDK中相关图片加载:
将生成的framework和创建的bundle文件添加到TestDemo中
在这里插入图片描述

7.将TestDemo与LaoGaoSDK都添加到TestWorkSpace中
文件目录结构如下:
在这里插入图片描述打开TestWorkSpace把TestDemo与LaoGaoSDK都添加到TestWorkSpace中
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值