Unverified Commit 273630c0 authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Exclude arm64 from valid iOS simulators (#73458)

parent d3a2db22
...@@ -182,6 +182,43 @@ Future<void> main() async { ...@@ -182,6 +182,43 @@ Future<void> main() async {
await flutter('clean'); await flutter('clean');
}); });
section('Build app for simulator with all available architectures');
// Apple Silicon ARM simulators not yet supported.
// Prove (on Xcode 12) Flutter knows to exclude this architecture.
await inDirectory(flutterProject.rootPath, () async {
await flutter('build', options: <String>[
'ios',
'--simulator',
'--no-codesign',
'--verbose',
], environment: <String, String>{
'FLUTTER_XCODE_ONLY_ACTIVE_ARCH': 'NO'
});
});
final String simulatorAppFrameworkBinary = path.join(
flutterProject.rootPath,
'build',
'ios',
'iphonesimulator',
'Runner.app',
'Frameworks',
'App.framework',
'App',
);
final String archs = await fileType(simulatorAppFrameworkBinary);
if (!archs.contains('Mach-O 64-bit dynamically linked shared library x86_64')) {
throw TaskResult.failure('Unexpected architecture');
}
section('Clean build');
await inDirectory(flutterProject.rootPath, () async {
await flutter('clean');
});
section('Archive'); section('Archive');
await inDirectory(flutterProject.rootPath, () async { await inDirectory(flutterProject.rootPath, () async {
......
...@@ -68,6 +68,9 @@ def flutter_additional_ios_build_settings(target) ...@@ -68,6 +68,9 @@ def flutter_additional_ios_build_settings(target)
# When deleted, the deployment version will inherit from the higher version derived from the 'Runner' target. # 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. # If the pod only supports a higher version, do not delete to correctly produce an error.
build_configuration.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' if inherit_deployment_target build_configuration.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' if inherit_deployment_target
# Apple Silicon ARM simulators not yet supported.
build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386'
end end
end end
......
...@@ -250,7 +250,7 @@ Future<XcodeBuildResult> buildXcodeProject({ ...@@ -250,7 +250,7 @@ Future<XcodeBuildResult> buildXcodeProject({
if (buildForDevice) { if (buildForDevice) {
buildCommands.addAll(<String>['-sdk', 'iphoneos']); buildCommands.addAll(<String>['-sdk', 'iphoneos']);
} else { } else {
buildCommands.addAll(<String>['-sdk', 'iphonesimulator', '-arch', 'x86_64']); buildCommands.addAll(<String>['-sdk', 'iphonesimulator']);
} }
} }
......
...@@ -209,6 +209,9 @@ List<String> _xcodeBuildSettingsLines({ ...@@ -209,6 +209,9 @@ List<String> _xcodeBuildSettingsLines({
if (useMacOSConfig) { if (useMacOSConfig) {
// ARM not yet supported https://github.com/flutter/flutter/issues/69221 // ARM not yet supported https://github.com/flutter/flutter/issues/69221
xcodeBuildSettings.add('EXCLUDED_ARCHS=arm64'); xcodeBuildSettings.add('EXCLUDED_ARCHS=arm64');
} else {
// Apple Silicon ARM simulators not yet supported.
xcodeBuildSettings.add('EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64 i386');
} }
for (final MapEntry<String, String> config in buildInfo.toEnvironmentConfig().entries) { for (final MapEntry<String, String> config in buildInfo.toEnvironmentConfig().entries) {
......
...@@ -683,12 +683,14 @@ Information about project "Runner": ...@@ -683,12 +683,14 @@ Information about project "Runner":
final String contents = config.readAsStringSync(); final String contents = config.readAsStringSync();
expect(contents.contains('ARCHS=armv7'), isTrue); expect(contents.contains('ARCHS=armv7'), isTrue);
expect(contents.contains('EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64 i386'), isTrue);
final File buildPhaseScript = fs.file('path/to/project/ios/Flutter/flutter_export_environment.sh'); final File buildPhaseScript = fs.file('path/to/project/ios/Flutter/flutter_export_environment.sh');
expect(buildPhaseScript.existsSync(), isTrue); expect(buildPhaseScript.existsSync(), isTrue);
final String buildPhaseScriptContents = buildPhaseScript.readAsStringSync(); final String buildPhaseScriptContents = buildPhaseScript.readAsStringSync();
expect(buildPhaseScriptContents.contains('ARCHS=armv7'), isTrue); expect(buildPhaseScriptContents.contains('ARCHS=armv7'), isTrue);
expect(buildPhaseScriptContents.contains('"EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64 i386"'), isTrue);
}); });
testUsingOsxContext('sets TRACK_WIDGET_CREATION=true when trackWidgetCreation is true', () async { testUsingOsxContext('sets TRACK_WIDGET_CREATION=true when trackWidgetCreation is true', () async {
......
...@@ -41,10 +41,7 @@ void main() { ...@@ -41,10 +41,7 @@ void main() {
// Config is updated if command succeeded. // Config is updated if command succeeded.
expect(generatedConfig, exists); expect(generatedConfig, exists);
expect(generatedConfig.readAsStringSync(), allOf( expect(generatedConfig.readAsStringSync(), contains('DART_OBFUSCATION=true'));
contains('DART_OBFUSCATION=true'),
isNot(contains('EXCLUDED_ARCHS')),
));
// file that only exists if app was fully built. // file that only exists if app was fully built.
final File frameworkPlist = fileSystem.file( final File frameworkPlist = fileSystem.file(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment