尝试使用 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 android
和 IOS
app starter-template 创建了一个构建管道无需需要物理 macOS
设备。
所有带有源代码的步骤都是documented here。
希望这会有所帮助!
【讨论】:
【参考方案3】:如果您使用 CI/CD(例如 Azure DevOpps)并传递 xcodebuild 命令行构建配置参数,例如 PRODUCT_BUNDLE_IDENTIFIER
或 PROVISIONING_PROFILE_SPECIFIER
,它也将被向下传递到其他 pod 项目。正如@arnold-veltmann 所说的here,罪魁祸首将PRODUCT_BUNDLE_IDENTIFIER
传递给不支持签名的项目(pods
)。在我的情况下,这是一个使用 Ionic 5
和 Capacitor
的项目,它使用 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 构建