尝试使用 codemagic 构建我的颤振应用程序时“App.framework 不支持配置文件”

Posted

技术标签:

【中文标题】尝试使用 codemagic 构建我的颤振应用程序时“App.framework 不支持配置文件”【英文标题】:"App.framework does not support provisioning profiles" when trying to build my flutter app with codemagic 【发布时间】:2020-04-23 07:43:09 【问题描述】:

我正在尝试使用 codemagic(因为我使用的是 Windows 机器)构建和发布我的 Flutter 应用程序以用于开发目的(使用 testmagic 对其进行测试)。但是每次我构建应用程序时,步骤build 都会失败,并显示以下错误:

Unable to export archive: 2020-01-05 05:46:47.914 xcodebuild[1398:9643] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/r7/d9twdq011sb8d3q1p8f39cdr0000gn/T/Runner_2020-01-05_05-46-47.912.xcdistributionlogs'. error: exportArchive: App.framework does not support provisioning profiles. Error Domain=IDEProvisioningErrorDomain Code=10 "App.framework does not support provisioning profiles." UserInfo=IDEDistributionIssueSeverity=3, NSLocalizedDescription=App.framework does not support provisioning profiles., NSLocalizedRecoverySuggestion=App.framework does not support provisioning profiles, but provisioning profile Name of the App + ID has been manually specified. Remove this item from the "provisioningProfiles" dictionary in your Export Options property list. ** EXPORT FAILED **

错误消息中有一部分说我应该从provisioningProfiles 字典中删除和项目:

 Remove this item from the "provisioningProfiles" dictionary in your Export Options property list.

我不明白这是什么意思。我尝试从我的苹果开发者帐户中删除自动生成的配置文件,但这不起作用。


构建设置:

代码签名设置:

我不知道为什么会这样。我在互联网上发现了一些关于类似问题的 github 问题,但每个问题仍然是开放的并且不活跃,或者对于 xcode 用户,我没有使用 xcode。

【问题讨论】:

嗨,你能检查你的 podfile 和这个解决方案吗? github.com/CocoaPods/CocoaPods/issues/… 嘿。这个podfile 应该在哪里?找不到。 如果你使用 cocoapods,通常在 ios 文件夹中 我不使用它,这很有趣。我什至不知道这是什么.. 嗨,我们需要其他信息,例如构建链接来帮助解决这个问题。但我想最好继续在 Codemagic 松弛社区中工作。您可以在 Codemagic 网站上找到该链接 【参考方案1】:

老问题,但我认为这个解决方案应该适用于再次偶然发现这个问题的人。通常这只会影响那些试图在没有 Mac 的情况下构建的用户,然后他们会编辑他们可以找到的每个“BundleIdentifier”实例。

解决方法是打开您的 AppFrameworksInfo.plist 文件并将 CFBundleIdentifier 更改为 io.flutter.flutter.app 而不是您的包 ID。

<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>

【讨论】:

我的好先生救了我一命。一整天都在敲打我的头,试图建造东西,这终于让它工作了。谢谢!【参考方案2】:

这不是您问题的直接答案,但我设法为 Flutter androidIOS app starter-template 创建了一个构建管道无需需要物理 macOS设备。

所有带有源代码的步骤都是documented here。

希望这会有所帮助!

【讨论】:

【参考方案3】:

如果您使用 CI/CD(例如 Azure DevOpps)并传递 xcodebuild 命令行构建配置参数,例如 PRODUCT_BUNDLE_IDENTIFIERPROVISIONING_PROFILE_SPECIFIER,它也将被向下传递到其他 pod 项目。正如@arnold-veltmann 所说的here,罪魁祸首将PRODUCT_BUNDLE_IDENTIFIER 传递给不支持签名的项目(pods)。在我的情况下,这是一个使用 Ionic 5Capacitor 的项目,它使用 cocoapods。

pods 文件中常用的post_install 解决方案对我不起作用

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
      config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
      config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
      end
    end
end

虽然我确实检查过并且 post_install 运行并正确设置了构建配置。

我最终做的是创建一个自定义构建设置,例如 SP_PRODUCT_BUNDLE_IDENTIFIER 并将其传递给 azure devops yaml 管道 xcode 构建步骤

 - task: Xcode@5
    displayName: 'Build iOS app'
    inputs:
      actions: 'build'
      configuration: 'Appcenter'
      sdk: 'iphoneos'
      xcWorkspacePath: 'ios/App/App.xcworkspace'
      scheme: 'App'
      xcodeVersion: '11'
      packageApp: true
      archivePath: './output'
      exportPath: './output'
      exportOptions: 'plist'
      exportOptionsPlist: './_deploy/Appcenter-ExportOptions.plist'
      signingOption: 'default'
      args: SP_PRODUCT_BUNDLE_IDENTIFIER=$(bundleIdentifier) SP_PROVISIONING_PROFILE_SPECIFIER=$(iosProvisioningProfile)

之后在project.pbxproj 中,我找到了用于 Appcenter (CI/CD) 构建和设置的构建配置

E6D3FFF3256E6D8500109D05 /* Appcenter */ = 
            isa = XCBuildConfiguration;
            baseConfigurationReference = A158677F50F9AF6793C0B6F1 /* Pods-App.appcenter.xcconfig */;
            buildSettings = 
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
                CODE_SIGN_IDENTITY = "iPhone Distribution";
                CODE_SIGN_STYLE = Manual;
                DEVELOPMENT_TEAM = B982UY6B4T;
                INFOPLIST_FILE = App/Info.plist;
                IPHONEOS_DEPLOYMENT_TARGET = 12.0;
                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
                PRODUCT_BUNDLE_IDENTIFIER = "$(SP_PRODUCT_BUNDLE_IDENTIFIER)";
                PRODUCT_NAME = "$(TARGET_NAME)";
                PROVISIONING_PROFILE_SPECIFIER = "$(SP_PROVISIONING_PROFILE_SPECIFIER)";
                SWIFT_ACTIVE_COMPILATION_CONDITIONS = USE_PUSH;
                SWIFT_VERSION = 5.0;
                TARGETED_DEVICE_FAMILY = 1;
            ;
            name = Appcenter;
        ;

注意PROVISIONING_PROFILE_SPECIFIER = "$(SP_PROVISIONING_PROFILE_SPECIFIER)";

我希望这对某人有所帮助,因为我花了 1 天时间,构建了 1000 次,但又失败了 1001 次。

【讨论】:

以上是关于尝试使用 codemagic 构建我的颤振应用程序时“App.framework 不支持配置文件”的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:无法在 codemagic 上为 ios 构建

Codemagic颤振无法构建android

从 CodeMagic 上传二进制 App Store Connect

Codemagic 不适用于 iOS 中的自定义运行脚本?

Codemagic 未签署我的应用程序以进行分发

由于 Firebase GoogleService-Info.plist,Codemagic iOS 构建失败