使用Fastlane上传同版本新构建到TestFlight报ITMS错误如何解决?
问题原因
- 你使用的Fastlane自带的
increment_build_number方法默认仅修改Build号(CFBundleVersion),不会修改短版本号(CFBundleShortVersionString,即通常说的X.Y.Z格式版本号)。你手动修改Xcode配置后未同步到打包使用的Release配置,或者Fastlane读取的Info.plist路径有误,导致实际打出的安装包仍然携带1.0.14的短版本号。 - 项目存在Xcode缓存,DerivedData中残留旧配置信息,打包时优先读取了缓存的旧版本号。
- App Store Connect中你更新的1.0.15版本状态异常,未处于可接收新构建的开放状态。
解决方案
- 第一步:核对项目版本配置
打开Xcode项目设置,切换到Build Settings标签,搜索Versioning分类,确保所有编译配置(Debug、Release等)的Marketing Version值均为1.0.15,同时检查Info.plist文件中CFBundleShortVersionString字段值也为1.0.15。 - 第二步:清理Xcode缓存
执行命令rm -rf ~/Library/Developer/Xcode/DerivedData清空本地编译缓存,避免打包读取旧配置。 - 第三步:补充Fastlane版本校验逻辑
你可以在现有的Fastlane配置中增加版本号显式设置和校验步骤,避免配置读取异常:
platform :ios do private_lane :staging_build do # 显式设置短版本号,避免读取旧配置 increment_version_number( xcodeproj: './ios/myapp.xcodeproj', version_number: '1.0.15' ) increment_build_number(xcodeproj: './ios/myapp.xcodeproj') # 打印版本信息确认 version = get_version_number(xcodeproj: './ios/myapp.xcodeproj') build = get_build_number(xcodeproj: './ios/myapp.xcodeproj') UI.message("当前打包版本:#{version},Build号:#{build}") gym(scheme: 'myApp', workspace: './ios/myapp.xcworkspace') end desc 'Build & send to testflight' lane :upload_to_testF do staging_build upload_to_testflight(username: '*****@gmail.com', app_identifier: 'com.comp.myapp') commit_version_bump(message: 'bump build') push_to_git_remote end end
执行lane时观察日志输出的版本号是否为1.0.15,确认无误后再继续上传流程。
- 第四步:核对App Store Connect状态
登录App Store Connect,确认你要提交的1.0.15版本处于准备提交状态,没有被关闭或标记为已上线。
内容的提问来源于stack exchange,提问作者Oliver D
相关产品推荐
相关产品推荐

