如何使用Fastlane与Crashlytics实现Xcode自动签名构建?及分发故障排查
既然手动用Xcode归档+Fabric桌面端分发一切正常,但Fastlane上传后测试人员装不了,核心问题大概率出在Fastlane构建/导出环节的配置和你手动操作的不一致上。我给你梳理几个最可能的排查方向:
1. 明确签名与导出配置,避免默认值偏差
手动归档时你肯定选对了QA环境对应的签名文件和导出类型,但Fastlane的build_app默认可能用了和你手动不一样的配置。试试在build_app里补全关键参数:
build_app( scheme: "The-App-Fabric", workspace: "The-App.xcworkspace", configuration: "QA", output_directory: "./build", clean: true, include_bitcode: false, # 指定导出类型,和你手动归档时选的一致(比如ad-hoc/enterprise) export_method: "ad-hoc", # 明确指定QA环境的Provisioning Profile名称,确保用的是包含所有测试设备的描述文件 provisioning_profile_specifier: "The-App-QA-AdHoc" )
这里的provisioning_profile_specifier要和你在开发者后台创建的描述文件名称完全匹配,export_method要对应你手动分发时的选择——比如如果是给内部测试人员用一般是ad-hoc,企业分发就用enterprise。
2. 确保Provisioning Profile包含所有测试设备UDID
手动分发时你可能已经把测试人员的设备UDID加到了描述文件里,但Fastlane用的可能是旧的缓存描述文件。可以试试:
- 去开发者后台更新QA环境的Provisioning Profile,确保所有需要的设备都在列表里,然后重新下载
- 删除本地缓存的描述文件:
~/Library/MobileDevice/Provisioning Profiles下的旧文件,让Fastlane构建时拉取最新的 - 如果用Fastlane Match管理签名,跑一遍
match adhoc(对应你的导出类型)来刷新签名文件
3. 复用手动导出的配置文件,完全对齐手动流程
如果上面的参数调整还是不行,最稳妥的办法是把手动归档的导出配置完全复用给Fastlane:
- 用Xcode手动归档一次,选择导出为Ad Hoc/企业包,导出时会生成一个
ExportOptions.plist文件 - 把这个plist文件存到项目目录里,比如命名为
ExportOptions-QA.plist - 在
build_app里添加export_options参数指向这个文件:
build_app( # 其他现有参数... export_options: "./ExportOptions-QA.plist" )
这样Fastlane的导出逻辑就和你手动操作100%一致,从根源上避免配置差异。
4. 检查Crashlytics后台的分发状态
最后确认下:构建上传成功后,有没有在Crashlytics Beta后台看到这个构建,并且状态是“可下载”?有时候Fastlane上传后可能需要手动点击“分发”按钮,或者检查crashlytics动作的参数——比如有没有加notify_groups指定要通知的测试组,确保测试人员能收到安装链接(不过如果是点击链接后无法安装,还是前面的签名问题更可能)。
先从这几个方向排查,应该能解决问题。
内容的提问来源于stack exchange,提问作者AtomicBoolean

