iOS 自动签名打包,并用脚本上传appstore

背景:

1)测试环境给测试,产品,或者其他业务人员打测试包时,经常存在需要添加设备,不得不重新生成描述文件,手动去更新打包机描述文件配置

2)证书,描述文件过期造成打包失败,需要重新生成描述文件,证书等。并手动更换

3)开发人员设备需要手动安装证书,描述文件,p12文件等。过期时也要手工更换

4)测试验收完最后一个包时,需要手动打包上传到appstore

针对这些现状,对打包脚本进行了改进。使用苹果推出的自动签名机制进行打包,并上传appStore

自动签名打包需要配置的内容如下:

1, 打开Xcode在左上角Xcode点击下拉菜单,然后选中Setting

接下来在弹出的操作面板上选择Account,选择自己的apple developer Account 进行登录。

2,在Xcode的Sign& Capabilities 栏下方勾选 autoMatically manage signing, 并选择自己的team,具体如下图所示:

3,配置ipa导出选项(一个ExportOptions.plist文件,导出ipa包时执行脚本命令需要)

1)Ad-hoc包配置如下:

2)Release包配置如下:

3)Debug包配置如下:

4,打包命令:

复制代码
archive
xcodebuild archive -workspace ProjectName.xcworkspace -scheme targetName -configuration Release -archivePath path/xxx.xcarchive -quiet -destination generic/platform=iOS -allowProvisioningUpdates
exportArchive
xcodebuild -exportArchive -archivePath path/xxx.xcarchive -exportPath ipaPath -exportOptionsPlist path/ExportOptions.plist -allowProvisioningUpdates

其中,命令中的ProjectName、targetName、path、ipaPath等都需要根据自己的项目来配置。ExportOptions.plist需要根据自己的ipa包类型比如debug、release、adhoc来指定具体的文件

5,调试件脚本

经过上面的配置后,第一次打包很顺利成功了,导出也没问题。但是过了一天再次打包就出问题了,终端提示如下:

复制代码
DVTPortal: Error:
Error Domain=DVTPortalServiceErrorDomain Code=1100 "Your session has expired. Please log in." UserInfo={payload={

经过排查发现是xcode登录账号时,默认会使用钥匙串,因此需要把默认的使用钥匙串关掉。

操作步骤如下:

1)在Xcode退出所有已经登录的apple developer Account

2)退出Xcode

3)在终端执行如下命令:defaults write com.apple.dt.Xcode DVTDeveloperAccountUseKeychainService_2 -bool NO

4)重新打开Xcode,登录apple developer Account

经过这些操作后,目前没有再出现这个报错了。

参考网址:https://developer.apple.com/forums/thread/112606

5)上传appStore

通过命令行上传appStore官方文档地址:

https://help.apple.com/asc/appsaltool/#/apdATD1E53-D1E1A1303-D1E53A1126

创建App 专用密码官方文档地址:

https://support.apple.com/zh-cn/102654

最终的上传ipa包的命令如下:

复制代码
xcrun altool --upload-package ${ipaPath} -t ios  --apple-id env.appId --bundle-id env.bundle_id --bundle-short-version-string ${APP_VERSION} --bundle-version ${BUILD_NUMBER} -u env.username -p env.password

其中env.appId是从appStore中,app信息里查看获取,env.bundle_id是info.plist中的bundle identifier,APP_VERSION是info.plist的version,BUILD_NUMBER是info.plist文件中的BuildNumber

附件资源下载链接:链接: https://pan.baidu.com/s/1qR5-nrYjnIhLI7xqPUqn4Q?pwd=3pdi 提取码: 3pdi

相关推荐
若水无华18 小时前
fiddler 配置ios手机代理调试
ios·智能手机·fiddler
Aress"19 小时前
【ios越狱包安装失败?uniapp导出ipa文件如何安装到苹果手机】苹果IOS直接安装IPA文件
ios·uni-app·ipa安装
Jouzzy1 天前
【iOS安全】Dopamine越狱 iPhone X iOS 16.6 (20G75) | 解决Jailbreak failed with error
安全·ios·iphone
瓜子三百克1 天前
采用sherpa-onnx 实现 ios语音唤起的调研
macos·ios·cocoa
左钦杨1 天前
IOS CSS3 right transformX 动画卡顿 回弹
前端·ios·css3
努力成为包租婆1 天前
SDK does not contain ‘libarclite‘ at the path
ios
安和昂2 天前
【iOS】Tagged Pointer
macos·ios·cocoa
I烟雨云渊T2 天前
iOS 阅后即焚功能的实现
macos·ios·cocoa
struggle20252 天前
适用于 iOS 的 开源Ultralytics YOLO:应用程序和 Swift 软件包,用于在您自己的 iOS 应用程序中运行 YOLO
yolo·ios·开源·app·swift
Unlimitedz2 天前
iOS视频编码详细步骤(视频编码器,基于 VideoToolbox,支持硬件编码 H264/H265)
ios·音视频