前言
我们的app是使用多Scheme对应多环境, 测试时会打包出三个app, 分别对应三个环境. 实现参考手把手教你给一个iOS app配置多个环境变量 - 简书, jenkins的配置可自行百度.本篇文章主要讲解使用shell脚本构建项目的相关配置.
shell脚本代码
![](https://img.haomeiwen.com/i674953/94eb0cb8d047308e.png)
相关代码:
#工程环境路径
workspace_path=.
#工程名称
project_name=XXXX
#scheme名称
scheme_name=XXX_Test
#打包类型
configuration_type=XXX_Debug
#ipa导出配置文件名
ExportOptionsPlist_name=ExportOptions_Test.plist
echo "清除缓存文件"
xcodebuild clean
rm -rf archive
rm -f $scheme_name.ipa
echo "打ipa包"
sed -i '' 's/\app-store\<\/string\>/\development\<\/string\>/' $ExportOptionsPlist_name
sed -i '' 's/ProvisioningStyle = Automatic;/ProvisioningStyle = Automatic;/' $project_name.xcodeproj/project.pbxproj
echo "编译生成app命令"
xcodebuild archive -workspace $project_name.xcworkspace -scheme $scheme_name -configuration $configuration_type -archivePath archive/$project_name.xcarchive
echo "生成ipa"
xcodebuild -exportArchive -exportOptionsPlist $ExportOptionsPlist_name -archivePath archive/$project_name.xcarchive -exportPath ./ -configuration $configuration_type -allowProvisioningUpdates
相关代码变量解读
"workspace_path":工程路径变量 直接给"."就好
"project_name":工程名称
![](https://img.haomeiwen.com/i674953/60a7b5c42835a20b.png)
"scheme_name":"scheme的名称
![](https://img.haomeiwen.com/i674953/4ece28481a6ffd00.png)
"configuration_type": Debug或者Release
"ExportOptionsPlist_name": xcode9之后需要的打包配置不同的环境需要不同的ExportOptionsPlist文件, 需要在工程里创建添加plist文件
![](https://img.haomeiwen.com/i674953/f886462c188e3f35.png)
plist文件内容
![](https://img.haomeiwen.com/i674953/ef2d80edd074277d.png)
ProvisioningStyle 选择Automatic自动模式, 最后在xcode9之后需要添加-allowProvisioningUpdates. 然后不同环境配置不同的任务即可, 也可以使用一个任务将这些配置参数化即可. 最后在xcode9上 多scheme打不同的包会报证书不匹配的错误:"Automatic signing is unable to resolve an issue with the "xxx.app" target's entitlements."
![](https://img.haomeiwen.com/i674953/456ceeec1b047d2e.png)
此时可在buildSettings下面的Packaging 设置Product Bundle Identifier 和 info.plist文件中的Bundle Identifier一致即可
网友评论