Fastlane Gym自动签名导出始终用Release Bundle ID?Debug ID何时启用?
关于Xcode导出方法与Bundle ID对应关系的疑问
我的Fastfile脚本
lane :build_and_deploy do api_key = app_store_connect_api_key( key_id: "XXXX", issuer_id: "XXX", key_filepath: "/Users/runner/AuthKey_XXXX.p8" ) begin gym( #scheme: scheme, skip_package_ipa: true, export_method: 'development', xcargs: '-allowProvisioningUpdates -onlyUsePackageVersionsFromResolvedFile -parallelizeTargets CURRENT_PROJECT_VERSION=9840 MARKETING_VERSION=2.0.7 -authenticationKeyID XXXX -authenticationKeyIssuerID XXX -authenticationKeyPath /Users/runner/AuthKey_XXXX.p8' ) archive_path = lane_context[SharedValues::XCODEBUILD_ARCHIVE] gym( archive_path: archive_path, skip_build_archive: true, project: "helloSports.xcodeproj", scheme: "helloSports", clean: true, xcargs: '-allowProvisioningUpdates -disableAutomaticPackageResolution -authenticationKeyID XXXX -authenticationKeyIssuerID XXX -authenticationKeyPath /Users/runner/AuthKey_XXXX.p8', skip_package_dependencies_resolution: true, #export_method: "app-store", export_method: "development", ) end end
我的疑问
我理解使用app-store导出方法时会使用Release Bundle ID,但使用development导出方法时,难道不应该使用Debug Bundle ID吗?或者说,Debug Bundle ID究竟会在什么导出场景下被使用?
解答
首先明确核心逻辑:Bundle ID的选择和导出方法没有直接绑定,而是和构建Archive时使用的Scheme/Configuration(Debug/Release)直接相关。
development导出方法仅决定导出时使用的Provisioning Profile类型(对应开发证书的描述文件),但Bundle ID是由构建Archive时的Configuration决定的。如果你的Archive是用Release Configuration构建的,哪怕用development导出,Bundle ID依然是Release版本的。- Debug Bundle ID仅在使用Debug Configuration构建时生效:比如在Xcode中直接点击Run按钮调试App,或者在
gym中显式指定configuration: "Debug"参数来构建Archive/IPA时,才会使用Debug Bundle ID。 - 你的Fastfile中两次调用
gym都未指定configuration参数,默认会使用Scheme中设置的默认Configuration(通常为Release),所以即便导出方法是development,实际使用的还是Release Bundle ID。
另外提个小建议:你的Fastfile里两次调用gym的操作可以合并,直接通过一次gym调用完成构建+导出,减少冗余步骤。
内容的提问来源于stack exchange,提问作者RadiumBall
相关产品推荐
相关产品推荐

