iOS shell 脚本实现自动打包
2022-05-13 本文已影响0人
笔头还没烂
方法很简单,先上源码:
#!/bin/sh
#计时
SECONDS=0
# 项目名称
project_name=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'`
echo "工程名是: $project_name"
# 当前时间(用于区分目录名打包时间)
now=$(date +"%Y-%m-%d_%H-%M-%S")
echo "打包时间是: $now"
# scheme名称
scheme_name=${project_name}
echo "scheme名称是: $scheme_name"
# 项目路径【把该.sh文件放在xxx.xcodeproj同一目录下】
project_path='./'
#导出目录
export_path="/Users/pilipala/Desktop/${project_name}/${now}"
echo "导出目录是: $export_path"
#ipa包路径(用于检验是否导出成功)
export_ipa_path = "${export_path}/${project_name}.ipa"
echo "ipa包路径是: $export_ipa_path"
#编译build路径
archive_path="${export_path}/${project_name}.xcarchive"
echo "编译build路径是: $archive_path"
# 打包配置plist文件路径【这个文件需要先创建】
plist_path='./ExportOptions.plist'
#打包方式
build_type="project"
# workspace/xcodeproj 路径(根据项目是否使用cocoapod,确定打包的方式)
if [ -e "${project_path}/${project_name}.xcworkspace" ];then
workspace_path="${project_path}/${project_name}.xcworkspace"
build_type="workspace"
else
workspace_path="${project_path}/${project_name}.xcodeproj"
echo "工程路径是: $workspace_path"
build_type="project"
fi
echo ${workspace_path}
# scheme名称
scheme_name=${project_name}
# 配置打包样式:Release/ad-hoc/Debug
configuration='Release'
echo "打包样式是: $configuration"
echo '=============正在清理工程============='
echo $configuration
xcodebuild \
clean -${build_type} ${workspace_path} \
-scheme ${scheme_name} \
-configuration ${configuration} -quiet || exit
echo '清理完成-->>>--正在编译工程:'${workspace_path}
# build
if [ -d ${workspace_path} ];then
xcodebuild archive -${build_type} ${workspace_path} \
-scheme ${scheme_name} \
-configuration ${configuration} \
-archivePath ${archive_path} -quiet || exit
else
echo 'workspace 不存在'
fi
# 检查是否构建成功(build)
if [ -d ${archive_path} ] ; then
echo '=============项目 build 成功============='
else
echo '=============项目 build 失败============='
exit 1
fi
# exprot
echo '编译完成-->>>--开始ipa打包'
xcodebuild -exportArchive -archivePath ${archive_path} \
-configuration ${configuration} \
-exportPath ${export_path} \
-exportOptionsPlist ${plist_path} \
-quiet || exit
if [ -e ${export_ipa_path} ]; then
#删除编译包文件
rm -rf $archive_path
echo '=============ipa包导出成功============='
else
echo '=============ipa包导出失败============'
echo "${export_ipa_path}"
exit 1
fi
#打包完成,打开目录
open ${export_path}
# 输出总用时
echo "执行耗时: ${SECONDS}秒"
exit 0
新建一个 .sh 文件,然后复制上面的代码。同时修改下面几个地方:
(1)第21行代码——导出目录的路径,前半部分需修改成与自身机器用户名一致的路径。即:export_path="/Users/xxxx/Desktop/{now}",替换xxxx为自身用户名即可。
(2)第33行代码——打包配置plist文件路径,这个 ExportOptions.plist 文件需要先创建。同时需要做相应配置,配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>destination</key>
<string>export</string>
<key>method</key>
<string>development</string>
<key>provisioningProfiles</key>
<dict>
<key>com.apple.Test</key>
<string>commonDev</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Developer</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>XU7AN</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
其中 provisioningProfiles 与 teamID 是证书配置,需根据自身证书情况做相应配置。
(3)最后将 .sh 文件与 ExportOptions.plist 文件 同时放在与.xcodeproj 同一个目录,运行 .sh文件即可。