进阶iOS-SDKiOS 开发

iOS开发:iOS SDK 从开发到发布

2019-10-19  本文已影响0人  melody5417

iOS SDK 从开发到发布

最近在做封装 SDK(Framework) 的工作,本篇文章将记录 iOS SDK 从开发到发布的具体流程和经验总结。本文主要以图片形式展示,毕竟有图才是王道嘛,代码可在 github链接 下载。

首先介绍下创建 SDK 工程以及对应 Demo 工程的具体流程。

创建 SDK 工程

创建 workspace,用以管理 SDK 和 Demo project

创建workspace

创建 Cocoa Touch Framework,并加入到之前创建的 workspace 里

创建 MFramework project 创建 MFramework project 创建 MFramework project

更改工程设置

配置公共头文件

创建 Demo 工程

创建 MDemo project,加入之前创建的 workspace。

创建MDemo project
创建MDemo project
创建MDemo project

更改 MDemo 工程设置

创建MDemo project
创建MDemo project

[站外图片上传中...(image-b6da99-1571883793797)]

集成 SDK 测试

本地打包 手动发布

创建 Cross-platform 的 Aggregate,执行 build 脚本,通过 lipo 命令将之前构建好的 模拟器架构的 SDK 产物真机架构的 SDK 产物 合成 适用于真机和模拟器的 SDK 产物

持续构建 自动发布

每次发布都手动打包,不仅繁琐,耗人工,而且容易出现遗漏甚至错误。下面介绍下如何达到持续构建和自动发布。在 workspace 根目录创建构建脚本 build.sh,命令行运行脚本 sudo ./build.sh, 则会在 workspace 根目录下创建 result 文件夹并生成目标产物。借助 蓝盾 等持续构建平台,则可以达到持续构建,自动发布,自动归档的完美操作。

# 环境变量
#version=$MajorVersion"."$MinorVersion"."$FixVersion"."$BuildNo
#shortVersion=$MajorVersion"."$MinorVersion"."$FixVersion
version=2.3.4.5
shortVersion=2.3.4

xcworkspace="DevFramework"
scheme="MFramework"
configuration="Release"

WORKSPACE=`pwd`
RESULT_DIR=$WORKSPACE/result

# 清理工作区
rm -r ~/Library/Developer/Xcode/Archives/`date +%Y-%m-%d`/$scheme\ *.xcarchive
xcodebuild clean -workspace $xcworkspace.xcworkspace -scheme $scheme -configuration $configuration

# 更新版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $version" $scheme/$scheme/Info.plist
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $shortVersion" $scheme/$scheme/Info.plist

# 分别编译真机和模拟器的 framework
xcodebuild -workspace $xcworkspace.xcworkspace -scheme $scheme -configuration $configuration ONLY_ACTIVE_ARCH=NO -sdk iphoneos BUILD_DIR="$RESULT_DIR" BUILD_ROOT="${BUILD_ROOT}" clean build
if ! [ $? = 0 ] ;then
    echo "xcodebuild iphoneos fail"
    exit 1
fi

xcodebuild -workspace $xcworkspace.xcworkspace -scheme $scheme -configuration $configuration ONLY_ACTIVE_ARCH=NO -sdk iphonesimulator BUILD_DIR="$RESULT_DIR" BUILD_ROOT="${BUILD_ROOT}" clean build
if ! [ $? = 0 ] ;then
    echo "xcodebuild iphonesimulator fail"
    exit 1
fi

# 合并 framework,输出适用真机和模拟器的 framework 到 result 目录
cp -R "$RESULT_DIR/${configuration}-iphoneos/${scheme}.framework/" "$RESULT_DIR/${scheme}_${version}.framework/"
lipo -create "$RESULT_DIR/$configuration-iphonesimulator/${scheme}.framework/${scheme}" "$RESULT_DIR/${configuration}-iphoneos/${scheme}.framework/${scheme}" -output "$RESULT_DIR/${scheme}_${version}.framework/${scheme}"
if ! [ $? = 0 ] ;then
    echo "lipo create framework fail"
    exit 1
fi

版本号设置

Framework 一定要配置版本号的,这样方便用户(SDK使用者)接入合适目标版本,也有利于后期的定位问题和开发维护。
版本号格式推荐是 主版本.特性版本.修正版本.持续构建build号,具体如何配置可以参考上面的【持续构建 自动发布】。

结语

看到这里,iOS SDK 开发到发布的基本流程都已走通。当然 SDK 的开发工作远不止这些,更多的坑和经验还要靠各位大佬总结和分享,hhhh,就先到这里啦~

上一篇 下一篇

猜你喜欢

热点阅读