之前比较懒,也是思想上比较懒,没有解放生产力,一次偶然的上线问题把这个事情给安排上了。
前情提要
项目分了两个上线的target,一个是主项目,一个是widget。
主项目 | widget | |
---|---|---|
BundleID(测试环境) | com.henshuxueTest | com.henshuxueWidgetTest |
显示名(测试环境) | 很数学测试 | 很数学测试 |
build(测试环境) | 249 | 249 |
BundleID | com.henshuxue | com.henshuxueWidget |
显示名 | 很数学 | 很数学 |
build | 249 | 249 |
上线的时候手动修改一下这两个部分,需要修改6块,非常麻烦,而且含容易出错。显示名如果修改出错在testflight里边都很难看出来,也真是头疼。
解决方案
显示名、bundleID
针对于显示名称跟 bundleID 这个在 xcode 里边已经有了很好的配置办法,只不过就是没有注意过怎么配置。
显示名推荐配置是:
- Project -> Build Settings -> 搜索 Bundle Display Name 然后分环境分别配置显示名称
- 在 Target 对应的 info 栏里边增加 Bundle display name 属性设置为 $(INFOPLIST_KEY_CFBundleDisplayName)
bundleID推荐配置是:
- Target -> Build Settings -> 搜索 Product Bundle Identifier 然后分环境分别配置 bundleID
这样基本上就不用手动在管这两部分了。
有个特别需要注意的地方,xcode的build settings里边的配置,如果修改过的话那么字体是加粗的!!!之前还真没有注意过,如果发现报莫名其妙的错误的时候看配置是空的,但是key是加粗的时候其实是说明还是修改了,只不过修改是空。。。
在Project的build settings 中设置的属性,默认在target中是继承的,因此能设置在Project中的还是尽量设置在Project中会比较方便。如果在target里边需要修改在单独修改,此时修改的key是加粗显示的,知道了这个变化之后还是挺明显的
build号自动化
推荐配置方式:
由于修改版本号只在 Archive 的时候用到其他的时候这个版本号基本上也没啥用处。所以针对于这种情况,只需要修改一下 scheme 的配置。
1.添加一个脚本内容如下,在archive之前执行一下。
#!/bin/bash
VERSION=""
while getopts "v:h" arg #选项后面的冒号表示该选项需要参数
do
case $arg in
v)
VERSION=$OPTARG
;;
h)
echo "-v 输入版本号"
;;
?)
echo "-v 输入版本号"
exit 1
;;
esac
done
if [[ $VERSION == "" ]]; then
echo "-v 输入版本号"
exit 1
fi
agvtool new-marketing-version $VERSION
build_Number=`date +%Y%m%d%H`
agvtool new-version -all ${build_Number}
echo "编译版本号:$VERSION.${build_Number}"