ios自动化批量打包
iOS自动化批量打包是一个非常重要的工作,尤其对于需要频繁进行版本发布的互联网企业来说。本文将介绍如何使用脚本自动化批量打包iOS应用程序。
一、打包原理
在iOS开发中,Xcode提供了一些打包方式:
1.手动打包方式:使用Xcode界面进行手动打包,需要手动选择证书和描述文件等。
2.使用xcodebuild命令行方式:使用命令行工具xcodebuild进行自动打包。通过xcodebuild可以获得同样的效果,但却可以自动化执行。
三、脚本实现自动化
上面介绍了两种手动的打包方式,如何使用脚本自动化批量打包iOS应用程序呢?我们使用xcodebuild命令行进行自动化打包。
首先需要使用Xcode创建certificate和Provisioning Profile
certificate:是证书,是用来证明你(你的团队)有权利开发此应用;
Provisioning Profile:包含了开发者ID,使用的设备号等信息。
我们可以通过以下步骤进行脚本的自动化打包:
1.首先,需要用Xcode打包一次,以便在新建项目时可以参考。
2.在Xcode命令行运行“xcodebuild -list”命令,可以列出所有的构建目标。
3.构建目标自动化:运行一下命令,xcodebuild -project .xcodeproj -target targetName -configuration "Release"
4.构建的目标名字是项目里的target name,后面的配置是指定编译模式。
5.接下来,使用xcodebuild -exportArchive命令以及其他参数导出ipa文件。以下是一个脚本示例,其中的“XXX”需要替换为您自己的信息。
```
#!/bin/bash
# 工程名称
project_name="XXX"
# 打包模式 Debug/Release
development_mode=Release
# scheme 名称
scheme_name="XXX"
# plist 文件所在路径
export_plist="./ExportOptions.plist"
# 存放打包结果的根目录(不建议修改)
export_main_path="/Users/xxx/Desktop/app-package"
# 工程目录
project_path="/Users/xxx/Documents/XXX/XXX"
# 获取版本号
app_version=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" ${project_path}/${project_name}/Info.plist)
# 获取 build 号
build_version=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" ${project_path}/${project_name}/Info.plist)
# 获取时间戳
timestamp=$(date +%Y%m%d_%H%M%S)
# 存储 ipa 文件的路径
export_ipa_path="${export_main_path}/${timestamp}/${project_name}/${app_version}_${build_version}"
# 检查根目录是否存在
if [ ! -d ${export_main_path} ]; then
mkdir ${export_main_path}
fi
# 创建目录以及 ipa 文件的文件夹
mkdir -p ${export_ipa_path}
# 将 xcrun 所在位置存放在变量里
xcrun_path=$(xcrun --toolchain XcodeDefault --find xcodebuild)
# 将 exportArchive 所在位置存放在变量里
export_archive_path=${export_main_path}/archive
mkdir -p ${export_archive_path}
# 开始打包
echo "==== 开始打包 ===="
echo "==== clean ===="
xcodebuild clean
echo "==== archive ===="
$xcrun_path archive \
-project ${project_path}/${project_name}.xcodeproj \
-scheme ${scheme_name} \
-archivePath ${export_archive_path}/${app_version}_${build_version}.xcarchive \
-configuration ${development_mode}
echo "==== export ===="
$xcrun_path exportArchive \
-archivePath ${export_archive_path}/${app_version}_${build_version}.xcarchive \
-exportPath "${export_ipa_path}" \
-exportOptionsPlist ${export_plist} \
-allowProvisioningUpdates