-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
Use case
I'm developing a Flutter plugin for ExecuTorch, which only provides arm64 binaries for macOS (no x86_64 support). Debug builds work correctly, but release builds fail because Flutter's build_macos.dart
| : XcodeSdk.MacOSX.genericPlatform; |
generic/platform=macOS, forcing universal binaries.
Issue:
- Debug: Uses
-destination platform=macOS,arch=arm64- Works - Release: Uses
-destination generic/platform=macOS- Forces arm64+x86_64 universal binary
Current code (build_macos.dart:202):
final String destination = buildInfo.isDebug
? 'platform=${XcodeSdk.MacOSX.displayName},arch=$arch'
: XcodeSdk.MacOSX.genericPlatform; // Forces universalAttempted workarounds (all failed):
- Xcode settings:
ARCHS=arm64,EXCLUDED_ARCHS=x86_64,ONLY_ACTIVE_ARCH=YES - Build flags:
--dart-define=DarwinArchs=arm64(only affects AOT compilation, not xcodebuild destination)
Reference: ExecuTorch only supports arm64 on macOS: https://docs.pytorch.org/executorch/stable/using-executorch-ios.html
Proposal
Allow developers to control architecture targeting for macOS release builds via:
Option 1: Respect DarwinArchs define for xcodebuild destination:
final String destination = buildInfo.isDebug || shouldLimitArchitecture
? 'platform=${XcodeSdk.MacOSX.displayName},arch=$arch'
: XcodeSdk.MacOSX.genericPlatform;Option 2: Add build flag:
flutter build macos --release --arch=arm64Option 3: Package.swift configuration support to declare supported architectures.
This would enable plugins with architecture-specific dependencies to build successfully without requiring debug builds.