3

我正在尝试使用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.

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


构建设置:

代码魔术构建设置

代码签名设置:

codemagic 代码签名设置

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

4

3 回答 3

6

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

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

<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
于 2020-10-30T15:33:09.833 回答
0

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

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 次。

于 2021-06-12T20:33:50.563 回答
0

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

源代码的所有步骤都记录在这里

希望这可以帮助!

于 2020-05-10T13:08:28.697 回答