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

相关推荐
2501_915106325 小时前
iOS App 测试工具全景分析,构建从开发调试到线上监控的多阶段工具链体系
android·测试工具·ios·小程序·uni-app·iphone·webview
Digitally9 小时前
如何通过蓝牙将联系人从 iPhone 传输到 Android
android·ios·iphone
90后的晨仔9 小时前
2025年11月27日年解决隐私清单导致审核总是提示二进制无效的问题
ios
songgeb10 小时前
iOS Audio后台模式下能否执行非Audio逻辑
ios·swift
如此风景10 小时前
Swift的Extension简单说明
ios
kk哥889918 小时前
iOS开发:关于日志框架
网络·ios·cocoa
Haha_bj1 天前
Swift UI 状态管理
ios·app
2501_916007471 天前
iOS 应用性能测试的工程化流程,构建从指标采集到问题归因的多工具协同测试体系
android·ios·小程序·https·uni-app·iphone·webview
源码_V_saaskw1 天前
JAVA国际版同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5
android·java·ios·微信小程序
tbit1 天前
fluwx 拉起小程序WXLog:Error:fail to load Keychain status:-25300, keyData null:1
flutter·ios·微信小程序