KMM项目升级Xcode 14后Gradle同步遇gRPC签名配置问题求助
问题描述
升级KMM项目到Xcode 14后,执行Gradle同步时出现构建错误:shared/build/cocoapods/synthetic/IOS/Pods/Pods.xcodeproj: error: Signing for "gRPC-C++-gRPCCertificates-Cpp" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'gRPC-C++-gRPCCertificates-Cpp' from project 'Pods')
项目依赖Firebase,shared模块的build.gradle配置如下:
kotlin { ... cocoapods { ... ios.deploymentTarget = "15.0" podfile = project.file("../iosApp/Podfile") framework { baseName = "shared" } xcodeConfigurationToNativeBuildType val firebaseVersion = "9.6.0" pod("FirebaseCore") { version = firebaseVersion } pod("FirebaseAuth") { version = firebaseVersion } pod("FirebaseFirestore") { version = firebaseVersion } pod("FirebaseCrashlytics") { version = firebaseVersion } pod("FirebaseAnalytics") { version = firebaseVersion } } ... }
手动在Xcode中为gRPC-C++-gRPCCertificates-Cpp目标指定开发团队后可正常构建,但Gradle同步使用临时生成的项目文件,该操作无法永久解决问题,目前临时回退到Xcode 13.4.1,希望找到在Gradle同步构建中配置开发团队的方法。
解决方案
可以通过两种方式在Gradle同步阶段自动为Pods目标配置开发团队:
方法1:在KMM的build.gradle中添加xcodebuild参数
在cocoapods块内添加xcodebuild配置,直接指定开发团队ID和签名风格:
kotlin { cocoapods { // 保留原有配置... xcodebuild { // 替换为你的开发团队ID(可在Xcode项目Signing页面或Apple开发者后台获取) args("-DEVELOPMENT_TEAM=XXXXXXXXX") args("-CODE_SIGN_STYLE=Manual") } } }
方法2:通过关联的Podfile添加post_install钩子
由于项目已关联iOS App的Podfile,可在iosApp/Podfile中添加post_install钩子,自动为所有Pods目标设置签名信息:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 替换为你的开发团队ID config.build_settings['DEVELOPMENT_TEAM'] = 'XXXXXXXXX' config.build_settings['CODE_SIGN_STYLE'] = 'Manual' end end end
说明
- Xcode 14对Pods目标的签名要求更严格,默认需要明确指定开发团队,这是导致该问题的核心原因。
- 开发团队ID可在Xcode的项目
Signing & Capabilities页面中查看(团队名称旁括号内的字符串),或登录Apple Developer后台获取。
内容的提问来源于stack exchange,提问作者Alchitry
相关产品推荐
相关产品推荐

