Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flutter. IOS signing issue. "Runner" requires a provisioning profile with the Push Notifications feature

In my flutter project I'm using Codemagic as CI/CD tool. After adding the flavor to the app, I started getting this error on one of the flavours.

> flutter build ios --release --no-codesign --build-name=0.0.1 --build-number=33 --flavor dev
Downloading ios tools...                                            2.4s
Downloading ios-profile tools...                                    1.5s
Downloading ios-release tools...                                    7.3s
Warning: Building for device with codesigning disabled. You will have to manually codesign before deploying to device.
Building se.getgaston.app for device (ios-release)...
Running pod install...                                            323.3s (!)
Running Xcode build...                                          
Xcode build done.                                           875.6s
Built /Users/builder/clone/build/ios/iphoneos/Runner.app.

> xcode-project build-ipa --workspace /Users/builder/clone/ios/Runner.xcworkspace --scheme dev --config Release-dev
Archive Runner.xcworkspace
Execute "xcodebuild -workspace /Users/builder/clone/ios/Runner.xcworkspace -scheme dev -config Release-dev -archivePath build/ios/xcarchive/Runner_j1t8laki.xcarchive archive COMPILER_INDEX_STORE_ENABLE=NO DEVELOPMENT_TEAM=28759WZ2NP 'CODE_SIGN_IDENTITY=iPhone Distribution'"

❌  error: "Runner" requires a provisioning profile with the Push Notifications feature. Select a provisioning profile in the Signing & Capabilities editor. (in target 'Runner' from project 'Runner')

I've checked the certificate, provision profile and app id for both working flavour and one with signing issue and didn't find any difference.

like image 364
Leo Avatar asked Sep 06 '25 06:09

Leo


2 Answers

This helped me.

My command was flutter build ipa --export-options-plist path/to/export.plist --build-number=123 --release --flavor=prod --dart-define=FLAVOR=prod

Sample export.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>compileBitcode</key>
    <true/>
    <key>method</key>
    <string>enterprise</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>com.company.appname</key>
        <string>provisioningProfiles name </string>
    </dict>
    <key>signingCertificate</key>
    <string>iOS Distribution</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>stripSwiftSymbols</key>
    <true/>
    <key>teamID</key>
    <string>xxxxxx</string>
    <key>thinning</key>
    <string>&lt;none&gt;</string>
</dict>
</plist>
like image 106
Af_Frederik Avatar answered Sep 07 '25 21:09

Af_Frederik


For us, this was solved by adding a "Info.plist File" setting directly to all build schemes.

Before the change, the Info.plist was inherited from the Runner project:

Screenshot showing the build configuration before changes

To fix it, double-click on the top-level "Runner/info.plist":

Screenshot showing open editor for Info.plist File

Delete the text, and press return. This should clear the value for all projects.

Then, double-click in the same place, re-enter the same Runner/info.plist value again, and press return.

This should then update all the schemes to have the setting, rather than inheriting it.

The result should look like this:

Screenshot showing the build configuration after changes

This was caused by Codemagic's xcode-project use-profiles command. It expects each scheme to specify the Info.plist location, and doesn't parse inherited values.

like image 37
Tom Gilder Avatar answered Sep 07 '25 20:09

Tom Gilder



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!