在游戏开发中,每次版本发布,我们往往需要针对不同的渠道接入不同的SDK,打入不同的渠道资源,输出特定文件名格式的包并提交给渠道。Android在这方便尤其需要耗费很大的精力,iOS由于只需要针对Appstore,且最多两种包:广告包和付费包,所以省了不小力气。不过如果做一个自动打包的脚本,那么我们就可以从电脑前解放出来,少了些996,多些自我提升的时间。
下面给出一个模板
#!/bin/sh
# 你的xcode工程目录
project_path="/Users/用户名/Desktop/工程名"
# 工程编译出app后放置的目录
build_path="${project_path}/build/"
plist_path="${project_path}/Info.plist"
cd $project_path
#app文件名称, 使用shell命令basename,指定一个路径,basename命令会删掉所有的前缀包括最后一个'/'字符,然后将字符串显示出来
appname=$(basename ${project_path})
#获取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" ${plist_path})
#获取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" ${plist_path})
#获取当前时间
now=$(date +"%Y%m%d-%H:%M")
# target列表
TARGETS=("target1" "target2")
for (i=0;i<${#TARGETS[@]};i++)
do
target_name=${TARGETS[$i]}
echo ${target_name}
#删除
rm -rf ${build_path}
#清除
xcodebuild -target ${target_name} clean
#编译
xcodebuild -target ${target_name} -configuration Distribution -sdk iphoneos build
#生成ipa
ipa_name="${target_name}_${bundleShortVersion}_${bundleVersion}_${now}
xcrun -sdk iphoneos PackageApplication -v "${build_path}/Release-iphoneos/${appname}.app" -o "${build_path}/${ipa_name}.ipa"
done
值得一提的是还可以使用命令
/usr/libexec/PlistBuddy -c "set :键 值" ${plist_path}
来修改plist里的属性,以做一些自定义处理。