集成Firebase后SwiftUI应用无法安装到iPhone13 Pro 报错-402620375
问题描述
使用Xcode 13开发的SwiftUI Firebase测试应用,在iPhone 13 Pro模拟器上可正常运行,尝试构建部署到同型号实体iOS 15.5设备时弹出「无法安装」错误,核心错误提示为代码签名版本不再受支持,完整错误日志如下:
Unable to install "SwiftUI_FireBaseChatApp" Domain: com.apple.dt.MobileDeviceErrorDomain Code: -402620375 User Info: { DVTErrorCreationDateKey = "2022-06-15 19:33:21 +0000"; IDERunOperationFailingWorker = IDEInstalliPhoneLauncher; } -- The code signature version is no longer supported. Domain: com.apple.dt.MobileDeviceErrorDomain Code: -402620375 User Info: { DVTRadarComponentKey = 261622; MobileDeviceErrorCode = "(0xE8008029)"; "com.apple.dtdevicekit.stacktrace" = ( 0 DTDeviceKitBase 0x0000000110ea1614 DTDKCreateNSErrorFromAMDErrorCode + 272 1 DTDeviceKitBase 0x0000000110edadd8 __90-[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:]_block_invoke + 160 2 DVTFoundation 0x0000000106071be8 DVTInvokeWithStrongOwnership + 76 3 DTDeviceKitBase 0x0000000110edab30 -[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:] + 1336 4 IDEiOSSupportCore 0x000000010e039590 __118-[DVTiOSDevice(DVTiPhoneApplicationInstallation) processAppInstallSet:appUninstallSet:installOptions:completionBlock:]_block_invoke.301 + 2916 5 DVTFoundation 0x0000000106198f68 __DVT_CALLING_CLIENT_BLOCK__ + 16 6 DVTFoundation 0x000000010619a080 __DVTDispatchAsync_block_invoke + 364 7 libdispatch.dylib 0x00000001b08ae5f0 _dispatch_call_block_and_release + 32 8 libdispatch.dylib 0x00000001b08b01b4 _dispatch_client_callout + 20 9 libdispatch.dylib 0x00000001b08b78a8 _dispatch_lane_serial_drain + 668 10 libdispatch.dylib 0x00000001b08b8404 _dispatch_lane_invoke + 392 11 libdispatch.dylib 0x00000001b08c2c98 _dispatch_workloop_worker_thread + 648 12 libsystem_pthread.dylib 0x00000001b0a70360 _pthread_wqthread + 288 13 libsystem_pthread.dylib 0x00000001b0a6f080 start_wqthread + 8 ); } -- Analytics Event: com.apple.dt.IDERunOperationWorkerFinished : { "device_model" = "iPhone14,2"; "device_osBuild" = "15.5 (19F77)"; "device_platform" = "com.apple.platform.iphoneos"; "launchSession_schemeCommand" = Run; "launchSession_state" = 1; "launchSession_targetArch" = arm64; "operation_duration_ms" = 5015; "operation_errorCode" = "-402620375"; "operation_errorDomain" = "com.apple.dt.MobileDeviceErrorDomain"; "operation_errorWorker" = IDEInstalliPhoneLauncher; "operation_name" = IDEiPhoneRunOperationWorkerGroup; "param_consoleMode" = 0; "param_debugger_attachToExtensions" = 0; "param_debugger_attachToXPC" = 1; "param_debugger_type" = 5; "param_destination_isProxy" = 0; "param_destination_platform" = "com.apple.platform.iphoneos"; "param_diag_MainThreadChecker_stopOnIssue" = 0; "param_diag_MallocStackLogging_enableDuringAttach" = 0; "param_diag_MallocStackLogging_enableForXPC" = 1; "param_diag_allowLocationSimulation" = 1; "param_diag_gpu_frameCapture_enable" = 0; "param_diag_gpu_shaderValidation_enable" = 0; "param_diag_gpu_validation_enable" = 0; "param_diag_memoryGraphOnResourceException" = 0; "param_diag_queueDebugging_enable" = 1; "param_diag_runtimeProfile_generate" = 0; "param_diag_sanitizer_asan_enable" = 0; "param_diag_sanitizer_tsan_enable" = 0; "param_diag_sanitizer_tsan_stopOnIssue" = 0; "param_diag_sanitizer_ubsan_stopOnIssue" = 0; "param_diag_showNonLocalizedStrings" = 0; "param_diag_viewDebugging_enabled" = 1; "param_diag_viewDebugging_insertDylibOnLaunch" = 1; "param_install_style" = 0; "param_launcher_UID" = 2; "param_launcher_allowDeviceSensorReplayData" = 0; "param_launcher_kind" = 0; "param_launcher_style" = 0; "param_launcher_substyle" = 0; "param_runnable_appExtensionHostRunMode" = 0; "param_runnable_productType" = "com.apple.product-type.application"; "param_runnable_swiftVersion" = "5.6.1"; "param_runnable_type" = 2; "param_testing_launchedForTesting" = 0; "param_testing_suppressSimulatorApp" = 0; "param_testing_usingCLI" = 0; "sdk_canonicalName" = "iphoneos15.5"; "sdk_osVersion" = "15.5"; "sdk_variant" = iphoneos; } -- 系统信息 macOS Version 12.4 (Build 21F79) Xcode 13.4 (20503) (Build 13F17a) Timestamp: 2022-06-16T01:03:21+05:30
已尝试过StackOverflow上提及的常规签名问题解决方案,均未生效。当前应用仅在模板基础上新增了Firestore写入测试代码,尚未实现Firebase Authentication功能,Firestore数据库为生产模式,不确定是否与安全规则有关。新增的业务代码如下:
public struct City: Codable { let name: String let state: String? let country: String? let isCapital: Bool? let population: Int64? enum CodingKeys: String, CodingKey { case name case state case country case isCapital = "capital" case population } func addItem() { let db = Firestore.firestore() // 获取Firestore管理器实例 let city = City(name: "Los Angeles", state: "CA", country: "USA", isCapital: false, population: 5000000) do { try db.collection("cities").document("LA").setData(from: city) } catch _ { // 错误处理 } } }
排查方向与解决方案
首先明确无关排查项:这个报错发生在应用安装阶段,应用还未启动执行代码,和编写的City结构体逻辑、Firestore安全规则配置完全无关,不需要在业务代码和Firebase控制台规则上浪费时间。
按以下优先级逐一排查解决:
- 检查嵌入式依赖的签名配置
该错误90%的诱因是第三方依赖(尤其是Firebase SDK)未按要求做签名嵌入,旧版签名格式会被iOS 15+系统直接拦截:- 打开项目选中对应Target,进入
Build Phases标签页 - 找到
Embed Frameworks阶段,检查所有Firebase相关的framework、xcframework,确认每个依赖的嵌入规则为Embed & Sign,不要选择Embed Without Signing或Do Not Embed - 如果是用CocoaPods集成的Firebase,先执行
pod deintegrate,更新本地CocoaPods源到最新版本后重新执行pod install,旧版本CocoaPods生成的Pods配置会默认漏签嵌入式依赖 - 如果是用Swift Package Manager集成Firebase,删除SPM本地缓存后重新拉取最新版SDK,Xcode 13环境下旧版本Firebase的SPM发行包存在已知签名兼容问题
- 打开项目选中对应Target,进入
- 清理全链路构建缓存
旧构建缓存携带的失效签名也会触发该错误:- 执行Xcode菜单
Product > Clean Build Folder(快捷键Shift+Command+K) - 删除真机上之前安装残留的同名测试应用
- 打开Xcode设置的
Locations标签,找到Derived Data文件夹路径,进入后删除对应项目的所有缓存文件 - 重启Xcode和测试iPhone,重新连接设备后再尝试构建安装
- 执行Xcode菜单
- 核对主Target签名配置
排除依赖问题后检查主应用的签名设置:- 进入Target的
Signing & Capabilities标签页,确认Automatically manage signing勾选正常,选中的开发者团队不存在过期、失效证书 - 确认签名证书选择的是
Apple Development类型,不要使用旧版iOS Distribution开发证书 - 进入
Build Settings搜索Code Signing Identity,确认Debug真机环境的配置为Apple Development,不要设置为Don't Code Sign或选中过期证书
- 进入Target的
- 排查资源拷贝规则问题
检查Build Phases中的Copy Bundle Resources阶段,不要将.framework、.dylib这类二进制文件放在该阶段,所有二进制依赖必须放到Embed Frameworks阶段完成签名嵌入;如果存在自定义拷贝资源的脚本,确认脚本不会将未签名的二进制文件写入App Bundle。
内容的提问来源于stack exchange,提问作者Apekshik Panigrahi
相关产品推荐
相关产品推荐

