Codemagic构建IPA报错:Runner.app需含推送通知功能描述文件
问题
配置Codemagic iOS工作流,目标是构建IPA并推送至TestFlight。已完成以下操作:
- 在App Store Connect创建Codemagic API密钥
- 通过Codemagic界面生成开发证书与分发证书
- 为应用创建描述文件,且该文件显示已启用推送通知功能
但构建流程启动时报错:
Encountered error while creating the IPA:
error: exportArchive: "Runner.app" requires a provisioning profile with the Push Notifications feature.
工作流配置如下:
ios-workflow-id: name: iOS Sample Workflow integrations: app_store_connect: CodeMagic environment: vars: APP_ID: ######### ios_signing: provisioning_profiles: - Codemagic certificates: - Development_Certificate - Distribution_Certificate scripts: - name: Set up code signing settings on Xcode project script: | xcode-project use-profiles - name: Get Flutter packages script: | flutter packages pub get - name: Install pods script: | find . -name "Podfile" -execdir pod install \; - name: Flutter build ipa script: | BUILD_NUMBER=$(($(app-store-connect get-latest-app-store-build-number "$APP_ID") + 1)) flutter build ipa --release \ --build-name=1.0.0 \ --build-number=$BUILD_NUMBER artifacts: - build/ios/ipa/*.ipa publishing: app_store_connect: auth: integration submit_to_testflight: true
代码签名日志:
Configure code signing settings Searching for files matching /Users/builder/Library/MobileDevice/Provisioning Profiles/*.mobileprovision Searching for files matching /Users/builder/Library/MobileDevice/Provisioning Profiles/*.provisionprofile List available code signing certificates in keychain /Users/builder/Library/codemagic-cli-tools/keychains/03-02-23_smdje8o8.keychain-db Searching for files matching /Users/builder/clone/**/*.xcodeproj Completed configuring code signing settings - Using profile "Codemagic" [717112ed-c3ca-45b5-946a-efe6d07dffcc] for target "Runner" [Debug] from project "Runner" - Using profile "Codemagic" [717112ed-c3ca-45b5-946a-efe6d07dffcc] for target "Runner" [Profile] from project "Runner" - Using profile "Codemagic" [717112ed-c3ca-45b5-946a-efe6d07dffcc] for target "Runner" [Release] from project "Runner" Generated options for exporting the project - Method: app-store - Provisioning Profiles: - com.fdforge.dev: Codemagic - Signing Certificate: Apple Distribution - Signing Style: manual - Team Id: ##### Saved export options to /Users/builder/export_options.plist
解决方案
以下是几个排查和解决方向:
确认描述文件的实际推送权限
登录App Store Connect,进入「证书、标识符和描述文件」,找到你在Codemagic中使用的「Codemagic」描述文件,点击查看详情:- 检查描述文件关联的App ID是否已开启推送通知功能,且描述文件是开启推送后重新生成的(开启权限后必须重新生成描述文件,旧文件不会自动更新权限)。
- 确保描述文件是分发类型(App Store或Ad Hoc),TestFlight发布需要对应分发证书的描述文件,开发描述文件无法用于此场景。
检查Xcode项目的推送配置
打开本地Xcode项目,进入Runner target的「Signing & Capabilities」标签页:- 确认已添加「Push Notifications」能力,且状态为启用。
- 检查项目
Info.plist中是否包含APS Environment项,发布版本需设置为production。
验证Codemagic中描述文件的匹配度
在Codemagic的「Code signing」页面,确认「Codemagic」描述文件的Bundle ID与项目中APP_ID完全一致(区分大小写)。若不一致,重新选择或导入匹配的描述文件。强制清理并重新导入签名文件
- 在App Store Connect中撤销当前分发证书,重新生成新的分发证书和对应的描述文件,再导入Codemagic。
- 在构建脚本的「Set up code signing settings on Xcode project」步骤前添加清理缓存命令:
rm -rf ~/Library/MobileDevice/Provisioning Profiles/*
检查Flutter构建命令参数
确保flutter build ipa命令未覆盖签名配置,若使用了--export-options-plist参数,检查plist文件中的推送相关配置是否正确。
内容的提问来源于stack exchange,提问作者Veronika Haichenko
相关产品推荐
相关产品推荐

