diff --git a/packages/flutter_tools/bin/macos_assemble.sh b/packages/flutter_tools/bin/macos_assemble.sh index 6e0a9bd1c4..8bdae34697 100755 --- a/packages/flutter_tools/bin/macos_assemble.sh +++ b/packages/flutter_tools/bin/macos_assemble.sh @@ -70,7 +70,7 @@ BuildApp() { "assemble" "--no-version-check" "-dTargetPlatform=darwin" - "-dDarwinArchs=x86_64" + "-dDarwinArchs=x86_64 arm64" "-dTargetFile=${target_path}" "-dBuildMode=${build_mode}" "-dTreeShakeIcons=${TREE_SHAKE_ICONS}" diff --git a/packages/flutter_tools/bin/podhelper.rb b/packages/flutter_tools/bin/podhelper.rb index 1ef6b55a0d..108eb23a20 100644 --- a/packages/flutter_tools/bin/podhelper.rb +++ b/packages/flutter_tools/bin/podhelper.rb @@ -116,9 +116,6 @@ def flutter_additional_macos_build_settings(target) configuration_engine_dir = build_configuration.type == :debug ? debug_framework_dir : release_framework_dir build_configuration.build_settings['FRAMEWORK_SEARCH_PATHS'] = "\"#{configuration_engine_dir}\" $(inherited)" - # ARM not yet supported https://github.com/flutter/flutter/issues/69221 - build_configuration.build_settings['EXCLUDED_ARCHS'] = 'arm64' - # When deleted, the deployment version will inherit from the higher version derived from the 'Runner' target. # If the pod only supports a higher version, do not delete to correctly produce an error. build_configuration.build_settings.delete 'MACOSX_DEPLOYMENT_TARGET' if inherit_deployment_target diff --git a/packages/flutter_tools/lib/src/build_system/targets/macos.dart b/packages/flutter_tools/lib/src/build_system/targets/macos.dart index 1af2e3bef4..d29fadad19 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/macos.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/macos.dart @@ -80,7 +80,7 @@ abstract class UnpackMacOS extends Target { } void _thinFramework(Environment environment, String frameworkBinaryPath) { - final String archs = environment.defines[kDarwinArchs] ?? 'x86_64'; + final String archs = environment.defines[kDarwinArchs] ?? 'x86_64 arm64'; final List archList = archs.split(' ').toList(); final ProcessResult infoResult = environment.processManager.runSync([ 'lipo', @@ -186,7 +186,7 @@ class DebugMacOSFramework extends Target { final Iterable darwinArchs = environment.defines[kDarwinArchs] ?.split(' ') .map(getDarwinArchForName) - ?? [DarwinArch.x86_64]; + ?? [DarwinArch.x86_64, DarwinArch.arm64]; final Iterable darwinArchArguments = darwinArchs.expand((DarwinArch arch) => ['-arch', getNameForDarwinArch(arch)]); @@ -256,7 +256,7 @@ class CompileMacOSFramework extends Target { ?.split(' ') .map(getDarwinArchForName) .toList() - ?? [DarwinArch.x86_64]; + ?? [DarwinArch.x86_64, DarwinArch.arm64]; if (targetPlatform != TargetPlatform.darwin) { throw Exception('compile_macos_framework is only supported for darwin TargetPlatform.'); } diff --git a/packages/flutter_tools/lib/src/ios/xcode_build_settings.dart b/packages/flutter_tools/lib/src/ios/xcode_build_settings.dart index ac89218067..6aadfdb50d 100644 --- a/packages/flutter_tools/lib/src/ios/xcode_build_settings.dart +++ b/packages/flutter_tools/lib/src/ios/xcode_build_settings.dart @@ -200,15 +200,12 @@ Future> _xcodeBuildSettingsLines({ xcodeBuildSettings.add('ARCHS=$arch'); } } - if (useMacOSConfig) { - // ARM not yet supported https://github.com/flutter/flutter/issues/69221 - xcodeBuildSettings.add('EXCLUDED_ARCHS=arm64'); - } else { - String excludedSimulatorArchs = 'i386'; + if (!useMacOSConfig) { // If any plugins or their dependencies do not support arm64 simulators // (to run natively without Rosetta translation on an ARM Mac), // the app will fail to build unless it also excludes arm64 simulators. + String excludedSimulatorArchs = 'i386'; if (!(await project.ios.pluginsSupportArmSimulator())) { excludedSimulatorArchs += ' arm64'; } diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart index 4e5cc455d3..a83ecf4d6d 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_macos_test.dart @@ -291,7 +291,6 @@ void main() { 'FLUTTER_BUILD_DIR=build', 'FLUTTER_BUILD_NAME=1.0.0', 'FLUTTER_BUILD_NUMBER=1', - 'EXCLUDED_ARCHS=arm64', 'DART_DEFINES=Zm9vLmJhcj0y,Zml6ei5mYXI9Mw==', 'DART_OBFUSCATION=true', 'EXTRA_FRONT_END_OPTIONS=--enable-experiment=non-nullable', @@ -303,6 +302,7 @@ void main() { 'PACKAGE_CONFIG=/.dart_tool/package_config.json', 'COCOAPODS_PARALLEL_CODE_SIGN=true', ])); + expect(contents, isNot(contains('EXCLUDED_ARCHS'))); }, overrides: { FileSystem: () => fileSystem, ProcessManager: () => FakeProcessManager.list([